| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 607 人关注过本帖
标题:给帮我看看这段程序怎么是这样的结果呢?请帮我分析一下!谢谢啦。
只看楼主 加入收藏
edward9092
Rank: 2
等 级:等待验证会员
帖 子:329
专家分:59
注 册:2009-1-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
给帮我看看这段程序怎么是这样的结果呢?请帮我分析一下!谢谢啦。
程序代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
    char choice;
    do
    {
        printf("开始\n\n\n");
        printf("请输入选择:");
        scanf("%c",&choice);
        printf("\n\n  打印choice:%c",choice);
        switch(choice)
        {
            case '1': printf("   正确 1\n\n\n");            break;
            case '2': printf("   正确 2\n\n\n");            break;
            case '3': printf("   正确 3\n\n\n");            break;
            case '4': printf("   正确 4\n\n\n");            break;
            case '5': printf("   正确 5\n\n\n");            break;
            case '6': printf("   正确 6\n\n\n");            break;
            case '0':                                        break;
            default:  printf("\n输入错误!!\n请输入0-6范围内的数字!!\n");break;        
        }
    }while(choice!='0');
    system("pause");
    return 0;
}


结果.jpg (14.01 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 结果 
2009-07-13 18:55
edward9092
Rank: 2
等 级:等待验证会员
帖 子:329
专家分:59
注 册:2009-1-5
收藏
得分:0 
各位大哥大姐  

帮我看看了
2009-07-13 19:25
wdeast
Rank: 2
等 级:论坛游民
帖 子:14
专家分:74
注 册:2009-7-13
收藏
得分:7 
结果没错啊,
break 语句是针对 switch 的,
输入‘0’终止程序。
2009-07-13 19:26
edward9092
Rank: 2
等 级:等待验证会员
帖 子:329
专家分:59
注 册:2009-1-5
收藏
得分:0 
回复 3楼 wdeast
那为什么在第二次进入while循环时。

在scanf不停下呢?
2009-07-14 11:59
ZHAOERCHENG
Rank: 1
等 级:新手上路
帖 子:4
专家分:3
注 册:2009-3-5
收藏
得分:3 
应该是可以停下.
2009-07-14 13:04
himpo
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:192
专家分:123
注 册:2008-5-16
收藏
得分:10 
scanf("%c",&choice);
while(getchar()!='\n');   //接受其他多余的字符就应该可以了..
这句后面加个

[[it] 本帖最后由 himpo 于 2009-7-14 13:25 编辑 [/it]]
2009-07-14 13:11
edward9092
Rank: 2
等 级:等待验证会员
帖 子:329
专家分:59
注 册:2009-1-5
收藏
得分:0 
回复 6楼 himpo
谢谢了.

这样改行了..谢谢啦..

但是能不能告诉我.

为什么,我的代码在第二次进入while时在scanf时不停下呢?

再次感谢.
2009-07-14 14:29
himpo
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:192
专家分:123
注 册:2008-5-16
收藏
得分:0 
以下是引用edward9092在2009-7-14 14:29的发言:

谢谢了.

这样改行了..谢谢啦..

但是能不能告诉我.

为什么,我的代码在第二次进入while时在scanf时不停下呢?

再次感谢.




你在进行scanf("%c",&choice);时,输入的是 1加上回车. C语言把回车也作为一个字符来处理的.
这个时候choose只是接受了字符'1',回车字符留在缓冲区里面,在第二次循环时,就把回车符给了choose....

所以...就有你这种情况.
2009-07-14 14:46
edward9092
Rank: 2
等 级:等待验证会员
帖 子:329
专家分:59
注 册:2009-1-5
收藏
得分:0 
回复 8楼 himpo
非常感谢。。。。

我怎么没有想到呢??
2009-07-14 17:36
快速回复:给帮我看看这段程序怎么是这样的结果呢?请帮我分析一下!谢谢啦。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016247 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved