帮我看一下这道C语言题为什么不对 谢谢!!!急!!

输入一个字符,再输入一个以回车结束的字符串(少于80个字符),在字符串中查找该字符。如果找到,则输出该字符在字符串中所对应的最大下标(下标从0开始);否则输... 输入一个字符,再输入一个以回车结束的字符串(少于80 个字符),在字符串中查找该字符。如果找到,则输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出“NotFound”。
【输入形式】
输入一个字符和一个以回车结束的字符串
【输入输出样例1】(下划线部分表示输入)
Input a character: m
Input a string: programming
index=7
【输入输出样例2】(下划线部分表示输入)
Input a character: a
Input a string: 1234
Not Found
-----------------------------------------------------------------------

我的程序

#include<stdio.h>
int main(void)
{
int i=0,k=0,flag=0;
double index;
char str[80],m;
printf("Input a character: ");
scanf("%c",&m);
printf("Input a string: ");
getchar();
while((str[i]=getchar())!='\n')
i++;
str[i]='\0';
for(i=0;str[i]!='\0';i++){
if(str[i]==m) k=i;
flag=1;}
if(flag==1) printf("index=%d\n",k);
else
printf("Not Found\n");
return 0;
}

为什么 不能输出NOT FOUND 啊 就是测试的第二个数据不对 谢谢!!
展开
 我来答
匿名用户
2015-05-16
展开全部
if(str[i]==m) k=i;
flag=1;} 这里有问题 判断结果不管是什么flag都会被赋值为1
更多追问追答
追问
那可以问一下怎么修改吗??
追答
加上括号嘛
if(str[i]==m) {k=i;
flag=1;}}
匿名用户
2015-05-16
展开全部
f(str[i]==m) k=i;
flag=1;
应该改成
if(str[i]==m)
{
k=i;;
flag=1;
break;
}
更多追问追答
追问
那第一个又不对啦  变成了6
追答
这是因为getchar();
while((str[i]=getchar())!='\n')
这里的问题。你第一个输入的字符没有被包含在数组里。
可改为gets(str);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式