c语言中要求输入数字,但当输入是字符的时候就会出现乱的,是什么原因,有代码。

 我来答
操羽40
2013-07-23 · TA获得超过430个赞
知道小有建树答主
回答量:374
采纳率:100%
帮助的人:237万
展开全部

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int choice;
    while(scanf("%d",&choice))
    {
        printf("choice==%d\n",choice);
    }
    system("pause");
}

因为你输入的不是数字,而你定义的又是数字类型的所以会出现上面的问题,在输入的时候在一个判定就可以了

tianlansefy
2013-07-23 · 超过13用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:35万
展开全部
choice是int型,你输入一个char型的字符是肯定不行的。如果想要输入字符的话要写成scanf("%c", choice),当然,要把choice声明成char型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友83cdc1c
推荐于2018-04-30 · TA获得超过5792个赞
知道大有可为答主
回答量:1907
采纳率:100%
帮助的人:849万
展开全部
输入字符时,scanf没有在你输入的内容里找到数字,所以实际choice没有被赋值,choice是个随机数。
更多追问追答
追问

就像上面的那个程序。我如果输入的是3,程序会提醒我重新输入。但我输入的如果是字符。就会一直打印下面那句话,陷入了死循环。这样程序就没了。。

追答
scanf返回值是成功赋值的数据项数,你可以这么改:

while(scanf("%d", &choice)!=1 || (choice !=1 && choice!=2))
printf("\n输入错误,请重新输入:“);
这样,如果输入字符,scanf返回为0,同样满足while条件,进入循环体输出下面那句话。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友262a8d918
2013-07-23 · TA获得超过184个赞
知道小有建树答主
回答量:328
采纳率:100%
帮助的人:152万
展开全部
你的输入输出都是int型 但现在给了一个char的值进去 会引起错误的
追问
我知道。所以我才要想解决这个问题,当输入不是数字的时候可以继续输入,直到输入是数字为止
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
f冰山cool
2013-07-23 · 超过10用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:34.2万
展开全部
因为你的输出格式有问题
改成printf("choice==%c\n",choice);试一试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式