信息学奥赛复赛复习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.xdnf.cn/news/148892.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

文心智能体搭建步骤

通过使用文心智能体平台来创建智能体的过程。这种方法可以让没有编程经验的人也能快速构建智能体&#xff0c;降低了技 术门槛。以下是一些建议和心得: 1.选择合适的平台:文心智能体平台是一个优秀的选择&#xff0c;它提供了零代码和低代码的开发环境&#xff0c;极大地降低了…

vue中高德地图使用 Marker 标点 - 标点数据快到 1000 时页面卡顿问题解决(已解决 - 多方面原因)+ 海量点功能实现解决

目录 1.业务需求2.最初实现及出现的问题3.解决 - 1000 个标点时页面就出现 卡顿 问题4.使用海量点、聚合标点后还有卡顿&#xff0c;排查其他原因5.最终解决5.1页面中list数据渲染问题解决5.2地图相关实例不要放在 vue 的可响应数据中 页面展示 1.业务需求 需要在 高德地图 中标…

【linux驱动】什么是驱动

内核简介 在谈驱动之前&#xff0c;我们需要先谈内核。 内核&#xff0c;是一个操作系统的核心。是基于硬件的第一层软件扩充&#xff0c;提供操作系统的最基本的功能&#xff0c;是操作系统工作的基础&#xff0c;决定着整个操作系统的性能和稳定性。 下面是微内核和宏内核…

oracle avg、count、max、min、sum、having、any、all、nvl的用法

组函数 having的使用 any的使用 all的使用 nvl 从执行结果来看&#xff0c;nvl(列名&#xff0c;默认值)&#xff0c;nvl的作用就是如果列名所在的这一行出现空则用默认值替换

Offer60:n个骰子的点数

题目&#xff1a;把n个骰子扔在地上&#xff0c;所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 分析:要解决这个问题&#xff0c;我们需要先统计出每个点数出现的次数&#xff0c;然后把每个点数出现的次数除以,就能求出每个点数出现的概率了。我们…

day-58 最接近的三数之和

思路 双指针&#xff1a;首先利用Arrays.sort()函数对数组进行排序&#xff0c;通过枚举中间位置的那个数&#xff0c;题目就变为了双指针 解题过程 指针边界&#xff08;right>i&&left<i&#xff09;&#xff0c;当三数之和小于等于target时&#xff0c;left,反…

电力系统中有哪些好的运维的平台?

摘要&#xff1a;介绍台商大厦&#xff0c;采用综合保护装置、多功能仪表、变压器温控仪、直流屏、烟雾传感器、门磁开关、网络摄像头等设备&#xff0c;采集配电现场的各种电参量和状态信号。系统采用现场就地组网的方式&#xff0c;组网后通过现场网关远传至阿里云平台&#…

精神分裂症、抑郁症和异常衰老的脑电信号特征:一项监督式机器学习研究

摘要 背景&#xff1a;EEG是一种非侵入性、成本效益高且稳健的工具&#xff0c;能够以高时间分辨率直接测量体内神经元的整体活动。结合先进的机器学习(ML)技术&#xff0c;EEG记录可以提供有关精神疾病的计算机模拟生物标志物。 假设&#xff1a;病理性和生理性衰老过程会影…

CMake 构建Qt程序弹出黑色控制台

CMake 构建Qt程序弹出黑色控制台

OpenBayes 一周速览|IC-Light 图片打光神器一键启动!Tecnalia 电子设备废物高光谱数据集上线,提高电子废物回收准确性

公共资源速递 This Weekly Snapshots &#xff01; 5 个数据集&#xff1a; * BTAD 工业异常数据集 * WebVid 大型短视频数据集 * bAbi 问答和文本理解的数据集 * OpenMIR 音乐收听脑电图数据集 * Tecnalia 电子设备废物高光谱数据集 2 个教程&#xff1a; * ComfyUl …

随机掉落的项目足迹:Vue3 + wangEditor5富文本编辑器——toolbar.getConfig() 查看工具栏的默认配置

