
C语言 编程错误
#include<stdio.h>#include<stdlib.h>intStrchr(chars[],charch);intmain(){charch;inty;ch...
#include <stdio.h>
#include <stdlib.h>
int Strchr(char s[],char ch);
int main()
{
char ch;
int y;
char s[1000];
printf("Please input a string:");
scanf("%s",&s);
printf("Search:");
scanf("%c\n",&ch);
y=Strchr(s,ch);
printf("the first position is:%d\n",y);
system("PAUSE");
return 0;
}
int Strchr(char s[],char ch)
{
int i;
for(i=0;i<=1000;i++)
{
if(s[i]=ch)
{
return i;
}
else if(s[i]!=ch)
{
return -1;
}
}
}
结果总显示0 展开
#include <stdlib.h>
int Strchr(char s[],char ch);
int main()
{
char ch;
int y;
char s[1000];
printf("Please input a string:");
scanf("%s",&s);
printf("Search:");
scanf("%c\n",&ch);
y=Strchr(s,ch);
printf("the first position is:%d\n",y);
system("PAUSE");
return 0;
}
int Strchr(char s[],char ch)
{
int i;
for(i=0;i<=1000;i++)
{
if(s[i]=ch)
{
return i;
}
else if(s[i]!=ch)
{
return -1;
}
}
}
结果总显示0 展开
4个回答
展开全部
调试了一下,问题在于字符串输入后没有清stdin流残余数据,故变量ch没有获得正确值。
修改代码和注释如下:
#include <stdio.h>
#include <stdlib.h>
int Strchr(char s[],char ch);
int main()
{
char ch;
int y;
char s[1000];
printf("Please input a string:");
scanf("%s",&s);
getchar(); //清除stdin流的残留数据
printf("Search:");
scanf("%c",&ch);
getchar(); //清除stdin流的残留数据
y=Strchr(s,ch);
printf("the first position is:%d\n",y);
system("PAUSE");
return 0;
}
int Strchr(char s[],char ch)
{
int i;
//for(i=0;i<=1000;i++) 数组下标0~999
for(i=0;i<1000;i++)
{
if(s[i]==ch) //比较用==
{
return i+1; //换算为正常顺序位置
}
//else if(s[i]!=ch) 逻辑有误
//{
// return -1;
//}
}
return -1;
}
在VC6调试通过,如下图:
供参考。

2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
if(s[i]==ch)你写成=了,应该是==
追问
改了还是不行
老师说还要改
printf("Please input a string:");
scanf("%s",&s);
printf("Search:");
scanf("%c\n",&ch);
我想最后实现的时候
在string后输一串,
在search后输一个,
在position后得结果。
请问大神怎么弄
追答
//看看
#include
#include
int Strchr(char s[],char ch);
int main()
{
char ch;
int y;
char s[1000];
printf("Please input a string:");
gets(s);
printf("Search:");
scanf("%c",&ch);
y=Strchr(s,ch);
printf("the first position is:%d\n",y);
system("PAUSE");
return 0;
}
int Strchr(char s[],char ch)
{
int i;
int flag = -1;
for(i=0;i<1000;i++)
{
if(s[i]==ch)
break;
}
return i;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-11-25 · 做真实的自己 用良心做教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注

展开全部
吧 if(s[i]=ch)改成if(s[i]==ch)就可以
追问
改了还是不行
老师说还要改
printf("Please input a string:");
scanf("%s",&s);
printf("Search:");
scanf("%c\n",&ch);
我想最后实现的时候
在string后输一串,
在search后输一个,
在position后得结果。
请问大神怎么弄
追答
scanf("%c\n",&ch); 吧%c改成%s
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if(s[i]=ch) 是 if (s[i]==ch)
追问
改了还是不行
老师说还要改
printf("Please input a string:");
scanf("%s",&s);
printf("Search:");
scanf("%c\n",&ch);
我想最后实现的时候
在string后输一串,
在search后输一个,
在position后得结果。
请问大神怎么弄
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询