while 循环中的 scanf("%f",&aa) VS scanf("%f",&aa)
scanf("%f",&aa) VS scanf("%f",&aa) in a while loop
我使用下面的程序来计算我写的数字的绝对值。当 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)
,这是我的问题。 斜体 是输入粗体 输出:
Start? Press n for no.
y
Give a number
4
Abs=4.000000
Continue? Pres n for no.
Give a number
5
Abs=5.000000
Continue? Pres n for no.
Give a number
n
Abs=5.000000
Continue? Pres n for no.
Exit
当我用 scanf(" %c",&aa)
替换 scanf("%c",&aa)
时问题就解决了(参见 space)。另外,当 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;
}
那是什么?
提前致谢!
Space 在 %c
之前删除任何白色 space(空格、制表符或换行符)。这意味着 %c
没有 space 将读取白色 space 就像换行符 (\n)、spaces(' ') 或制表符 (\t) . 通过在 %c
之前添加 space,我们是 skipping
并且只读取给定的字符。
我使用下面的程序来计算我写的数字的绝对值。当 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)
,这是我的问题。 斜体 是输入粗体 输出:
Start? Press n for no.
y
Give a number
4
Abs=4.000000
Continue? Pres n for no.
Give a number
5
Abs=5.000000
Continue? Pres n for no.
Give a number
n
Abs=5.000000
Continue? Pres n for no.
Exit
当我用 scanf(" %c",&aa)
替换 scanf("%c",&aa)
时问题就解决了(参见 space)。另外,当 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;
}
那是什么?
提前致谢!
Space 在 %c
之前删除任何白色 space(空格、制表符或换行符)。这意味着 %c
没有 space 将读取白色 space 就像换行符 (\n)、spaces(' ') 或制表符 (\t) . 通过在 %c
之前添加 space,我们是 skipping
并且只读取给定的字符。