【发布时间】:2016-10-26 19:03:17
【问题描述】:
我的锻炼需要一些帮助。
这是我的代码:
#include <stdio.h>
main()
{
int price,new_price;
char code;
printf("Enter the price:");
scanf("%d",&price);
printf("Enter the pricing code:");
scanf("%s",&code);
if(code == 'A')
{
new_price=price*0.5;
printf("New discounted price is $%d.00",new_price);
}
else if(code =='B')
{
new_price=price*0.6;
printf("New discounted price is $%d.00",new_price);
}
}
我知道 scanf("%c") 在输入 scanf("%d") 后会被跳过,所以当我向讲师寻求解决方案时,她告诉我将 scanf("%c") 更改为 scanf ("%s")。问题是,我无法获得新的折扣价。该值将显示为 0.00 美元。
这张图总结了我的问题
The value shows up as $0.00 even though the code runs
我尝试使用 switch 并且代码工作得非常好,但我只是想找出一种方法来使此代码工作而不使用 scanf("%c") 格式化程序。任何帮助将不胜感激!提前致谢!
【问题讨论】:
-
您将输入格式更改为
%s字符串类型(跳过前导空格),但您没有将变量类型更改为数组,并且您没有测试其中的第一个元素大批。你的老师是“教授”吗?一些国家会产生像五彩纸屑这样的“教授”。 -
stackoverflow.com/questions/16833526 总之,您需要做的就是将
"%c"更改为" %c" -
“教授”首先应该教你什么。
-
@user3386109 是的,我现在看到了,如果我使用
%s,我还需要将变量类型更改为数组!谢谢! -
@TheRookieCoder 大多数转换(
"%d"、"%s"、"%f"等)会自动跳过空格(包括换行符)。"%c"转换是一个例外,它不会跳过空格。将空格放入转换" %c"会导致scanf跳过您想要的非空白字符之前的任何空白。