首页 > 其他分享 >信息学奥赛复赛复习01-CSP-J2019-01-字符、字符数组、字符串、string、字符串读取

信息学奥赛复赛复习01-CSP-J2019-01-字符、字符数组、字符串、string、字符串读取

时间:2024-09-23 18:45:20浏览次数:8  
标签:字符 01 string int char 数组 字符串

信息学奥赛复赛复习01-CSP-J2019-01-字符、字符数组、字符串、string、字符串读取
PDF文档公众号回复关键字:20240923

1 2019 CSP-J 题目1 数字游戏

[题目描述]

小 K 同学向小 P 同学发送了一个长度为 8 的 01 字符串来玩数字游戏,小 P 同学想要知道字符串中究竟有多少个 1。

注意:01 字符串为每一个字符是 0 或者 1 的字符串,如 101 为一个长度为 3 的 01 字符串。

[输入格式]

输入文件只有一行,一个长度为 8 的 01 字符串 s

[输出格式]

输出文件只有一行,包含一个整数,即 01 字符串中字符 1的个数

[输入输出样例]

输入 #1

00010100

输出 #1

2

输入 #2

11111111

输出 #2

8

说明/提示

样例 1 说明

该 01 字符串中有 2 个字符 1

样例 2 说明

该 01 字符串中有 8 个字符 1

数据规模与约定

对于 20% 的数据,保证输入的字符全部为 0

对于 100%的数据,输入只可能包含字符 0 和字符 1,字符串长度固定为 8

2 相关知识点

1) 字符

C语言有字符类型,也就是char类型,char类型的数据占内存大小为1字节。

C语言中不存在字符串类型,可以使用字符数组表示

字符是一种图形符号,不同国家不同地区都有自己特殊的字符,于是就衍生了“字符集合”这个名词。其中ASCII (American Standard Code for Information Interchange: 美国信息交换标准代码)是国际通用的标准字符集

例如

char a='0';
char b='P';
char c='@';
char c='65';//ascii 码 对应大写字母A

2) 字符数组

用来存放字符的数组称为字符数组

例如

//定义一个,总长度为5,有效长度为5的字符数组
char c1[5]={'h','e','l','l','o'};

//定义一个,总长度为10,有效长度为5的字符数组
char c2[10]={'h','e','l','l','o'};

//定义一个总长度为5,有效长度为5的字符数组
char c3[]={'h','e','l','l','o'};

字符数组输出的字符

#include <bits/stdc++.h>
using namespace std;
int main(){
	//int 数组直接输出是地址
	int a[5]={1,2,3,4,5};
	cout<<a<<endl;
	// 字符数组输出 不是地址 直接输出字符
	char c[5]={'1','2','3','4','5'};
	cout<<c;
	return  0;
}
/*
输出
0x71fe00
12345 
*/

3) 字符串

是由“ ”包括起来的字符序列字符串的结束标志是‘\0’,用双引号括起来的一串字符就是字符串常量,它的末尾将由系统自动添加一个字符串结束标志‘\0’

在c语言中不能定义字符串,但是在c语言中使用字符串,通常会用字符数组来模拟字符串,必须是’\0'结尾的字符数组。如果字符数组中没有‘\0'结尾,那该字符数组就是普通的字符数组,不是字符串

例如

字符串赋值

//定义一个,总长度为10,有效长度为5的字符串 \0为结束符号
char c1[10]={'h','e','l','l','o','\0'};

//定义一个总长度为10,有效长度为4的字符串 \0 有效长度只包括\0 前面的
char c2[10]={'h','e','l','l','\0','o'};

//定义一个总长度为10,有效长度为9的字符串
char c3[10]="hello 123";

4) C++字符串 string

在 C++ 中,std::string 是一个表示字符串的类,它提供了许多方便的操作来处理字符串。std::string 是 C++ 标准库的一部分,因此你需要在代码中包含 <string> 头文件来使用它

//定义
string s;
//定义时赋值
string s1="abcd";
string s2("abcdef");  // s2 = "abcd"
string s3(4, 'a');  // s3 = "aaaa"
string s4("abcdef", 1, 3);  //s4 = "bcd",即 "abcdef" 的从下标 1 开始,长度为 3 的子串 

5) 字符串读取

cin 读取

cin 是 C++ 标准库中的一个输入流对象,它用于从标准输入设备(通常是键盘)读取数据

可以自动识别和处理不同类型的数据,如整数、浮点数、字符和字符串等

读取整数

#include <iostream>
using namespace std;

int main() {
    int age;
    cout << "请输入您的年龄: ";
    cin >> age;
    cout << "您的年龄是: " << age << endl;
    return 0;
}
/*
请输入您的年龄: 19
您的年龄是: 19
*/

读取字符串

#include <iostream>
#include <string>
using namespace std;

int main() {
    string name;
    cout << "请输入您的名字: ";
    cin >> name;
    cout << "您的名字是: " << name << endl;
    return 0;
}
/*
请输入您的名字: newcode
您的名字是: newcode
*/

getline函数

getline() 是 C++ 标准库中的一个函数,用于从输入流中读取一行文本

使用语法

std::istream& getline(std::istream& is, std::string& str, char delim);
参数说明:
is:输入流对象,通常使用 std::cin
str:用于存储读取到的字符串的 std::string 对象
delim:分隔符,默认为换行符 \n

#include <iostream>
#include <string>
using namespace std;

int main() {
    string line;
    cout << "请输入一行文本: ";
    getline(cin, line);
    cout << "您输入的文本是: " << line << endl;
    return 0;
}
/*
请输入一行文本: newcode
您输入的文本是: newcode
*/

