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

练习7-10 查找指定字符 (15 分)本题要求编写程序,从给定字符串中查找某指定的字符。

输入格式:
输入的第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串(不超过80个字符)。
输出格式:
如果找到,在一行内按照格式“index = 下标”输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出"Not Found"。

输入样例1:

m
programming

输出样例1:

index = 7

输入样例2:

a
1234

输出样例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 查找指定字符 (15 分)_第1张图片

教训:刚开始的时候有几处低级错误:
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 )

你可能感兴趣的:(练习7-10 查找指定字符 (15 分))