- while循环
- for循环
- do while 循环
while 循环
示例1:
int main()
{
int ch = 0;
while ((ch = getchar()) != EOF)
{
putchar(ch);
}
return 0;
}
结果如下:
输出时发现光标在下一行,是因为我们在输入完字符a后的回车也被getchar读取了,也不等于EOF。
这个代码进行适当的修改是可以用来清理缓冲区的。
比如以下代码,输出结果并无法确认密码,是因为在输入密码后,缓冲区的回车没有被清理。
(错误代码)
int main()
{
char password[20] = { 0 };
printf("请输入密码:>");
scanf("%s", &password);
printf("请确认密码(Y/N):>");
int ret = getchar();
if ('Y' == ret)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
return 0;
(正确代码)
int main()
{
char password[20] = { 0 };
printf("请输入密码:>");
scanf("%s", &password);
int ch = 0;
while ((ch = getchar()) != '\n')
{
;
}
printf("请确认密码(Y/N):>");
int ret = getchar();
if ('Y' == ret)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
return 0;
}
示例二:
int main()
{
char ch = '\0';
while ((ch = getchar()) != EOF)
{
if (ch < '0' || ch>'9')
continue;
putchar(ch);
}
return 0;
}
以上代码只打印数字字符。
For 循环
for循环的语法结构:
for(表达式1;表达式二;表达式三)
{
循环语句;
}
表达式一:初始化部分,用于初始化循环变量的。
表达式二:条件判断部分,用于判断循环的终止。
表达式三:调整部分,用于循环条件的调整。、
建议:1.不可在 for 循环体内修改循环变量,防止 for 循环失去控制。
2.建议 for 循环语句的循环控制变量的取值采用 “前闭后开区间” 的写法。
示例一:
1.计算n的阶乘
int main()
{
int i = 1;
int n = 0;
int ret = 1;
scanf("%d", &n);
for (i = 1;i <= n;i++)
{
ret = ret * i;
}
printf("%d\n", ret);
return 0;
}
2.计算 1!+2!+3!+..........+n!
(普通版)
int main()
{
int i = 1;
int j = 0;
int n = 0;
int ret = 1;
int sum = 0;
scanf("%d", &n);
for (i = 1;i <= n;i++)
{
ret = 1;//算每一个阶乘时ret都要从1开始
for (j = 1;j <= i;j++)
{
ret = ret * j;
}
sum = sum + ret;
}
printf("%d\n", sum);
return 0;
}
注意:算每一个结成时 ret 都要从 1 开始,所以别忘了在第二个 for 循环之前令 ret =1
(改良版)
int main()
{
int n = 0;
int i = 0;
int ret = 1;
int sum = 0;
scanf("%d", &n);
for (i = 1;i <= n;i++)
{
ret = ret * i;
sum = sum + ret;
}
printf("%d\n", sum);
return 0;
}
do...while循环
语法结构:
do
{
循环语句;
}
while(表达式);
do..while语句至少会执行一次
示例一
int main()
{
int i = 1;
do
{
if (i == 5)
continue;
printf("%d", i);
i++;
} while (i <= 10);
return 0;
}
输出结果:1234然后死循环