永发信息网

c语言问题,求救~

答案:4  悬赏:80  手机版
解决时间 2021-01-28 16:57
  • 提问者网友:感性作祟
  • 2021-01-28 07:31
【问题描述】输入一个字符,再输入一个以回车结束的字符串(少于80个字符),在字符串中查找该字符。如果找到,则输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出Not Found
【样例输入】m
programming
【样例输出】index=7
【样例说明】(另一种情况例如输入 a 1234,输出Not Found)
我的程序:
#include
int main(void)
{
int i,k;
char str[80];
char ch;
//printf("input:");
getchar();
ch=getchar();
getchar();
i=0;
while((str[i]=getchar())!='\n')
i++;
str[i]='\n';
for(i=0;str[i]!='\n';i++)
if(str[i]==ch){
k=i;
printf("index=%d",k);}
else{
printf("Not Found");}
return 0;
}

没法输出正确结果。
最佳答案
  • 五星知识达人网友:逐風
  • 2021-01-28 08:19
#include
int main()
{
int i=0,j=0,k,flag=0;
char str[80];
char ch;
//printf("input:");

ch=getchar();
getchar();

while((str[i]=getchar())!='\n')
i++;
//str[i]='\n';
for(j=0;j<=i;j++)
{
if(str[j]==ch)
{
flag=1;
k=j+1;
printf("index=%d",k);
break;
}
}
if(flag=0)
{
printf("Not Found");
}

return 0;
}

你的错误在于,for循环后面如果不加{ },默认值循环一行,所以只循环if(),,,else没有配对。
全部回答
  • 1楼网友:一叶十三刺
  • 2021-01-28 10:44
#include int main(void) { int i,k; char str[80]; char ch; //printf("input:"); //getchar();//如果不把这个注释掉,那下面的ch读取的就是个空格 ch=getchar(); getchar();//读取输入的要查找的字符后的空格 i=0; while((str[i]=getchar())!='\n') i++; str[i]='\n'; k=-1;//k等于一个小于0的,因为也许第一个字符就是要找的下标 for(i=0;str[i]!='\n';i++) if(str[i]==ch){ k=i; }//不是每次找到都输出,只是输出最后一个既标号最大的 if(k>=0)//只有k>=0时才查找到,最后输出找到的标号或者没查到 printf("index=%d",k); else printf("Not Found"); getchar();//这个是为了不让程序查询完后直接退出 return 0; }
  • 2楼网友:不想翻身的咸鱼
  • 2021-01-28 09:58
#include int main(void) { int i,k=0; //给k赋初值0用于判断 char str[80]; char ch; //printf("input:"); scanf("%c",&ch); scanf("%s",str); for(i=0;str[i]!='\0';i++) if(str[i]==ch){ k=i; } //这样改的目的是等它循环完。 if (k!=0) printf("index=%d",k); else printf("Not Found"); return 0; }
  • 3楼网友:爱难随人意
  • 2021-01-28 09:33
源程序如下: #include <stdio.h> int main() { int i,c,time=0; int a[10]={2,5,21,58,2,56,98,22,14,36}; int b[11],j=0,k,t; printf("请输入数字c: "); scanf("%d",&c); for (i=0;i<10;i++) {     if (a[i]==c)   {    time=time+1;    printf("%d第%d次出现,数组下标是%d\n",c,time,i);    if (a[i]!=c&&i==9)    printf("%d不在数组中!\n",c);   }      b[j++]=a[i]; } b[j++]=c;   for(i=0;i<j;i++)   {     for (k=i;k<j;k++)  {     if (b[i]>b[k])    {     t=b[i];     b[i]=b[k];     b[k]=t;    }  }   } printf("排序后的数为:\n"); for (i=0;i<j;i++) printf("%d ",b[i]); printf("\n"); return 0; } vc++6.0测试如下:  
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