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测试如下:
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