3 思路分析

思路1

定义1个字符,逐一接收8次字符

每次接收到字符后,判断是否为1,如果为1累加到变量cnt

#include<bits/stdc++.h>
using namespace std;
int cnt;
char c;
int main(){
	for(int i=0;i<8;i++){
		cin>>c;
		if(c=='1'){
			cnt++;
		}
	}
	cout<<cnt;
	return 0;
}

思路2

定义1个字符数组,读取8个字符到c字符数组

循环字符数组每个元素,判断是否为1,如果为1累加到变量cnt

#include<bits/stdc++.h>
using namespace std;
int cnt;
char c[8];
int main(){
	cin>>c;
	for(int i=0;i<8;i++){
		if(c[i]=='1'){
			cnt++;
		}
	}
	cout<<cnt;
	return 0;
}

思路3

定义1个字符串s1,读取8个字符到字符串s1中

循环字符数组每个元素,判断是否为1,如果为1累加到变量cnt

#include<bits/stdc++.h>
using namespace std;
string s1;
int cnt;
int main(){
	getline(cin,s1);
	for(int i=0;i<8;i++){
		if(s1[i]=='1'){
			cnt++;
		}
	}
	cout<<cnt;
	return 0;
}

思路4

由于只有0和1这2个数字
10除以9余数为1
10/9=1......1
如果后面继续是0,此时余数不变
100=11.......1
如果后面是1,此时余数加1
101=11.......2
根据这个规则,可以读取整数后和9取余数
此方法只能计算最多8位

#include<cstdio>
int main(){
  int n;
  scanf("%d",&n);
  printf("%d",n%9);
}

标签:字符,01,string,int,char,数组,字符串
From: https://www.cnblogs.com/myeln/p/18427647

相关文章

  • 3. 无重复字符的最长子串 Golang实现
    题目描述给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。注意区分子串和子序列。示例3:输入:s="pwwkew"输出:3解释:因为无重复字符的最长子串是"wke",所以其长度为3。请注意,你的答案必须是子串的长度,"pwke"是一个子序列,不是子串。思路分析:1.......
  • CF2001D Color Rows and Columns
    题目链接题解知识点:贪心,STL。显然,子序列最长长度是数的种类数,即保证每个数都会被选到。子序列的奇数位要尽可能大、偶数位尽可能小。我们从左到右依次选择子序列的数,为了保证每个数都能被选到,我们预处理出每个数的最晚出现位置\(lst\)。每次选择,只有在当前还未选择的数的\(......
  • ISO 9001认证:企业腾飞的品质基石
    ISO9001是由国际标准化组织(ISO)制定的质量管理体系标准,旨在为企业提供一套全面的质量管理框架。它不仅帮助企业提升产品和服务的质量,还通过精细化的管理方法,推动企业整体运作更加规范和高效。与其说ISO9001是一个简单的认证,不如说它是一种全球公认的管理哲学,帮助企业在市场竞争中......
  • 《ISO 9001 质量管理体系认证:提升企业核心竞争力的关键》
    《ISO9001质量管理体系认证:提升企业核心竞争力的关键》在当今全球化的商业环境中,企业面临着日益激烈的竞争和不断提高的客户期望。为了在市场中立足并取得持续发展,企业需要不断提升自身的管理水平和产品服务质量。而ISO9001质量管理体系认证正是实现这一目标的重要途......
  • 框架漏洞(5-rce s2-057 CVE-2017-8046 CVE-2018-1273 Shiro-550)
    5-rce步骤一:环境部署cdvulhub/thinkphp/5-rcedocker-composeup-d步骤二:输入系统命令: whoami/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami步骤三:写入webshell到1.php/index.php?s=index/think\ap......
  • 牛客小白月赛101
    A-tb的区间问题枚举区间,然后用前缀和求解#include<bits/stdc++.h>usingnamespacestd;usingi32=int32_t;usingi64=longlong;usingvi=vector<int>;usingpii=pair<int,int>;i32main(){ ios::sync_with_stdio(false),cin.tie(nullptr); in......
  • 2000-2012年各地级市市长特征信息数据/市长特征信息大全数据
    2000-2012年各地级市市长特征信息数据1、时间:2000-2012年2、来源:百度搜索手工整理3、指标:省级政区代码、省级政区名称、地市级政区代码、地市级政区名称、年份、市长姓名、出生年份、出生月份、籍贯省份代码、籍贯省份名称、籍贯地市代码、籍贯地市名称、性别、民族、教育、......
  • 打卡信奥刷题(784)用Scratch图形化工具信P6488[普及组/提高组] [COCI2010-2011#6] OKUPL
    [COCI2010-2011#6]OKUPLJANJE题目描述一场巨大的派对结束以后,有五家报纸刊登了参加这场派对的人数,然而这些报纸上的数字可能是错误的。现在你知道整个会场的面积是LL......
  • FINM 3008/6016 Portfolio Construction
    ANUResearchSchoolofFinance,ActuarialStudiesandStatisticsFINM3008/6016PortfolioConstructionAssignmentGeneralInstructionsandInformationTheassignmentinvolvesproducingareportthatoffersportfolioconstructionadviceoraclientbas......
  • 01 [51单片机 PROTEUS仿真设计]基于温度传感器的恒温控制系统
    目录一、主要功能二、硬件资源三、程序编程四、实现现象一、主要功能基于51单片机,具有晶振电路、复位电路、DS18B20温度传感器、LED灯和蜂鸣器灯光报警模块、LCD1602显示模块、L298N驱动电机散热模块和按键模块。主要功能:系统开始运行,显示屏显示最大温度阈值和最小......