| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1860 人关注过本帖
标题:ABC邮寄杂货店问题,小白求教
只看楼主 加入收藏
guage
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-1-15
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
ABC邮寄杂货店问题,小白求教
/*ABC邮购杂货店出售的洋蓟售价为2.05美元/磅,甜菜售价为1.15美元/磅胡萝卜售价为1.09/磅。在添加运费之前,100美元的订单有5%的打折优惠。
少于或者等于5磅的订单收取6.5美元的运费和包装费,5磅-20磅的订单收取14美元的运费和包装费,超过20磅的订单在14美元的基础上每续重1磅增加
0.5美元。编写一个程序,在循环中使用switch语句实现用户输入不同的字母时有不同的响应,即输入a的响应是让用户输入洋蓟的磅数,b是甜菜的磅数
,c是胡萝卜的磅数,q是退出订购。程序要记录累计的重量,即如果用户输入的是4磅的甜菜,然后输入5磅的甜菜,程序应报告9磅的甜菜。然后程序
应显示所有的购买信息:物品售价、订购的重量(单位磅),订购蔬菜的费用、订单的总费用、折扣(如果有的话)、运费和包装费,以及所有的费用
总额。

#include<stdio.h>
#define DJYJ 2.05     //洋蓟单价
#define DJTC 1.15     //甜菜单价
#define DJHLB 1.09    //胡萝卜单价
#define YHJG 100      //优惠价格
#define YHBZ 5        //优惠标准
int main(void)
{
    char ch;
    double zlyj_sum = 0.0;    //洋蓟价格
    double zltc_sum = 0.0;    //甜菜价格
    double zlhlb_sum = 0.0;   //胡萝卜价格
    double jgyj_sum = 0.0;    //洋蓟价格合计
    double jgtc_sum = 0.0;    //甜菜价格合计
    double jghlb_sum = 0.0;   //胡萝卜价格合计
    double zl_sum = 0.0;      //重量合计
    double jg_sum = 0.0;      //价格合计
    double jg_sum_dz = 0.0;   //价格合计打折
    double jg = 0.0;          //最终价格
    double dbfy = 0.0;        //打包费用
    int yhcs = 0;          //优惠次数

    /**/
    printf("请输入蔬菜代码:n");
    printf("a:洋蓟 b:甜菜 c:胡萝卜");

    while (((ch = getchar()) != "q"))
    {
        double zlyj_dc = 0.0;
        double zltc_dc = 0.0;
        double zlhlb_dc = 0.0;
        double jgyj_dc = 0.0;
        double jgtc_dc = 0.0;
        double jghlb_dc = 0.0;

        /*循环开始前所有单次重量和价格为0*/

        switch (ch)
        {
        case 'a':
            printf("请输洋蓟重量。n");
            scanf_s("%lf",&zlyj_dc);
            zlyj_sum = zlyj_sum + zlyj_dc;
            jgyj_dc = zlyj_dc * DJYJ;
            printf("洋蓟%f磅,价格%f元。n", zlyj_dc, jgyj_dc);
            jgyj_sum = jgyj_sum + jgyj_dc;
            break;
        case'b':
            printf("请输入甜菜重量。n");
            scanf_s("%lf",&zltc_dc);
            zltc_sum = zltc_sum + zltc_dc;
            jgtc_dc = zltc_dc * DJTC;
            printf("甜菜%f磅,价格%f元。n", zltc_dc, jgtc_dc);
            jgtc_sum = jgtc_sum + jgtc_dc;
            break;
        case'c':
            printf("请输入胡萝卜重量。n");
            scanf_s("%lf",&zlhlb_dc);
            zlhlb_sum = zlhlb_sum + zlhlb_dc;
            jghlb_dc = zlhlb_dc * DJHLB;
            printf("胡萝卜%f磅,价格%f元。n", zlhlb_dc, jghlb_dc);
            jghlb_sum = jghlb_sum + jghlb_dc;
            break;
        default:
            printf("输入错误,重新输入!");
            break;
        }

    }
    jg_sum = jgyj_sum + jgtc_sum + jghlb_sum;
    zl_sum = zlyj_sum + zltc_sum + zlhlb_sum;
    if (jg_sum >= YHJG)
    {
        yhcs = jg_sum / YHJG;                       //优惠次数=价格总数/优惠标准
        jg_sum_dz = jg_sum - yhcs * YHBZ;           //最终价格=总价格-优惠次数*优惠标准
    }
    else
        jg_sum_dz = jg_sum;

    const float ZLBZA = 5;                        
    const float ZLBZB = 20;
    const float DBJGA = 6.5;
    const float DBJGB = 14;
    const float DBJGC = 0.5;
    if (zl_sum <= ZLBZA)
    {
        jg = jg_sum_dz + DBJGA;
    }
    else if (zl_sum <= ZLBZB)
    {
        jg = jg_sum_dz + DBJGB;
    }
    else if (zl_sum > ZLBZB)
    {
        jg = jg_sum_dz + DBJGB + (zl_sum - ZLBZB) / 1 * DBJGC;
    }
    printf("总费用%f元。n", jg);
    printf("总重量%f磅。n", zl_sum);
    printf("原总价格%f元。n", jg_sum_dz);
    printf("洋蓟总重%f磅,价格合计%f元。n", zlyj_sum, jgyj_sum);
    printf("甜菜总重%f磅,价格合计%f元。n", zltc_sum, jgtc_sum);
    printf("洋胡萝卜总重%f磅,价格合计%f元。n", zlhlb_sum, jghlb_sum);
    return 0;
}

