#include<stdio.h>#include<string.h>intmain(){char s[205], a, b;fgets(s,205,stdin);// 读入带空格的字符串,最多可以读入204个字符scanf("%c %c",&a,&b);// 输入a和bint len =strlen(s);for(int i =0; i < len;++i){if(s[i]== a)
s[i]= b;}printf("%s", s);// 输出字符串return0;}
2047:【例5.16】过滤空格
#include<stdio.h>#include<string.h>intmain(){char s_in[205], s_out[205];fgets(s_in,205,stdin);// 读入带空格的字符串,最多可以读入204个字符int len =strlen(s_in), bn =0, si =0;// len:输入字符串的长度,bn:空格数量计数,si:输出字符串的索引for(int i =0; i <= len;++i)// 遍历到字符串结束标志'\0'位置{if(s_in[i]==' '){
bn++;// 空格数量计数加1if(bn ==1)
s_out[si++]= s_in[i];// 将第一个空格填充到输出字符串中}else{
s_out[si++]= s_in[i];// 将非空格字符填充到输出字符串中
bn =0;// 重置空格数量计数}}printf("%s", s_out);// 输出字符串return0;}
2048:【例5.18】串排序
#include<stdio.h>#include<string.h>voidswap(char*a,char*b){char temp[25];strcpy(temp, a);strcpy(a, b);strcpy(b, temp);}intmain(){char s[25][25];int n;scanf("%d",&n);// 输入nfor(int i =0; i < n;++i){scanf("%s", s[i]);// 输入字符串}for(int i =0; i < n -1;++i){// 选择排序int m = i;// 找从i+1~n最小值下标for(int j = i +1; j < n;++j){if(strcmp(s[j], s[m])<0){
m = j;}}swap(s[m], s[i]);// 交换最小值与当前值}for(int i =0; i < n;++i){printf("%s\n", s[i]);// 输出排序后的字符串}return0;}
#include<stdio.h>#include<string.h>#include<ctype.h>intmain(){char s[260];fgets(s,sizeof(s),stdin);// 使用fgets函数读取输入字符串,可以读取空格和换行符int sum =0, len =strlen(s);for(int i =0; i < len;++i){if(isdigit(s[i]))// 使用isdigit函数判断字符是否为数字
sum++;}printf("%d", sum);return0;}
1130:找第一个只出现一次的字符
#include<stdio.h>#include<string.h>intmain(){int a[128]={};// 数组a[字母]表示该字母出现的次数,初始化为0char s[100005];scanf("%s", s);int len =strlen(s);for(int i =0; i < len;++i)
a[s[i]]++;// 统计每个字符出现的次数for(int i =0; i < len;++i)// 遍历字符串,找到第一个只出现一次的字符{if(a[s[i]]==1){printf("%c", s[i]);return0;}}printf("no");// 没找到return0;}
1131:基因相关性
#include<stdio.h>#include<string.h>intmain(){double y;// 阈值char s1[505], s2[505];// 输入的两个字符串scanf("%lf%s%s",&y, s1, s2);// 读取阈值和两个字符串int len =strlen(s1);// 字符串长度int ct =0;// 计数// 遍历字符串,比较每个位置上的字符是否相等for(int i =0; i < len;++i){if(s1[i]== s2[i])
ct++;// 相等则计数加1}// 计算相等字符的比例并与阈值比较if((double)ct / len >= y)printf("yes");elseprintf("no");return0;}
1132:石头剪子布
#include<stdio.h>#include<string.h>intmain(){char s1[10], s2[10];int n;scanf("%d",&n);for(int i =0; i < n;++i){scanf("%s %s", s1, s2);if(strcmp(s1, s2)==0)printf("Tie\n");else{if(strcmp(s1,"Rock")==0){if(strcmp(s2,"Scissors")==0)printf("Player1\n");elseprintf("Player2\n");}if(strcmp(s1,"Scissors")==0){if(strcmp(s2,"Paper")==0)printf("Player1\n");elseprintf("Player2\n");}if(strcmp(s1,"Paper")==0){if(strcmp(s2,"Rock")==0)printf("Player1\n");elseprintf("Player2\n");}}}return0;}
1133:输出亲朋字符串
#include<stdio.h>#include<string.h>intmain(){char s1[105], s2[105];fgets(s1,105,stdin);// 从标准输入读取一行字符串,存储在s1中int len =strlen(s1);// 计算字符串s1的长度for(int i =0; i < len;++i)
s2[i]= s1[i]+ s1[(i +1)% len];// 将s1中每个字符与下一个字符相加,存储在s2中
s2[len]='\0';// 在s2的末尾添加\0,构成字符串printf("%s", s2);// 输出s2return0;}
1134:合法C标识符查
#include<stdio.h>#include<string.h>intmain(){char s[25];scanf("%s", s);// 从标准输入读取字符串,存储在s中if(s[0]>='0'&& s[0]<='9')// 如果第一个字符是数字{printf("no");return0;}int len =strlen(s);// 计算字符串s的长度for(int i =0; i < len;++i){// 如果出现不满足要求的字符if(!(s[i]>='0'&& s[i]<='9'||
s[i]>='a'&& s[i]<='z'||
s[i]>='A'&& s[i]<='Z'||
s[i]=='_')){printf("no");return0;}}printf("yes");return0;}