69,374
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
int main(void) {
int youhao;
int youliang;
char fuwu;
double price;
double sum;
scanf("%d", &youliang);
scanf("%d", &youhao);
scanf("%c", &fuwu);
switch(youhao) {
case 90: price = 6.95;
break;
case 93: price = 7.44;
break;
case 97: price = 7.93;
break;
}
if(fuwu == 'm') {
sum = price* youliang*0.5;
}else if(fuwu == 'e') {
sum = price*youliang*0.3;
}
printf("%.2f", sum);
}
scanf("%d", &youliang);
scanf("%d", &youhao);
getchar();
//fflush(stdin);
scanf("%c", &fuwu);
改成这样,即可解决;
原因跟楼上所说的一样,把上一个输入的换行作为了下一个fuwu的值,你如果调试就会发现fuwu的值为10,就是换行的Ascii码
另外C,变量必须要初始化才可以
int ret_int;
char ret_char;
scanf(“%d”, &ret_int);
scanf(“%c”, &ret_char);
[code=c] int youhao;
int youliang;
char fuwu;
char huichefu;//---------------用来屏蔽回车符---------------
double price = 0.0;//------------赋初始值------------------
double sum = 0.0;//-------------赋初始值-----------------
scanf("%d", &youliang);
scanf("%d", &youhao);
scanf("%c", &huichefu);//-------屏蔽输入油耗时输入的回车符-------------
scanf("%c", &fuwu);
switch (youhao) {
case 90: price = 6.95;
break;
case 93: price = 7.44;
break;
case 97: price = 7.93;
break;
}
if (fuwu == 'm') {
sum = price* youliang*0.5;
}
else if (fuwu == 'e') {
sum = price*youliang*0.3;
}
printf("%.2f", sum);
[/code]