我的练习需要一些帮助。
这是我的代码:
#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(“%d”)后会跳过scanf(“%c”),所以当我向讲师询问解决方案时,她告诉我将scanf(“%c”)更改为scanf ( “%S”)。问题是,我无法获得新的折扣价。该值将显示为$ 0.00。
此图片总结了我的问题
The value shows up as $0.00 even though the code runs
我尝试使用switch并且代码工作得非常好,但我只是想找到一种方法来使这段代码无需使用scanf(“%c”)格式化器。任何帮助都将非常感谢!提前谢谢!
答案 0 :(得分:2)
你输入&#34; 100<enter>A
&#34;。您的代码旨在读取一个整数后跟一个字符。所以它在&#34; 100
&#34;然后&#34; <enter>
&#34;。你应该放入&#34; 100A<enter>
&#34;如果您的代码设置为读取整数后跟一个字符。
如果要读取输入行并解析它们,请编写执行此操作的代码。读取整数后,可以使用这样的函数来读取它后面的行。然后你就可以阅读这个角色了。