输入一行数,统计其中共有多少个字符,用一个整数表示字符数(不包括空格和换行符)
总长度减去空格和换行的字符数
空格容易忘记减去
1.先用for循环统计该标题的总长度;
2.如果有空格和换行,,则需要除去其占用的字符;
3.最后用自增的方式求出字符的数量。
- #include
- #include
- using namespace std;
- int main()
- {
- string s;//生成一个字符串s
- int sum=0;
- getline(cin,s);//读取字符串
- for(int i=0;i
length();i++)//用循环表示s的长度 - {
- if(s[i]!=' '&&s[i]!='\n')//排除空格和换行
- {
- sum++;//累加
- }
- }
- cout<
- return 0;
- }
总结
注意题中括号中的内容。
B - 数字统计
题意
统计给定范围[L, R]中,数字2出现的次数
思路
分个位,十位,百位...,当等于2时累加
坑点
1.要给i赋值,防止被修改
算法
1.定义三个变量L,R,sum
2.给sum赋值0
3.%10抹除个位
4.当i等于2时,sum累加
5.输出sum
实现步骤
1.先用for循环,再用while循环
2.用%10分离每一位,看看是否是2
3.等于2时累加
代码
- #include
- #include
- using namespace std;
- int main( )
- {
- int L,R,sum=0;
- cin>>L>>R;
- int c=L;
- int a[10005];
- for(int i=L;i<=R;i++)
- {
- a[i]=i;
- int c=i;//防止i被修改
- while(c!=0)
- {
- if(c%10==2)//c取余等于2时,累加
- {
- sum++;
- }
- c/=10;//相当于c=c/10,抹除个位
- }
- }
- cout<
//输出2的个数 - return 0;
- }
总结
关于for循环while循环的使用,用到取余和复合赋值运算符.
C - 字符串分类
题意
统计n个字符串中有几种本质上不同的字符串
思路
用for循环输入,判断两个字符串是否一样
坑点
ab!=ba
实现步骤
1.输出n个字符串;
2.用两层for循环进行字符串之间的比较,判断其是否一样;
3.字符串一样用break阻止;
4.如果字符串不一样,则进行累加。
代码
- #include
- #include
- #include
-
- using namespace std;
- int main()
- {
- int n,k=1;
- cin>>n;
- string s[n];
- for(int i=0;i
- {
- cin>>s[i];//输入一组字符串s[i]
- }
- for(int i=0;i
-1;i++) - {
- int f=1;
- for(int j=i+1;j
- {
- if(s[i]==s[j])
- {
- f=0;
- break;//字符串相同,则停止输出
- }
- }
- if(f==1)
- {
- k++;//字符串不同进行累加
- }
- }
- cout<
- return 0;
- }
总结
先用双重循环打印出字符串,再对字符串中的 字符进行比较判断。
D - 李在赣神魔
题意
输入一个n×n的字符矩阵,将其顺时针旋转90度后输出。
思路
1.用二维数组输入一个n×n的字符矩阵
2.按顺时针旋转九十度之后呈现一个倒序
坑点
1.顺时针旋转九十度
算法
1.定义一个变量n,
2.定义一个字符型的二维数组
3.改变for循环内容输出答案
实现步骤
1.先输入一个二维数组
2.用for循环
代码
- #include
- using namespace std;
- int main( )
- {
- int n,i,j;
- cin>>n;
- char a[1005][1005];
- for(i=1;i<=n;i++)//用二维数组输入一个n×n的字符矩阵
- {
- for(j=1;j<=n;j++)
- {
- cin>>a[i][j];
- }
- }
- for(i=1;i<=n;i++)
- {
- for(j=n;j>=1;j--)//顺时针旋转之后呈现一个倒序
- {
- cout<//旋转之前的i和旋转之后的j相等
- }
- cout<
- }
-
- return 0;
- }
总结
考察二维数组的运用 注意打草稿
E - 火车上的2连座
题意
A,B两人选择两个二连坐坐下
思路
1.A,B两人一起坐火车,从第一排开始,依次向后判断,如果有两个连座就坐下;
2.如果过道两边都可以座,优先选择左边;
3.有输出YES,没有输出NO。
坑点
必须是过道一侧的两个连座
实现步骤
1.用while输出n排座;
2.用两层for循环对每个座位是否空着进行判断;
代码
- #include
- #include
- #include
- using namespace std;
- int main()
- {
- int n;
- while(cin>>n)
- {
- string a[10000];//输出一组数
- int flag=0;
- for(int i=0;i
- {
- cin>>a[i];
- }
- for(int i=0;i
- {
- if(a[i][0]=='O'&&a[i][1]=='O')
- {
- a[i][0]='+';
- a[i][1]='+';
- flag=1;
- break;
- }
- else if(a[i][3]=='O'&&a[i][4]=='O')
- {
- a[i][3]='+';
- a[i][4]='+';
- flag=1;
- break;//从第一个座位开始判断两个连续的座位是否可以座,如果有座就停止循环
- }
- }
- if(flag=1)
- {
- cout<<"YES"<
- for(int i=0;i
- {
- }//如果有座,输出“YES”
- }
- else
- {
- cout<<"NO"<
- }//否则输出“NO”
- }
- return 0;
- }
总结
将每两个座位作为一组进行判断进行一一判断
F - 字符串操作
题意
给定长度为n的字符串s,进行m次操作,每次将[l,r]范围内所有c1字符改成c2
思路
1.双重for循环
2.在l到r的范围内将c1更改为c2
坑点
1.r一定小于n
算法
1.定义两个变量n,m
2.定义一个字符串a
3.用for循环找到需要更改的位置
4.输出更改完成后的答案
实现步骤
1.用双重for循环
2.在l到r的范围内将c1更改为c2
代码
- #include
- using namespace std;
- int main( )
- {
- int n,m;
- string a;
- cin>>n>>m;//输入长度n,操作次数m
- cin>>a;
- for(int i=0;i
- {
- int l,r;//区间
- cin>>l>>r;
- char c1,c2; //将c1更改为c2
- cin>>c1>>c2;
-
-
相关阅读:
OpenAI 官方: 如何构建 Prompt 最佳策略
MATLAB2016笔记(十):曲线拟合、参数估计
exe4j打包jar包生成exe文件BUG日记
如何图片批量重命名编号不要汉字?
项目在linux上的简单部署
数据结构实验六 栈和队列的基本操作及应用
MYSQL数据库之用户管理
ChatGPT私有数据结合有什么效果?它难吗?
安全运营中心即服务提供商评估
linux下C语言如何操作文件(二)
-
原文地址:https://blog.csdn.net/m0_63353853/article/details/128160583