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

news/2024/11/16 21:43:09/文章来源:https://www.cnblogs.com/myeln/p/18427647
信息学奥赛复赛复习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);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/802347.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习高校课程-软件工程-理解需求(ch8)

REQUIREMENTS ENGINEERING 需求工程 Requirements engineering encompasses seven distinct tasks: inception, elicitation,elaboration, negotiation, specification, validation, and management Inception 启动 At project inception, you establish a basic understanding…

局域网远程命令重启电脑

只要知道远程服务器的管理员密码和IP地址,在局域网中的任意一台机器上打开“命令提示符”窗口,运行以下命令:1、获取远程服务器的管理员权限net use IP地址 "管理员密码" /user:administrator2、使用shutdown命令远程重启服务器shutdown /r /t 0 /m IP地址这样的…

Hexo-GitHub部署魔改第一步-config

Hexo-GitHub部署魔改第一步_config.yml 1. config.yml # Hexo Configuration ## Docs: https://hexo.io/docs/configuration.html ## Source: https://github.com/hexojs/hexo/# Site # 设置博客的标题 title: Your Blog Title # 子标题,可选 subtitle: xxxxx # 博客的描述,可…

git credential

远程访问github仓库时,git credential可以帮助我们避免重复输入用户密码并提高安全性。但是在本地计算机切换github用户后,如果不更新git credential,将会导致没有权限访问私有仓库或者push共有仓库。 对于 Windows 用户,打开 控制面板 -> 凭据管理器,找到与 GitHub 相…

高级语言程序设计第1次作业

班级链接:https://edu.cnblogs.com/campus/fzu 作业要求链接:https://edu.cnblogs.com/campus/fzu/2024C/homework/13264 学号:102400126 姓名:苏钦晨2.1 这个在课堂上完成任务后,理解了各个位置的含义,并举一反三,尝试去删去一些字符,仍可以继续运行,但不知道这些字符…

java如何调用外部程序

java如何调用外部程序 2017-03-15 20:50 179人阅读 评论(0) 收藏 举报 分类:Java应用(26) 版权声明:本文为博主原创文章,未经博主允许不得转载。引言;有时候有些项目需求,直接使用Java编写比较麻烦,所有我们可能使用其他语言编写的程序来实现。那么我们如何在java中调…

高级程序语言设计课程第一次个人作业

这个作业属于的课程:https://edu.cnblogs.com/campus/fzu/2024C 作业要求:https://edu.cnblogs.com/campus/fzu/2024C 学号:102400213 姓名:范自亮 安装过程及成功画面:作业内容: 2.12.22.3问题:输出的语句连在一起未分行 解决方案:询问老师后自行修改 总结与思考:理论…

Javascript调试命令——你只会Console.log() ?

Javascript调试命令——你只会Console.log() ? https://segmentfault.com/a/1190000012957199 Console 对象提供对浏览器控制台的接入(如:Firefox 的 Web Console)。不同浏览器上它的工作方式是不一样的,但这里会介绍一些大都会提供的接口特性。Console对象可以在任何全局…

敏捷研发管理必备:五款必备敏捷项目管理工具

Leangoo是一款专注于敏捷管理的软件,看板的管理方式,简洁高效。他聚焦于敏捷管理,它支持Scrum敏捷开发、Scrum of Scrums以及大规模敏捷管理等方法,比如Scrum看板、燃尽图、迭代管理、需求管理、敏捷度量指标、路线图、缺陷管理、测试管理等等,帮助团队轻松跟踪进度,提高…

高级语言程序设计第一次个人作业

班级链接:https://edu.cnblogs.com/campus/fzu 作业要求链接:https://edu.cnblogs.com/campus/fzu/2024C/homework/13264 学号:102400130 姓名:杨子旭 安装c程序有时候会忘记冒号,逐渐适应后就不怎么会忘了这两个一次过。但对于第三个中先使用butler再定义不太理解。之前一…

ES毛刺问题

es 毛刺问题 在写入时,边写边查并不会出现明显毛刺,但在写入时不查询,写入完成后再查询会出现明显毛刺。下图的三个毛刺是在是用反转索引时,写入完成后切换索引时出现。通过 remove 和 add 别名可以无感切换索引 /_aliases {"actions": [{"add": {&quo…