问题遇到的现象和发生背景
该代码是为了实现c primer plus 6 中第7章编程练习第8题
发现用getchar获得数字的输入和scanf获得输入的结果不一样,前者无法运行
问题相关代码,请勿粘贴截图
#include<stdio.h>
#define rate1 0.15
#define rate2 0.20
#define rate3 0.25
int main() {
float sm1,sm2, h,tax,m;
int num;
printf("enter the number corresponding to the desired pay rate or action:\n");
printf("1) $8.75/hr\t\t2) $9.33/hr\n");
printf("3) $10.00/hr\t\t4) $11.20/hr\n5) quit\n");
printf("\n");
a1:printf("请输入1到5中的数字\n");
scanf("%d",&num); //这一行
switch (num) {
case 1:
m = 8.75;
break;
case 2 :
m = 9.33;
break;
case 3:
m = 10.00;
break;
case 4 :
m = 11.20;
break;
case 5 :
break;
default:
goto a1;
}
printf("请输入一周的工作时间\n");
scanf("%f",&h);
if (h > 40)
h = (h - 40) * 1.5 + h;
sm1 = m * h;
if (sm1 <= 300) {
tax = sm1 * rate1;
sm2 = sm1 - tax;
}
else if (sm1<=450) {
tax = 45 + (sm1 - 300) * rate2;
sm2 = sm1 - tax;
}
else
{
tax = 45 + 30 + (sm1 - 450) * rate3;
sm2 = sm1 - tax;
}
printf("你的工资总额是%f,你应缴纳的税金是%f,所以你的净收入是%f",
sm1,tax,sm2);
return 0;
}
运行结果及报错内容
当把//(代码中标注)这一行的代码换成num=getchar()时,它就会出现如图情况
我的解答思路和尝试过的方法
getchar()和scanf()都能得到输入的值,而且这里只需要读取一个字符,为什么不可以互换
我想要达到的结果
希望能帮忙解释下这里无法使用getchar获得数字的原因