L1-058改变句子
#include<stdio.h> #include<string.h> int main() { char s[1000]; fgets(s,sizeof(s),stdin); int len=strlen(s); //注意,要去掉fgets读取的换行符 if(len>0&&s[len-1]=='\n') { s[len-1]='\0'; len--; } int i=0,count=0; while(i<len) { if(s[i]=='6')//判断有多个6的字符串的情况 { while(s[i]=='6'&&i<len) { count++; i++; } //注意,要先判断是不是大于九,再判断是不是大于4;否则27会变成9 if(count>=9) printf("27"); else if(count>=4) printf("9"); else//count的其他情况 { for(int j=0;j<count;j++) { printf("6"); } } } else//非‘6’的情况,就正常输出 { printf("%c",s[i]); i++; } } printf("\n"); return 0; }【题目:L1-058——改变句子】输入原句,但输出时“改变”这句话---key:从键盘输入(,存储),再用printf达到“改变”输出的效果
如:it is so 666 really 6666 what else can I say 6666666666
输出:it is so 666 really 9 what else can I say 27
[常见问题]
1、直接 读入/读取 一句话/整行输入(包含空格)——fgets(字符数组名,sizeof(字符数组名),stdin)
char s[1001]; // 读取整行输入,包含空格 fgets(s, sizeof(s), stdin); int len = strlen(s);2、不是修改原数组,是 “重新输出”,跳过原来的 6,输出新内容。
这就是字符串处理最常用的技巧:遍历 + 条件输出。
stdin→ 代表从键盘读取- 或者文件指针 → 代表从文件读
现在是从键盘输入一行字符串,所以必须写stdin。
3、为什么要用fgets,不用scanf?
scanf("%s")遇到空格就停!输入it is soscanf只能读到it,后面全丢了!fgets能读一整行!包括空格!
