求教一道C语言的题目

#include<stdio.h>intmain(){while(1){printf("请输入你想实现的功能所对应的数字,按回车键确认\n\n1.加法2.减法3.乘法4.... #include<stdio.h>
int main()
{
while(1)
{
printf("请输入你想实现的功能所对应的数字,按回车键确认\n\n1.加法 2.减法 3.乘法 4.乘方\n\n");
printf("5.转置 6.行列式 7.伴随矩阵 8.逆矩阵\n\n");
printf("9.秩 10.解AX=B 11.QR分解 12.判定两矩阵是否相似\n\n");
printf("13.LU分解 14.若当标准型 15.解一阶线性齐次常系数微分方程组\n\n");
int func=0;
while(1)
{
scanf("%d",&func);
if(func<=15&&func>=1) break;
else printf("非法输入,请重新选择你想实现的功能\n");
}
switch (func)
{
case 1: break;
case 2: break;
case 3: break;
case 4: break;
case 5: break;
case 6: break;
case 7: break;
case 8: break;
case 9: break;
case 10: break;
case 11: break;
case 12: break;
case 13: break;
case 14: break;
case 15: break;
}
printf("请选择\n1.返回 2.退出\n");
int cho;
while(1)
{
scanf("%d",&cho);
if(cho==1||cho==2) break;
else printf("输入错误,请重新输入\n");
}
if(cho==1) continue;
else break;
}
return 0;
}

while(1)
{
scanf("%d",&func);
if(func<=15&&func>=1) break;
else printf("非法输入,请重新选择你想实现的功能\n");
}
在这个循环中,为什么当我输入数字是非法的时候可以重新输入,但是一单输入字符,就跌入死循环,不断的出现“非法输入……”求大神
展开
 我来答
Anita_轩
2013-12-05
知道答主
回答量:23
采纳率:0%
帮助的人:18.8万
展开全部
while(1)
{
scanf("%d",&func);
if(func<=15&&func>=1) break;
else printf("非法输入,请重新选择你想实现的功能\n");
}
你这里输入的是%d 所以输入数字是正常进入了if();字符就进入了else()
因为你if后面是加了break,所以能正常跳出while(1)这个死循环,而else你是没有加上break的,所以是一直在while(1)死循环。
追问
我不是要输入字符时跳出循环啊,只是想在输入字符时,重新执行这个循环
追答
while(1)
{
scanf("%d",&func);
if(func=1) break;
else
{
printf("非法输入,请重新选择你想实现的功能\n");
setbuf(stdin,NULL); //加上这句就一定行,,他实现清空流里面的数据
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不二脑思
2013-12-05 · 喜欢游戏的数学IT人
不二脑思
采纳数:266 获赞数:1171

向TA提问 私信TA
展开全部
因为你从键盘接入的时候 使用int型变量接的 所以不能输入字符 ..
如果想要接字符 ..
用char 来接 ..
char func;
switch(func)
{
case '1':
}
追问
我只是想当输入字符的时候,输出“输入错误”之类的,然后重新输入,但是为什么输入字符不是这样的
追答
277586690 QQ说 ..
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhang20113015
2013-12-05 · 超过27用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:32.9万
展开全部
因为你定义输入的是%d的形式,也就是整形,所以你输入字符型的时候,计算机会将字符转换成ASCII值,这样你输入的一直是错误的 》。。。结果会一直出现"非法输入....."
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式