| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1441 人关注过本帖
标题:一个关于 采购蔬菜费用的计算 循环计算出错了 求帮忙看看哪里有问题
只看楼主 加入收藏
zhang0852
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-7-7
结帖率:66.67%
收藏
已结贴  问题点数:17 回复次数:7 
一个关于 采购蔬菜费用的计算 循环计算出错了 求帮忙看看哪里有问题
代码
计算的价格对的  但是有2个问题  
(1) 在switch()中   按U  不能退出   求问  为什么? 该怎么改?
(2) 想进行循环计算的时候  会直接跳过switch() 不能选择种类 为什么啊? 还有就算第一次计算完了  也会直接说按任意键退出 不能循环计算   求解答 求帮助   跪谢大家  全部分都给你们  求帮助

#include <stdio.h>
#define ADC  1.25// 朝鲜鱼
#define APC  0.65// 甜菜
#define ADK  0.89// 胡萝卜
#define BCK  3.50// 不超过5磅的运输费
#define BCA  10.00// 6磅--19磅的运输费
int main()
{
    double p;
    char ch;//开关 选择种类
    char a; // 朝鲜鱼
    char b; //甜菜
    char c; //胡萝卜
    char u;//退出采购
    double d=0.05; //打折5%
    double e=0; //订购的磅数
    double t=0; //添加运输前的费用
    double f=0; //总的费用
    double k=0; //折扣后的价格
    double h=0; //运输费用
    while(1)
    {
        printf("请先输入你需要的蔬菜种类
             a 朝鲜鱼  b 甜菜  c 胡萝卜  u 退出采购\n");
     switch(getchar(ch))
     {
         case 'a': p=ADC;
         break;
         case 'b': p=APC;
         break;
         case 'c': p=ADK;
         break;
         case 'u': p=u;
         break;
         default:  return(0);
         break;
     }   
    printf("谢谢你对本公司的支持\n");
    printf("现在请你输入你想要采购数量\n");
    scanf("%lf",&e);
        t=e*p;
        k=t-(t*d);
        printf("不添加运输费 然后打折后的费用为%.2lf\n",k);
        if(t>0&&t<=5)
        {
            h=t+BCK;
        }
        else if(t>=6&&t<=19)
        {
            h=t+BCA;
        }
        else
        {
            h=t+8+(e*0.1);
        }
        f=h+k;
        printf("你采购的蔬菜每磅的费用为%.2lf\n",p);
        printf("\n");
        printf("采购的蔬菜种类是%c\n",ch);
        printf("\n");
        printf("折扣后的费用为%.2lf\n",k);
        printf("\n");
        printf("运输费为%.2lf\n",h);
        printf("\n");
        printf("订单的总费用为%.2lf\n",f);
        printf("\n");
        printf("谢谢合作 ");
        printf("如果还想要继续采购 请继续\n");
    }
    return 0;
}
搜索更多相关主题的帖子: include 胡萝卜 运输费 朝鲜 蔬菜 
2016-07-18 12:40
zx315
Rank: 5Rank: 5
来 自:广东
等 级:职业侠客
威 望:2
帖 子:86
专家分:378
注 册:2016-7-13
收藏
得分:6 
getchar() 函数写错了?应该是 ch = getchar() 吧?

Read The Fucking Source Code~
2016-07-18 13:04
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:6 
改两处

程序代码:
#include <stdio.h>
#define ADC  1.25// 朝鲜鱼 
#define APC  0.65// 甜菜 
#define ADK  0.89// 胡萝卜 
#define BCK  3.50// 不超过5磅的运输费 
#define BCA  10.00// 6磅--19磅的运输费 
int main()
{
    double p;
    char ch;//开关 选择种类 
    char a; // 朝鲜鱼 
    char b; //甜菜 
    char c; //胡萝卜 
    char u;//退出采购 
    double d = 0.05; //打折5% 
    double e = 0; //订购的磅数 
    double t = 0; //添加运输前的费用 
    double f = 0; //总的费用
    double k = 0; //折扣后的价格 
    double h = 0; //运输费用 
    while (1)
    {
        printf("请先输入你需要的蔬菜种类\n    a 朝鲜鱼  b 甜菜  c 胡萝卜  u 退出采购\n"); 
            switch (ch = getchar())        //获取方式
            {
            case 'a': p = ADC;
                break;
            case 'b': p = APC;
                break;
            case 'c': p = ADK;
                break;
            case 'u':            //u什么都不用干
                //break;
            default:  return(0);
                break;
            }
        printf("谢谢你对本公司的支持\n");
        printf("现在请你输入你想要采购数量\n");
        scanf("%lf", &e);
        t = e*p;
        k = t - (t*d);
        printf("不添加运输费 然后打折后的费用为%.2lf\n", k);
        if (t>0 && t <= 5)
        {
            h = t + BCK;
        }
        else if (t >= 6 && t <= 19)
        {
            h = t + BCA;
        }
        else
        {
            h = t + 8 + (e*0.1);
        }
        f = h + k;
        printf("你采购的蔬菜每磅的费用为%.2lf\n", p);
        printf("\n");
        printf("采购的蔬菜种类是%c\n", ch);
        printf("\n");
        printf("折扣后的费用为%.2lf\n", k);
        printf("\n");
        printf("运输费为%.2lf\n", h);
        printf("\n");
        printf("订单的总费用为%.2lf\n", f);
        printf("\n");
        printf("谢谢合作 ");
        printf("如果还想要继续采购 请继续\n");
    }
    return 0;
}
2016-07-18 13:29
晓益
Rank: 4
来 自:江苏扬州
等 级:业余侠客
威 望:2
帖 子:85
专家分:220
注 册:2016-7-9
收藏
得分:6 
回复 楼主 zhang0852
你按  U 只是代表swtich语句啥也没做,并没有跳出while循环

千里之行,始于足下。
思考问题伤细胞,得分不容易。解决完问题请尽快结贴
2016-07-18 13:41
zhang0852
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-7-7
收藏
得分:0 
回复 3楼 grmmylbs
二次循环  还是不行啊  怎么办啊? 大哥  只能第一次循环
2016-07-18 13:42
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
没注意还有这个要求。在最后加一个抵消回车键。

程序代码:
#include <stdio.h>
#define ADC  1.25// 朝鲜鱼 
#define APC  0.65// 甜菜 
#define ADK  0.89// 胡萝卜 
#define BCK  3.50// 不超过5磅的运输费 
#define BCA  10.00// 6磅--19磅的运输费 
int main()
{
    double p;
    char ch;//开关 选择种类 
    char a; // 朝鲜鱼 
    char b; //甜菜 
    char c; //胡萝卜 
    char u;//退出采购 
    double d = 0.05; //打折5% 
    double e = 0; //订购的磅数 
    double t = 0; //添加运输前的费用 
    double f = 0; //总的费用
    double k = 0; //折扣后的价格 
    double h = 0; //运输费用 
    while (1)
    {
        printf("请先输入你需要的蔬菜种类\n    a 朝鲜鱼  b 甜菜  c 胡萝卜  u 退出采购\n"); 
            switch (ch = getchar())
            {
            case 'a': p = ADC;
                break;
            case 'b': p = APC;
                break;
            case 'c': p = ADK;
                break;
            case 'u':
                //break;
            default:  return(0);
                break;
            }
        printf("谢谢你对本公司的支持\n");
        printf("现在请你输入你想要采购数量\n");
        scanf("%lf", &e);
        t = e*p;
        k = t - (t*d);
        printf("不添加运输费 然后打折后的费用为%.2lf\n", k);
        if (t>0 && t <= 5)
        {
            h = t + BCK;
        }
        else if (t >= 6 && t <= 19)
        {
            h = t + BCA;
        }
        else
        {
            h = t + 8 + (e*0.1);
        }
        f = h + k;
        printf("你采购的蔬菜每磅的费用为%.2lf\n", p);
        printf("\n");
        printf("采购的蔬菜种类是%c\n", ch);
        printf("\n");
        printf("折扣后的费用为%.2lf\n", k);
        printf("\n");
        printf("运输费为%.2lf\n", h);
        printf("\n");
        printf("订单的总费用为%.2lf\n", f);
        printf("\n");
        printf("谢谢合作 ");
        printf("如果还想要继续采购 请继续\n");
        getchar();
    }
    return 0;
}
2016-07-18 13:51
zhang0852
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-7-7
收藏
得分:0 
回复 6楼 grmmylbs
二次循环可以了   谢谢你哈   还有最后一个小问题    就是  在输出选择购买种类的时候  怎么输出名字啊   我的只能输出字母  谢谢
     printf("采购的蔬菜种类是%c\n",ch);
2016-07-18 14:45
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <string.h>
#define ADC  1.25// 朝鲜鱼 
#define APC  0.65// 甜菜 
#define ADK  0.89// 胡萝卜 
#define BCK  3.50// 不超过5磅的运输费 
#define BCA  10.00// 6磅--19磅的运输费 
int main()
{
    double p;
    char ch;//开关 选择种类 
    char a; // 朝鲜鱼 
    char b; //甜菜 
    char c; //胡萝卜 
    char u;//退出采购 
    double d = 0.05; //打折5% 
    double e = 0; //订购的磅数 
    double t = 0; //添加运输前的费用 
    double f = 0; //总的费用
    double k = 0; //折扣后的价格 
    double h = 0; //运输费用 
    char name[10] = { 0 };
    while (1)
    {
        printf("请先输入你需要的蔬菜种类\n    a 朝鲜鱼  b 甜菜  c 胡萝卜  u 退出采购\n"); 
            switch (ch = getchar())
            {
            case 'a': p = ADC;
                strcpy(name, "朝鲜鱼");
                break;
            case 'b': p = APC;
                strcpy(name, "甜菜");
                break;
            case 'c': p = ADK;
                strcpy(name, "胡萝卜");
                break;
            case 'u':
                //break;
            default:  return(0);
                break;
            }
        printf("谢谢你对本公司的支持\n");
        printf("现在请你输入你想要采购数量\n");
        scanf("%lf", &e);
        t = e*p;
        k = t - (t*d);
        printf("不添加运输费 然后打折后的费用为%.2lf\n", k);
        if (t>0 && t <= 5)
        {
            h = t + BCK;
        }
        else if (t >= 6 && t <= 19)
        {
            h = t + BCA;
        }
        else
        {
            h = t + 8 + (e*0.1);
        }
        f = h + k;
        printf("你采购的蔬菜每磅的费用为%.2lf\n", p);
        printf("\n");
        printf("采购的蔬菜种类是%s\n", name);
        printf("\n");
        printf("折扣后的费用为%.2lf\n", k);
        printf("\n");
        printf("运输费为%.2lf\n", h);
        printf("\n");
        printf("订单的总费用为%.2lf\n", f);
        printf("\n");
        printf("谢谢合作 ");
        printf("如果还想要继续采购 请继续\n");
        getchar();
    }
    return 0;
}
2016-07-18 15:17
快速回复:一个关于 采购蔬菜费用的计算 循环计算出错了 求帮忙看看哪里有问题
数据加载中...
 
   



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

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