问题引入 小提示&#xff1a;问题引入是一个讲故事的废话环节&#xff0c;各位小伙伴可以直接跳到第二大点&#xff1a;问题解决 我的项目不需要在富文本编辑器中引入添加代码块的功能&#xff0c;于是我寻思在工具栏上把操作代码的菜单删一删 于是我来到官网文档工具栏配置 …

vue-baidu-map的基本使用

前言 公司项目需求引入百度地图&#xff0c;由于给的时间比较短&#xff0c;所以就用了已经封装好了的vue-baidu-map 一、vue-baidu-map是什么&#xff1f; vue-baidu-map是基于vue.js封装的百度地图组件(官方文档) 二、使用步骤 1.下载插件 //我下载的版本 npm install …

CTO来分享:创业公司,如何提升MVP新产品开发速度?

创业公司的MVP新产品开发之路 对于创业公司&#xff0c;资源有限、早期项目概念模糊&#xff0c;加上人员不足&#xff08;甚至是只有创始人自己一人&#xff09;&#xff0c;如何能在短时间内、低成本、快速上线自己的MVP产品&#xff0c;验证产品和市场的匹配度&#xff0c;…

淘宝商品评论数据获取API接口响应参数列表展示(可测key)

item_review-获得淘宝商品评论 在电商领域&#xff0c;商品评论数据是商家和消费者都极为关注的重要信息。通过这些数据&#xff0c;商家可以了解产品的市场反馈&#xff0c;优化产品和服务&#xff1b;而消费者则可以参考其他用户的评价&#xff0c;做出更明智的购买决策。然…

辛普森积分公式

辛普森公式是用于数值积分的一种方法&#xff0c;其基本思想是将积分区间等分成若干小段&#xff0c;并在每一小段内用一个二次函数来近似代替被积函数&#xff0c;从而计算积分值。它是一种比较精确的数值积分方法&#xff0c;比其他常见的数值积分方法&#xff08;如梯形法和…

Nature Genetics|三代测序微量建库技术:媲美WGBS的直接甲基化检测

DNA修饰和甲基化是理解基因调控机制的关键。以往&#xff0c;我们的经验表明&#xff0c;使用三代测序从未经扩增的长DNA模板中同时读取序列信息和碱基修饰&#xff0c;需要投入大量的DNA样本来构建文库。 今天&#xff0c;小编带大家看一篇2024年发表于《Nature Genetics》的…

Web端云剪辑解决方案,素材商城提供近万种各类的特效素材

在数字内容爆炸式增长的今天&#xff0c;高质量、高效率的视频制作已成为企业传播品牌、吸引用户不可或缺的关键。美摄科技&#xff0c;作为业界领先的视频云处理与创意解决方案提供商&#xff0c;正式推出其革命性的Web端云剪辑解决方案&#xff0c;以云端之力&#xff0c;赋能…

PS教程,从零开始学PS

A01 进入PS的世界 广告设计\平面设计产品包装设计摄影后期图像美化\照片美化网页网店UI界面设计游戏美术动漫图形创意恶意创意\动态表情效果图后期调整 了解基本规律掌握操作规律开发扩展思维 A02 PS软件安装 获得PS安装程序安装PS启动PS A03 认识界面 1. PS主界面构成 …

使用 MobaXterm 远程连接 Linux 虚拟机并实现文件传输

文章目录 前言一、什么是 MobaXterm二 、MobaXterm 安装三、使用 MobaXterm 远程连接 Linux 虚拟机1. 准备工作2. 创建 SSH 连接3. 登录虚拟机 四、使用 MobaXterm 进行文件传输总结 前言 在日常开发和运维中&#xff0c;Windows 用户经常需要通过远程连接到 Linux 服务器进行…

uniapp小程序中通过uni.setClipboardData实现复制功能无效的原因和解决方案

// 复制下载链接const shareFile (filePath) > {const pdfUrl 复制内容uni.showModal({title: 下载提示,content: 请复制链接到浏览器中下载,confirmColor: #eb2444,confirmText: 复制链接,success(res) {if (res.confirm) {uni.setClipboardData({data: pdfUrl, // url地…