今日学习内容
1. 循环三要素
循环变量初始化:定义循环控制变量并赋初值(如 `int i=0;`)
循环条件:决定是否继续执行循环体(如 `i < 10`)
循环变量更新:使循环趋向终止的操作(如 `i++`)
2. 循环语句分类
(1) `goto` 语句
语法:
标签:
...
goto 标签;
嵌入式禁用原因:
破坏代码结构,降低可读性
易引发不可控跳转(如跨函数跳转导致堆栈错误)
难以维护和调试
(2) `while` 循环
语法:
while (循环条件)
{
// 循环体
}
特点:先判断条件,后执行循环体(可能一次都不执行)
(3) `do...while` 循环
语法:
do
{
// 循环体
}
while (循环条件);
特点:先执行循环体,再判断条件(至少执行一次)
(4) `for` 循环
语法:
for (初始化; 循环条件; 变量更新)
{
// 循环体
}
典型应用:
for (int i=0; i<10; i++)
{
printf("%d ", i); // 输出0~9
}
省略写法(慎用):
for (;;) // 等效 while(1)
{
// 死循环
}
3. 循环控制关键字
(1) `break`
作用:立即终止当前层循环
示例:
for (int i=0; i<10; i++)
{
if (i == 5) break; // 循环在i=5时终止
printf("%d ", i); // 输出0 1 2 3 4
}
(2) `continue`
作用:跳过本次循环剩余代码,进入下一轮循环
示例:
for (int i=0; i<5; i++)
{
if (i == 2) continue;
printf("%d ", i); // 输出0 1 3 4
}
4. 嵌套循环设计
外层循环控制整体次数,内层循环处理细节操作
5.算法及练习代码
//回文数判断
#include <stdio.h>
int main(void)
{
int n;
printf("输入数字");
scanf("%d", &n);
int m = 0, k = n;
while (n != 0)
{
m = m * 10 + n % 10;
n = n / 10;
}
if (m == k)
printf("是回文数\n");
else
printf("不是回文数\n");
return 0;
}
//嵌套方式输出 1–9999 范围内的所有回文数
#include <stdio.h>
int main(void)
{
int i;
for (i = 1; i < 10000; ++i)
{
int n = i, m = 0;
while (n != 0)
{
m = m * 10 + n % 10;
n = n / 10;
}
if (i == m)
{
printf("%d\n", i);
}
}
return 0;
}
//九九乘法表
#include <stdio.h>
int main(void)
{
int i, j;
for (i = 1; i < 10; ++i)
{
for (j = 1; j <= i; ++j)
{
printf("%2d * %2d = %2d ", j, i, j * i);
}
printf("\n");
}
return 0;
}
//阶乘和(计算 1! + 2! + … + n!,此处 n = 3)
#include <stdio.h>
int main(void)
{
int n = 3;
int sum = 0;
int i, j;
for (i = 1; i <= n; ++i)
{
int t = 1;
for (j = 1; j <= i; ++j)
{
t *= j;
}
sum += t;
}
printf("%d\n", sum);
return 0;
}
// 质数
#include <stdio.h>
int main(void)
{
int i, n;
scanf("%d", &n);
for (i = 2; i < n; ++i)
{
if (0 == n % i)
{
break;
}
}
if (i < n)
{
printf("和数\n");
}
else
{
printf("质数\n");
}
return 0;
}
// 输出 100 以内的质数
#include <stdio.h>
int main(void)
{
int i, j;
for (i = 2; i <= 100; ++i)
{
for (j = 2; j < i; ++j)
{
if (0 == i % j)
{
break;
}
}
if (j >= i)
{
printf("%d\n", i);
}
}
return 0;
}
6.总结
(1) 循环设计核心:严格管理三要素(初始化、条件、更新)
(2) 循环选择原则:
明确循环次数 → `for`
条件先验 → `while`
条件后验 → `do...while`
(3)嵌入式规范:禁用 `goto`,优先使用结构清晰的循环
(4) 控制语句陷阱:`break` 仅跳出当前层循环,`continue` 慎用于复杂逻辑