【发布时间】:2021-12-16 08:36:31
【问题描述】:
我使用下面的程序来计算我写的数字的绝对值。当aa 变为n 时程序应该停止。
#include <stdio.h>
int main()
{
float a;
char ap;
printf("Start? Press n for no.\n");
scanf("%c",&ap);
while(ap!='n'){
printf("Give a number\n");
scanf("%f",&a);
if(a<0){
a=-a;
}
printf("Abs=%f\n",a);
printf("Continue? Press n for no.\n");
scanf("%c",&aa);
}
printf("Exit");
return 0;
}
程序似乎忽略了while 循环中的scanf("%c",&aa),这是我的问题。 斜体 是输入 粗体 是输出:
开始?按 n 表示否。
是
给个数字
4
Abs=4.000000
继续?按 n 表示否。
给个数字
5
Abs=5.000000
继续?按 n 表示否。
给个数字
n
Abs=5.000000
继续?按 n 表示否。
退出
当我将scanf("%c",&aa) 替换为scanf(" %c",&aa) 时,问题就解决了(见空格)。此外,当aa 是一个数字时,一切正常。该程序运行良好,当aa 变为0 时停止。
#include <stdio.h>
int main()
{
float a, aa;
printf("Start? Press 0 for no.\n");
scanf("%f",&aa);
while(aa!=0){
printf("Give a number\n");
scanf("%f",&a);
if(a<0){
a=-a;
}
printf("Abs=%f\n",a);
printf("Continue? Pres 0 for no.\n");
scanf("%f",&aa);
}
printf("Exit");
return 0;
}
那是什么?
提前致谢!
【问题讨论】: