#include<stdio.h>
int main() {
float money=0, due=0;
char ontime;
printf("How much do you owe?");
scanf_s("%f", &money);
printf("On time?");
ontime = getchar();
if (ontime == 'y') {
due = money;
}
else if (ontime == 'n') {
due = 1.1 * money;
}
printf("You shall pay:%f", due);
}
getchar 可能是被上面输入时的回车影响了,上面再加个getchar();吸收掉回车
printf("On time?");
getchar();
ontime = getchar();
,因为你scanf会把回车给忽略掉,你需要在scanf_s到printf("On time?");之间加个getchar();就可以了
是输入缓冲区搞得问题,当你输入第一个scanf_s的时候,还会残留一个回车符在输入缓冲区中,然后到下面getchar();时,会优先冲输入缓冲区中读取字符,所以当他读取到'\n'时,就不会停下来等待用户输入了。解决办法就是在getcher()前加上下面代码,清空输入缓冲区的字符,即可!
char c; // 清空输入缓冲区
while((c = getcher()) != '\n');
#include<stdio.h>
int main() {
float money=0, due=0;
char ontime;
printf("How much do you owe?");
scanf_s("%f", &money);
printf("On time?");
char c; // 清空输入缓冲区
while ((c = getchar()) != '\n') {
ontime = getchar();
}
if (ontime == 'y') {
due = money;
}
else if (ontime == 'n') {
due = 1.1 * money;
}
printf("You shall pay:%1f", due);
}