打印

帮忙看看这段程序为什么会出错

[复制链接]
1189|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xuyaosong|  楼主 | 2013-4-10 13:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
交谈中请勿轻信汇款、中奖信息、陌生电话,勿使用外挂软件。

王灿祥  13:27:21
#include<stdio.h>
void main()
{       
        int a,c1,sum=0;
        while(1)                                                                                        //对下面内容进行循环
        {
                printf("请输入1~5中任意一个数字:\n");
                scanf("%d",&a);
                switch(a)                                                                                //多重选择
                {
                        case 1:c1=-2;printf("扣除1分\n");break;
                        case 2:c1=-1;printf("扣除2分\n");break;
                        case 3:c1=0;printf("不得分\n");break;
                        case 4:c1=1;printf("获得1分\n");break;
                        case 5:c1=2;printf("获得2分\n");break;
                        default :c1=0;printf("error\n");
                }
                sum=sum+c1;                                                                                //叠加
                printf("总得分:%d\n",sum);
        }
}


输入1、2、3、4、5都可以,大家可以试试输入一个字母,会循环,不知道怎么回事了。

相关帖子

沙发
南宫云明| | 2013-4-10 13:40 | 只看该作者
本帖最后由 南宫云明 于 2013-4-10 13:41 编辑

VC++6.0环境是会这样的。。。因为:
scanf("%d",&a);
这句代码本身要求你输入数字,如果输入字符就会出错(死循环)。

如果你想不进入死循环,就直接让它输入字符:
scanf("%c",&a);
然后通过函数把字符强制转换成数字,这样就不会死循环了。。。。这个函数什么名字忘了,百度一下就出来了。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:做个机器人,欧耶!提高专注力

45

主题

550

帖子

0

粉丝