#include<stdio.h>
int main()
{
int ch=0;
while((ch=getchar())!=EOF)//输入
{
putchar(ch);//输出
}
return 0;
}
EOF-end of file 文件结束标志;
#include<stdio.h>
int main()
{
int ch=0;
int ret=0;
char password[20]={0};
printf("请输入密码:>");
scanf("%s",password);
while((ch=getchar()!='\n'))
{
;
}
printf("请确认(Y/N):>");
ret=getchar();
if(ret=='Y')
{
printf("请确认\n");
}
else
{
printf("放弃确认\n");
}
return 0;
}
scanf("%s",password);:输入密码,并存放在password数组中;例如:123456,其实这组数组存放在缓冲区是:123456\n
getchar();主要是读取缓冲区中剩余的一个’\n‘
如果输入:123456 ABCD,这时getchar()只是读取空格,后面ABCD\n没有读取完的,这时我们写一个把后面字符全部读取完语句就行->while((ch=getchar()!='\n')),判断getchar()有没有读取缓冲区’\n‘
已经有了whlie循环语句,为什么还要for循环语句呢?
写两个代码对比一下:
while 语句
#include<stdio.h>
int main()
{
int i=1;
whlie(i<=10)
{
printf("%d ",i);
i++;
}
return 0;
}
- for语句
#include<stdio.h>
int main()
{
int i = 0;
//初始化;判断;调整
for (i = 1; i <= 10; i++)
{
if (i == 5)
//break; //终止循环,输出:1 2 3 4
continue;//输出:1 2 3 4 6 7 8 9 10
printf("%d ", i);
}
return 0;
}

#include<stdio.h>
int main()
{
int i = 0;
for (i = 0; i < 10; i++)
{
if (i = 5)//这里是把5赋值于i,导致死循环
printf("haha\n");//本质想在第5次打印“haha”
printf("hehe\n");
}
return 0;
}
所以不可在for循环体内修改循环变量,防止for循环失去控制
#include<stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int i = 0;
//10个元素
//10次打印
for (i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
建议for语句的循环控制变量取值采用“前闭后开”写法
#include<stdio.h>
int main()
{
for (;;)
{
printf("hehe\n");
}
return 0;
}
for循环的初始化、调整、判断都可以省略,但是:for循环的判断部分如果被省略,那判断条件就是:恒为真,所以这里是:死循环
#include<stdio.h>
int main()
{
int i = 0;
int j=0;
for (i=0; i < 10; i++)
{
for (j=0; j < 10; j++)
printf("hehe\n");
}
return 0;
}
j循环运行10次,外面的i循环也运行10次,10*10=100
这里结果输出:100个“hehe”
#include<stdio.h>
int main()
{
int i = 0;
int j=0;
for (; i < 10; i++)
{
for (; j < 10; j++)
printf("hehe\n");
}
return 0;
}
这是输出:10个“hehe”
开始i=0,i<10,开始j循环,j循环一次+1,加到j=10,出来开始i循环,但此时j=10,j循环不在执行,所以,后面i循环十次也不会输出。
#include<stdio.h>
int main()
{
int i = 0;
int k = 0;
for (i = 0, k = 0; k = 0; i++, k++)
k++;
return 0;
}
循环0次,k=0,表示把0赋值于k,条件0为假,所以他不执行循环
- do...while语句
do...while循环至少执行一次

#include<stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i++;
}
while (i <= 10);
return 0;
}
练习题:
1. 计算 n的阶乘。
2. 计算 1!+2!+3!+……+10!
3. 在一个有序数组中查找具体的某个数字n。
4. 编写代码,演示多个字符从两端移动,向中间汇聚。
5. 编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则
提示登录成,如果三次均输入错误,则退出程序。