严重性    代码    说明    项目    文件       禁止显示状态
错误    LNK2019    无法解析的外部符号 _WinMain@16,函数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 中引用了该符号    Project1    D:VSProject1MSVCRTD.lib(exe_winmain.obj)    1   
严重性    代码    说明    项目    文件       禁止显示状态
错误    LNK1120    1 个无法解析的外部命令    Project1    D:VSProject1DebugProject1.exe    1   
严重性    代码    说明    项目    文件       禁止显示状态
警告    C4244    “=”: 从“double”转换到“int”,可能丢失数据    Project1    D:VSProject1超市小票.c    74   
严重性    代码    说明    项目    文件       禁止显示状态
警告    C4047    “!=”:“int”与“char [2]”的间接级别不同    Project1    D:VSProject1超市小票.c    27   
严重性    代码    说明    项目    文件       禁止显示状态
警告    C26451    算术溢出: 使用 4 字节值上的运算符 * ,然后将结果转换到 8 字节值。在调用运算符 * 之前将值强制转换为宽类型可避免溢出(io.2)。    Project1    D:VSProject1超市小票.c    75   
搜索更多相关主题的帖子: printf 输入 价格 显示 double 
2021-01-15 21:39
zbjzbj
Rank: 12Rank: 12Rank: 12
来 自:郑州
等 级:贵宾
威 望:52
帖 子:633
专家分:3045
注 册:2011-4-22
收藏
得分:10 
能够编译,有两个警告。
图片附件: 游客没有浏览图片的权限,请 登录注册
2021-01-17 12:56
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1509
专家分:9241
注 册:2010-3-16
收藏
得分:10 
while (((ch = getchar()) != "q"))  这里要用'q',双引号是字符串
scanf_s是scanf的安全版本,可以忽略。
2021-01-17 23:14
guage
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-1-15
收藏
得分:0 
回复 3楼 apull
非常感谢!!
2021-02-03 13:51
guage
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-1-15
收藏
得分:0 
再次请教:

 为什么运行的时候 每次都会运行default:下面的语句,我的switch语句有错误吗?

详见下面:

请输入蔬菜代码:
a:洋蓟 b:甜菜 c:胡萝卜
f
输入错误,重新输入!
输入错误,重新输入!
s
输入错误,重新输入!
输入错误,重新输入!
a
请输洋蓟重量。
336
洋蓟336.000000磅,价格688.800000元。
洋蓟小计336.000000磅,688.800000元。
输入错误,重新输入!
2021-02-05 08:46
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
回复 5楼 guage
因为你将 回车 等控制字符也读入了。
懒得改,那就再增加一个 case '\n': break; 啥也不干就行了
2021-02-05 10:01
快速回复:ABC邮寄杂货店问题,小白求教
数据加载中...
 
   



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

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