?!
求问各位大佬,我这代码哪里错了,为什么最后输出结果时e那个公式可以运行成功而m那个公式运行不成功???#include<stdio.h>
int main()
{
int m,e,choice1,choice2;
double a,cost;
printf("Enter a:");
scanf("%lf",&a);
printf("seclet 90\n");
printf("select 93\n");
printf("select 97\n");
printf("Enter choice1:");
scanf("%d",&choice1);
printf("select m\n");
printf("select e\n");
printf("Enter choice2:");
scanf("%d",&choice2);
switch(choice1){
case 90:cost=6.95;break;
case 93:cost=7.44;break;
case 97:cost=7.93;break;
default:cost=0.00;break;
}
if(choice2==m){
cost=cost*a*(1-0.05);}
else if(choice2==e){
cost=cost*a*(1-0.03);}
else
printf("default\n");
printf("%.2f\n",cost);
return 0;
} 你这m和e没有初值啊? 你的程序没有问题
Enter a:6.8
seclet 90
select 93
select 97
Enter choice1:90
select m
[ e]select e
Enter choice2:e
def ault
6.95
----------------------------------------
Process exited after 81.91 seconds with return value 0
请按任意健继续 . . . 昨非 发表于 2020-10-27 19:11
你这m和e没有初值啊?
他这个程序不需要赋初值,m、e 是作为选项的 风过无痕1989 发表于 2020-10-27 20:06
他这个程序不需要赋初值,m、e 是作为选项的
我的vs是报错了,不清楚。。。。 昨非 发表于 2020-10-27 20:08
我的vs是报错了,不清楚。。。。
我用的是DEV,运行完了他的程序的各个选项 题目是这个:现在90号汽油6.95元/升、93号汽油7.44元/升、97号汽油7.93元/升。为吸引顾客,某自动加油站推出了“自助服务”和“协助服务”两个服务等级,分别可得到5%和3%的折扣。根据输入顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助),计算并输出应付款。
是我最后输出时m那个公式结果算不对,但是我不知道错哪了!! 你发帖时没有明确,只好帮你验证程序,修改程序中的错误。现在明确了题目意图,帮你修改的程序如下:
#include<stdio.h>
int main()
{
int m,e,choice1,choice2;
double a,cost;
printf("Enter how much gas a = ");
scanf("%lf",&a);
printf("90# gas seclet 90\n");
printf("93# gas select 93\n");
printf("97# gas select 97\n");
printf("Enter choice1:");
scanf("%d",&choice1);
switch(choice1)
{
case 90:cost=6.95 * a;break;
case 93:cost=7.44 * a;break;
case 97:cost=7.93 * a;break;
default:cost=0.00;break;
}
printf("select m\n");
printf("select e\n");
printf("Enter choice2:");
scanf("%d",&choice2);
getchar(); // 吸收回车键,你的错误主要在此,你输入的是字符,回车也是字符哟~~
if(choice2 == m)
{
cost=cost * (1-0.05);
}
else if(choice2 == e)
{
cost=cost * (1-0.03);
}
else
printf("\n");
printf("You need pay %.2f yuan\n",cost);
return 0;
}
如果满意了,就请给个最佳答案,如果还不如意,请提出存在的问题,我继续改进
风过无痕1989 发表于 2020-10-28 13:18
你发帖时没有明确,只好帮你验证程序,修改程序中的错误。现在明确了题目意图,帮你修改的程序如下:
还是不对。{:10_269:} 琪琪怪怪 发表于 2020-10-28 22:56
还是不对。
刚下班回来,又仔细查看了我前面发的程序,确实存在错误没有修改: 1、choice2 应该是 char 型;2、choice1 输入后,没有吸收回车,导致后面输入字符时,总是将这个回车赋给了 choice2;3、输入 choice2 时,使用的控制符不正确;4、比较字符时,要加单引号
#include<stdio.h>
int main()
{
int m,e,choice1;
char choice2; // 由于接收的是字符
double a,price,cost;
printf("Enter how much gas a = ");
scanf("%lf",&a);
printf("90# gas seclet 90\n");
printf("93# gas select 93\n");
printf("97# gas select 97\n");
printf("Enter choice1: ");
scanf("%d",&choice1);
getchar(); //吸收回车键, 此语句最为关键
switch(choice1)
{
case 90:price=6.95 * a;break;
case 93:price=7.44 * a;break;
case 97:price=7.93 * a;break;
default:price=0.00;break;
}
printf("%.2f\n",price); // 没有优惠时该付金额
printf("self-service select m\n");
printf("ancillary-service select e\n");
printf("Enter choice2: ");
scanf("%c",&choice2); // 接收字符,用了 %d
getchar(); // 吸收回车键,你的错误主要在此,你输入的是字符,回车也是字符哟~~
if(choice2 == 'm') // 单引号不能少
{
price = (1 - 0.05) * price;
}
else if(choice2 == 'e') // 单引号不能少
{
price = (1 - 0.03) * price;
}
printf("\n");
printf("You need pay %.2lf yuan\n",price);
return 0;
}
风过无痕1989 发表于 2020-10-29 01:55
刚下班回来,又仔细查看了我前面发的程序,确实存在错误没有修改: 1、choice2 应该是 char 型;2、choice ...
那int e,m;用不着啊
吃点饭饭 发表于 2020-10-29 09:52
那int e,m;用不着啊
人家的程序里用了,没有大问题,我不能随便就给人家去掉了,是吧? 风过无痕1989 发表于 2020-10-29 01:55
刚下班回来,又仔细查看了我前面发的程序,确实存在错误没有修改: 1、choice2 应该是 char 型;2、choice ...
不好意思,这几天事情比较多,现在才看到,这次运行对了,多谢帮忙! 琪琪怪怪 发表于 2020-11-2 14:02
不好意思,这几天事情比较多,现在才看到,这次运行对了,多谢帮忙!
不必客气,刚开始学习,谁都有不知所措的时候。有问题尽管来求助,论坛的朋友们会热心帮助你的
页:
[1]