| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 447 人关注过本帖
标题:新手求教,帮忙看看代码哪里有问题
只看楼主 加入收藏
cwde
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2011-3-31
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:5 
新手求教,帮忙看看代码哪里有问题
题目大致是先选择输入类别,然后再输入数据计算金额,写完了代码后发现一个问题,每次运行完指定的case语句后,接着就运行了default语句,也就是说当中的break语句并没有起到跳出程序的作用,这是为啥呀?本人刚学C,大家来帮忙看看,多谢啊

#include "stdio.h"
int main(void)
{
char ch; int n,m;
printf ("shuruzhonglei a,b\n");
while ((ch=getchar())!='#')
{ switch (ch)
{case 'a':
{ printf ("enter your money\n");
scanf ("%d",&n);
if (n>17850)
m=(n-17850)*28/100+17850*15/100;
else
m=n*15/100;
printf ("your money is %d\n",m);}
        break;
case 'b':
{ printf ("enter your money\n");
scanf ("%d",&n);
if (n>23900)
m=(n-23900)*28/100+23900*15/100;
else
m=n*15/100;
printf ("your money is %d\n",m);}
           break;

        default : printf("error");
}

}
return (0);}
搜索更多相关主题的帖子: money 
2011-03-31 22:59
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:20 
程序代码:
root@~ #cat 2.c
#include "stdio.h"

int main(void) {
        char ch;
        int n,m;

        while(1) {
                printf ("Entet a or b,press # exit:\n");
                ch=getchar();
                switch (ch) {
                        case 'a':
                        printf ("enter your money\n");
                        scanf ("%d",&n);
                        getchar();
                        if (n>17850) {
                                m=(n-17850)*28/100+17850*15/100;
                        }else{
                                m=n*15/100;
                        }
                        printf ("your money is %d\n",m);
            break;

                        case 'b':
                        printf ("enter your money\n");
                        scanf ("%d",&n);
                        getchar();
                        if (n>23900) {
                                m=(n-23900)*28/100+23900*15/100;
                        }else{
                                m=n*15/100;
                        }
                        printf ("your money is %d\n",m);
                        break;

                        case '#':
                        printf ("Exit\n");return 0;

                        default:printf("Illegal input! again\n\n");
                        break;
                }
        }

        return 0;

}
root@~ #

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-31 23:41
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
以上代码基本通过, 也许还有不足, 大致如此, 楼主自己去完善吧。
PS:不过希望楼主写代码的时候尽量规范,这样能增加可读性!

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-31 23:43
爱海松涛
Rank: 3Rank: 3
来 自:安徽合肥
等 级:论坛游侠
帖 子:120
专家分:197
注 册:2011-2-25
收藏
得分:0 
可以通过啊。。
2011-04-01 17:04
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
你的break位置写的 好像不对  看3楼的吧

                                         
===========深入<----------------->浅出============
2011-04-01 18:46
cwde
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2011-3-31
收藏
得分:0 
3楼的朋友,看了你的代码,我找到我的问题了,在每个case语句中的scanf后加上getchar();break语句就起跳出的作用了,只是我不明白为什么要加上getchar();这个语句呢?各位大师能不能帮我解释一下呀...???谢谢啊
2011-04-01 22:04
快速回复:新手求教,帮忙看看代码哪里有问题
数据加载中...
 
   



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

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