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