| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 443 人关注过本帖
标题:这个switch 有什么问题么。
只看楼主 加入收藏
ProgrammerLy
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-9-24
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:4 
这个switch 有什么问题么。
程序代码:
#include<stdio.h>
void add(int a1, int a2){
    int resa = a1 + a2;
    printf("%d\n", resa);
    printf("done!\n");
}
void sub(int s1, int s2){
    int ress = s1 - s2;
    printf("%d\n", ress);
    printf("done!\n");
}
void mul(int m1, int m2){
    int resm = m1*m2;
    printf("%d\n", resm);
    printf("done!\n");
}
void div(int d1, int d2){
    int resd = d1 / d2;
    printf("%d\n", resd);
    printf("done!\n");
}


int main(){
    printf("Enter the operation of your choice!\n");
    printf("a.add  s.substract  m.multiply  d.diveide q.quit\n");
    char choice;
    while ((choice = getchar()) != 'q'){
        switch (choice){
        case'a':
            int a1, a2;
            printf("please enter a1:\n");
            scanf_s("%d", &a1);
            printf("please enter a2:\n");
            scanf_s("%d", &a2);
            add(a1,a2);
            break;
        case 's':
            int s1, s2;
            printf("please enter s1:\n");
            scanf_s("%d", &s1);
            printf("please enter s2:\n");
            scanf_s("%d", &s2);
            sub(s1, s2);
            break;
        case 'm':
            int m1, m2;
            printf("please enter m1:\n");
            scanf_s("%d", &m1);
            printf("please enter m2:\n");
            scanf_s("%d", &m2);
            mul(m1, m2);
            break;
        case 'd':
            int d1, d2;
            printf("please enter d1:\n");
            scanf_s("%d", &d1);
            printf("please enter d2:\n");
        gtd1:
            scanf_s("%d", &d2);
            if (d2 != 0)
                div(d1, d2);
            else {
                printf("Plesae enter your d2 again!\n");
                goto gtd1;
            }
            break;
        default:
            printf("please input effective keyword\n"); 
            break;
    }
}

}



这个程序就是选择加减乘除,如果选了一个没有的选项,比如输入b。会出来两次please input effective keyword,是为什么呢。
2015-09-24 10:27
李掌柜
Rank: 6Rank: 6
等 级:侠之大者
帖 子:94
专家分:406
注 册:2015-6-18
收藏
得分:10 
这种情况通常是没有处理缓冲区而引起的,,

照片是可以做成小游戏的,快来私聊我吧!
2015-09-24 10:54
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:10 
比如输入b
----- 输入的是'b'和'\n'两个字符吧
2015-09-24 12:15
ProgrammerLy
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-9-24
收藏
得分:0 
我想了一上午啊,谢谢大家了。
2015-09-24 12:18
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
不知道為什麼,就單步跟蹤程序的流程,那樣可以清晰直觀地看到如何輸出了兩次。

授人以渔,不授人以鱼。
2015-09-24 12:22
快速回复:这个switch 有什么问题么。
数据加载中...
 
   



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

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