练习7-10|练习7-10 查找指定字符 (15 分)

练习7-10 查找指定字符 (15 分)本题要求编写程序,从给定字符串中查找某指定的字符。
输入格式:
输入的第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串(不超过80个字符)。
输出格式:
如果找到,在一行内按照格式“index = 下标”输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出"Not Found"。
输入样例1:

m programming

输出样例1:
index = 7

输入样例2:
a 1234

【练习7-10|练习7-10 查找指定字符 (15 分)】输出样例2:
Not Found

C代码实现:
#include #define max 100 int main(void) { char x; char zfc[max]; int index,i,flag=0; scanf("%c",&x); getchar(); gets(zfc); for(i=0; zfc[i]!='\0'; i++) { if(zfc[i]==x) { flag=1; index=i; } } if(flag==1) printf("index = %d",index); else printf("Not Found"); return 0; }

结果:
练习7-10|练习7-10 查找指定字符 (15 分)
文章图片

教训:刚开始的时候有几处低级错误:
1:
定义 #define max 80,忘记字符串输入后自动在末尾补'\0',导致zfc[max]不够内存,调试崩溃。
2:
for(i=0; zfc[i]!='\0'; i++); 后面我竟然顺手打多个; 导致index不对。
3:
scanf("%c",&x); 后面不能直接跟gets(zfc); 不然gets(zfc)会把输入x后的'\n'吃掉。解决办法:
scanf("%c\n",&x); //这样不能用于字符串开头为空格的情况; gets(zfc);


scanf("%c",&x); //这样能用于字符串开头为空格的情况; getchar(); gets(zfc);

4:
比较字符:字符a==字符b,相等值为1,不相等值为0;
比较字符串:int strcmp ( char *s, char *t ),相等则返回值为0,不相等返回值为字符的差值。(字符串操作函数在头文件string.h中说明。对应的编译预处理命令为:#include )

    推荐阅读