scanf(“%c”)在scanf(“%d”)之后跳过,所以我的讲师告诉我将scanf(“%d”)更改为scanf(“%s”),但现在代码不再正常运行了

时间:2016-10-26 19:03:18

标签: c scanf

我的练习需要一些帮助。

Question of exercise

这是我的代码:

 #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”)格式化器。任何帮助都将非常感谢!提前谢谢!

1 个答案:

答案 0 :(得分:2)

你输入&#34; 100<enter>A&#34;。您的代码旨在读取一个整数后跟一个字符。所以它在&#34; 100&#34;然后&#34; <enter>&#34;。你应该放入&#34; 100A<enter>&#34;如果您的代码设置为读取整数后跟一个字符。

如果要读取输入行并解析它们,请编写执行此操作的代码。读取整数后,可以使用这样的函数来读取它后面的行。然后你就可以阅读这个角色了。