提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
一、最简单的回文字符串
如果一个字符串逆序后与正序相同,那么称这个字符串为回文字符串。例如abcba是回文字符串,abcca不是回文字符串。
给定一个字符串,判断它是否是回文字符串。
#include<iostream>//有输入输出的时候添加
#include<cstring>
using namespace std;
bool shuru(string str){
for (int i=0;i<str.length()/2;i++){
if(str[i]!=str[str.length()-i-1]){
return false;//c++可以直接用longth函数因为调用了string函数
}
}return true;
}
int main(){
string str;
cin>>str;
cout<<(shuru(str)?"YES":"NO");
return 0;
}
二、单词倒叙
给定一堆用空格隔开的英文单词,输出这些英文单词的倒序(单词内部保持原序)。
代码如下(示例):
#include<cstdio>
const int MAXN=100;
const int maxl=100;
char str[MAXN][maxl],num=0;//其中 MAXN 表示数组的行数,即可以存储的字符串数量上限;而 maxl 表示每个字符串的最大长度
int main(){
while(scanf("%s",str[num])!=EOF){
num++;
}
for(int i=num-1;i>=0;i--){
printf("%s",str[i]);
if(i>0){
printf(" ");
}
}
return 0;
}
三,单词倒叙二
给定一堆用空格隔开的英文单词,将每个单词内部逆序后输出(单词顺序不变)。
#include<cstdio>
const int maxn=100;
char str[maxn],num=0;
int main(){
while(scanf("%s",str)!=EOF){
num++;
}
printf("%d",num);
return 0;
}
四,单词数
给定一堆用空格隔开的英文单词,统计单词个数
输出一个整数,表示单词的个数。
代码如下(示例):
#include<cstdio>
const int maxn=100;
char str[maxn],num=0;
int main(){
while(scanf("%s",str)!=EOF){
num++;
}
printf("%d",num);
return 0;
}
五,首字母大写
输入
good good study
输出
Good Good Study
#include<cstdio>
#include<cstring>
const int maxn=1000;
const int maxl=11;
char str[maxn][maxl];
int num=0;
int main (){
while(scanf("%s",str[num])!=EOF){
num++;
}for(int i=0;i<num;i++){
int len=strlen (str[i]);
printf("%c",str[i][0]+('A'-'a'));//在 C 语言中,%c格式对应的是单个字符,%s格式对应的是字符串。
for(int j=1;j<len;j++){
printf("%c",str[i][j]);
}
if(i<num-1){//按顺序循环完了,再接着才轮到if语句,if语句用来判断是不是最后一个单词,不是的话输出空格,其中减一是因为i是从0开始的
printf(" ") ;}
}
return 0;
}
六、公共前缀
输出
个字符串的公共前缀。如果没有公共前缀,那么输出空行。
输入
3
actrpg
actfps
actarpg
输出
act
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN = 20; // 定义最大字符串数量
const int MAXL = 51; // 定义单个字符串的最大长度
char str[MAXN][MAXL]; // 定义字符串数组
/**
* 主函数
* @return 程序返回值,一般为 0 表示正常结束
*/
int main() {
int n, minL = MAXL; // 定义字符串数量 n 以及最短字符串长度初始值为 MAXL
cin >> n; // 输入字符串数量
getchar();// 清除输入缓冲区中的换行符
for (int i = 0; i < n; i++) { //循环读取 n 个字符串
cin.getline(str[i], MAXL); // 读取每个字符串并存入数组,完整的内容(接收字符串的变量, 接收字符个数, 结束字符)
minL = min(minL, (int)strlen(str[i])); // 更新最短字符串长度
}
/**
* 比较每个字符串相同位置的字符
*/
for (int j = 0; j < minL; j++) {
bool isSame = true; // 初始化标志,表示当前位置字符是否相同
/**
* 从第二个字符串开始与第一个字符串比较当前位置字符
*/
for (int i = 1; i < n; i++) {
if (str[i][j]!= str[0][j]) { // 如果有不同
isSame = false; // 修改标志
break; // 结束内层循环
}
}
if (isSame) { // 如果标志为真,即所有字符串当前位置字符相同
printf("%c", str[0][j]); // 输出该字符
} else { // 否则
break; // 结束外层循环
}
}
printf("\n"); // 输出换行符
return 0; // 程序正常结束,返回 0
}
六、连续相同字符统计
给定一个字符串,统计其中连续出现的相同字符个数。
输入描述
一个非空字符串(长度不超过100,仅由小写字母组成)。
输出描述
按从左到右字符出现的顺序,输出每个字符连续出现的个数。
其中每个字符输出一行,每行以空格为分隔,输出该字符与出现的个数。
输入
abbbcc
输出
a 1
b 3
c 2
#include <cstdio>
#include <cstring>
const int MAXL = 101; // 定义字符串最大长度限制
char str[MAXL]; // 用于存储输入的字符串
int main(){
scanf("%s",str); // 从标准输入读取字符串
int idx=0, len=strlen(str); // 初始化索引为 0,获取字符串长度
while (idx < len) { // 只要索引未超出字符串长度,执行以下操作
printf("%c ", str[idx++]); // 输出当前字符,并将索引向前移动一位
// 统计当前字符连续出现的次数
int cnt = 1; // 初始化为 1,因为当前字符已算一次
while (idx < len && str[idx] == str[idx - 1]) { // 当索引未越界且当前字符与前一个相同
cnt++; // 出现次数加 1
idx++; // 索引向前移动
}
printf("%d\n", cnt); // 输出当前字符连续出现的次数
}
return 0;
}
//这个内层循环的条件是 idx 仍然小于字符串长度,并且当前字符 str[idx] 与前一个字符 str[idx - 1] 相同。只有同时满足这两个条件,内层循环才会继续执行,从而使 cnt 增加,idx 也继续增加。
//也就是说,只有当连续出现相同字符时,才会进入内层循环并可能再次输出相同的字符及其出现次数。而一旦遇到不相同的字符,内层循环条件不满足,就不会再输出相同的字符了,而是会继续外层循环,处理下一个字符。
//例如,对于字符串 “aabcccd”,首先输出 ‘a’,然后 idx 加 1。此时下一个字符也是 ‘a’,满足内层循环条件,所以会再次输出 ‘a’,并继续增加 cnt 和 idx。但当遇到 ‘b’ 时,内层循环条件不再满足,就不会再输出 ‘a’ 了,而是输出 ‘b’ 及其连续出现的次数 1,以此类推。这样就能准确地统计并输出每个连续相同字符的情况,而不会出现无限制地连续输出相同字母的现象。
七,C语言合法变量名
一个合法的C语言变量名需要满足:
所有字符必须由且仅由字母(A-Z,a-z)、数字(0-9)、下划线(_)组成;
首字符不能是数字,可以是字母或下划线;
不能是C语言关键字,如if、while等。
给定一个非C语言关键字的字符串,判断其是否可以作为合法的C语言变量名。
const int maxl=21;
char str[maxl];
int main(){
scanf("%s",str);
bool result=true;
int len=strlen(str);
if(!((str[0]>='A'&&str[0]<='Z')||(str[0]>='a'&&str[0]<'z')||str[0]=='_')){
result=false;
}
for(int i=1; i< len;i++){
if(!((str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<'z')||(str[i]>='0'&&str[i]<'9')||str[i]=='_')){
result=false;
break;
}
}
printf(result?"YES":"NO");
return 0;
}
标签:输出,字符,处理,int,num,str,字符串
From: https://blog.csdn.net/byc123123w/article/details/140085230