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
展开
 我来答
geniepengsz
推荐于2016-10-28 · TA获得超过2万个赞
知道大有可为答主
回答量:1.2万
采纳率:97%
帮助的人:2858万
展开全部

调试了一下,问题在于字符串输入后没有清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)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
447587096
2015-11-25 · TA获得超过5047个赞
知道大有可为答主
回答量:2504
采纳率:70%
帮助的人:1396万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shgtdaicooper
2015-11-25 · 超过66用户采纳过TA的回答
知道小有建树答主
回答量:131
采纳率:100%
帮助的人:90万
展开全部
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后得结果。
请问大神怎么弄
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式