C的基础问题,scanf

来源:百度知道 编辑:UC知道 时间:2024/05/21 13:02:32
代码:
#include <stdio.h>
void main()
{
char a;
for(int i = 0; i < 3; i++)
{
scanf("%c",&a);
printf("a = %c\n",a);
}
}

为什么执行时,不用输入4次?
不好意思,打错字了,不是4次,是3次
实际运行中,只输入2次,程序就结束了

//加一句

scanf("%c",&a);
getchar();//接受多余的回车符;

//或者改为
scanf("%c",&a);
fflush(stdin);//清空输入缓冲;

你对for语句不理解呀
你要知道,每次执行循环体前
都要执行什么操作
对于for语句,每次执行循环体前,都要执行的
操作是比较i与3的大小,即执行语句i<3;
判断它是否满足这个条件,满足则继续执行循环体
不满足则不再执行循环体,退出循环
当i=3的时候,由于执行i<3的比较,结果这个关系表达式
的值为假,因此就不会再执行了,不此时i的值是3而已

这些你还是多看看for语句把

i=0,i=1,i=2总共三次,i=3的时候条件就不满足,不执行循环了,嗯,要清空缓冲区

#include <stdio.h>
void main()
{
char a;
for(int i = 0; i < 3; i++) //循环语句,i=0,i=1,i=2时都能执行,所以只能循环三次,不能输入四次。
{
scanf("%c",&a);
printf("a = %c\n",a);
}
}

如果想输入四次这么改吧:
#include <stdio.h>
void main()
{
char a;
for(int i = 0; i < =3; i++)
{
scanf("%c",&a);
printf("a = %c\n",a);
}
return 0;
}

简单回答就是:循环次数限制了,一共就三次 怎么会让你输4次

因为char类型的在计