鱼C论坛

 找回密码
 立即注册
查看: 1161|回复: 1

[已解决]输入问题

[复制链接]
发表于 2020-8-17 17:22:20 | 显示全部楼层 |阅读模式
5鱼币
我这个循环有啥问题吗,为啥没有按顺序再执行m = getchar(),却执行了default
循环.png
#include <stdio.h>
int main(){
        double price, tra_pac_cost, pounda, poundb, poundc, sumpound,suma, sumb, sumc;/*总菜价,运输与包装费用,输入洋蓟磅数,输入甜菜磅数,输入胡萝卜磅数,总磅数,总计洋蓟磅数,总计甜菜磅数,总计胡萝卜磅数*/
        char m;//选择菜品
        int n = 0;//输入失败计数
        
        printf("*********************************************************************");
        printf("\nEnter the number corresponding to the your corresponding condition: ");
        printf("\na) 洋蓟:2.05美元/磅\t\tb) 甜菜:1.15美元/磅");
        printf("\nc) 胡萝卜:1.09美元/磅\tq) quit");
        printf("\nn)进入下一步");
        printf("\n*********************************************************************\n");
        printf("Enter a number to select:\n");
                m = getchar();
        while(1){
                switch(m)
        {
                case 'a':printf("输入洋蓟的磅数:");
                                         scanf("%lf", £a);
                                                 suma += pounda;
                                                 break;
                case 'b':printf("输入甜菜的磅数:");
                                         scanf("%lf", £b);
                                                 sumb += poundb;
                                                 break;
                case 'c':printf("输入胡萝卜的磅数:");
                                         scanf("%lf", £c);
                                                 sumc += poundc;
                                                 break;
                case 'q':goto quit;
                case 'N':goto NEXT;
                default :++n;
                                         if(n%3 == 0) 
                                                     goto quit;
                                                 else printf("输入失败\n失败三次将结束程序\n请输入a~c,退出请输入q\n"); 
                                                 continue; }
                                printf("继续输入,按q退出, 按N进入下一步\n");
                                m = getchar();
                                continue;
                                NEXT:break;}
                printf("共订购洋蓟%lf磅,甜菜%lf磅,胡萝卜%lf磅\n");
                price = suma*2.05 + sumb*1.15 + sumc*1.09;
                if (price > 100)
                    price *= 0.95;
                sumpound = suma + sumb +sumc;
                if (sumpound <= 5)
                tra_pac_cost = 6.5;
            else if (sumpound > 5 && sumpound < 20)
                tra_pac_cost = 14;
            else tra_pac_cost = (sumpound - 20)*0.5 +14;
            printf("订购费用:%lf\n订购重量:%lf\n运费与包装费:%lf\n费用总额:%lf\n", price, sumpound, tra_pac_cost, price + tra_pac_cost);
                quit :printf("Bye!");
                return 0;
}
最佳答案
2020-8-17 17:22:21
第14行的getchar()获得一个字符之后,缓冲区还有一个字符'\n',所以你在第38行的getchar()获得到的字符是'\n'

解决办法就是在38 行之前在添加一句getchar()用于清除那个回车字符'\n'

最佳答案

查看完整内容

第14行的getchar()获得一个字符之后,缓冲区还有一个字符'\n',所以你在第38行的getchar()获得到的字符是'\n' 解决办法就是在38 行之前在添加一句getchar()用于清除那个回车字符'\n'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-17 17:22:21 | 显示全部楼层    本楼为最佳答案   
第14行的getchar()获得一个字符之后,缓冲区还有一个字符'\n',所以你在第38行的getchar()获得到的字符是'\n'

解决办法就是在38 行之前在添加一句getchar()用于清除那个回车字符'\n'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 07:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表