C语言初学者求助大佬

BakenJ 2019-08-08 03:32:21
本人刚开始接触C语言几天(完全小白),账号都刚注册
底下的scanf("%c",&c);为何怎样都不执行
我用的是dev c++的编译器,谢谢大佬们解答
#include<stdio.h>
int main()
{
int i,m[16],top,bot,mid,a,sign=0;
char c;
printf("你输入的15个由小到大的数依次为(空格隔开):");
again:
scanf("%d",&m[1]);
for(i=2;i<=15;i++)
{
scanf("%d",&m[i]);
if(m[i]>=m[i-1]);
else
{
printf("顺序错误,请全部重新输入:\n");
goto again;
}
}
start:
printf("请输入需查找的数:");
scanf("%d",&a);
if(a<m[1]||a>m[15])
goto end;
for(top=1,bot=15;top<=bot;)
{
mid=(top+bot)/2;
if(a==m[mid])
{
printf("该数被找到,且为第%d个元素(若有相等元素,只显示最前面的一个元素)",mid);
sign=1;
break;
}
else if(a<m[mid])bot=mid-1;
else if(a>m[mid])top=mid+1;
}
if(sign==0)
{
end:
printf("无此数\n");
printf("是否重新输入:");
scanf("%c",&c);
if(c=='Y'||c=='y')goto start;
}
return 0;
}
...全文
195 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_45628593 2019-09-15
  • 打赏
  • 举报
回复
兄弟,编译器哪下载的?
自信男孩 2019-08-09
  • 打赏
  • 举报
回复
scanf("%c",&c);

这句前加一句getchar();用于接收上次输入留在输入缓存里的'\n'
一百个Chocolate 2019-08-08
  • 打赏
  • 举报
回复
建议不使用goto语句,没有你想的那么简单,不知道是你自学还是学校教的 现在goto语句也基本上不会用了 特别容易出错
goto是无条件跳转 一般与if语句相结合 但是可不能往回跳啊 你的程序就是出错在goto语句了,跳下去又调回去 不死循环了吗
goto这一块建议跳过学习 我们学校教课已经不讲了
赵4老师 2019-08-08
  • 打赏
  • 举报
回复
在每个最后不带\n的printf后面加fflush(stdout); 在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin); 另外请检查scanf的返回值。
//请今后要用
char c;
scanf("%c",&c);
//时,都改为
char s[2];
char c;
scanf("%1s",s);
c=s[0];
//自动跳过一个或多个空格或Tab字符或回车换行,读取下一个字符。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