Day 03 学习总结
流程控制语句
-
顺序结构
- 程序从上到下依次执行。
- 每一条语句顺序执行,直到结束。
-
选择结构
- 程序根据条件选择执行某一条分支。
- 包括
if-else
和switch-case
。
-
循环结构
- 程序反复执行某段代码。
- 包括
for
、while
、do-while
。
-
跳转结构
- 控制程序直接跳转到指定位置。
- 包括
break
、continue
、goto
、return
。
选择结构
1. 单个 if
if (条件表达式)
{// 条件为真时执行
}
2. if-else
if (条件表达式)
{// 条件为真时执行
}
else
{// 条件为假时执行
}
3. 多分支 if-else if
if (条件表达式1)
{// 条件1为真时执行
}
else if (条件表达式2)
{// 条件1为假,条件2为真时执行
}
else
{// 所有条件为假时执行
}
4. switch-case
switch (变量)
{case 值1:// 执行语句break;case 值2:// 执行语句break;default:// 默认执行语句break;
}
循环结构
1. for
循环
for (初始化; 条件; 迭代)
{// 循环体
}
示例:输出 1 到 10 的数字。
for (int i = 1; i <= 10; i++)
{printf("%d ", i);
}
2. while
循环
while (条件)
{// 循环体
}
示例:输出 1 到 10 的数字。
int i = 1;
while (i <= 10)
{printf("%d ", i);i++;
}
3. do-while
循环
do
{// 循环体
} while (条件);
示例:至少执行一次循环体。
int i = 1;
do
{printf("%d ", i);i++;
} while (i <= 10);
跳转结构
break
:跳出最近一层循环。continue
:跳过当前循环,直接进入下一轮。goto
:跳转到指定标签。return
:结束函数并返回值。
示例:
for (int i = 1; i <= 10; i++)
{if (i == 5)break; // 终止循环if (i % 2 == 0)continue; // 跳过偶数printf("%d ", i);
}
循环思想与应用
-
数据分离
- 将一个数字分解为个位、十位、百位等。
- 示例:三位数分离。
int n = 123; int ge = n % 10; int shi = n / 10 % 10; int bai = n / 100;
-
计数思想
- 统计满足条件的数量。
- 示例:统计 1 到 100 中能被 3 整除的数。
int count = 0; for (int i = 1; i <= 100; i++) {if (i % 3 == 0)count++; } printf("数量:%d", count);
-
求和思想
- 累加满足条件的数。
- 示例:计算 1 到 100 的和。
int sum = 0; for (int i = 1; i <= 100; i++) {sum += i; } printf("总和:%d", sum);
-
累积思想
- 求积(阶乘)。
- 示例:计算 n 的阶乘。
int n = 5, result = 1; for (int i = 1; i <= n; i++) {result *= i; } printf("%d 的阶乘是:%d", n, result);
循环嵌套
示例 1:打印矩形数字
for (int i = 1; i <= 5; i++) // 行
{for (int j = 1; j <= 10; j++) // 列{printf("%d ", j);}printf("\n");
}
示例 2:打印三角形数字
for (int i = 1; i <= 9; i++) // 行
{for (int j = 1; j <= i; j++) // 列{printf("%d ", j);}printf("\n");
}
示例 3:打印等腰三角形
for (int i = 1; i <= 9; i++) // 行
{for (int z = 1; z <= 9 - i; z++) // 空格{printf(" ");}for (int j = 1; j <= i; j++) // 左半部分数字{printf("%d ", j);}printf("\n");
}
作业
-
输出 100 到 500 内能被 3 整除且个位是 7 的数,并统计数量。
int count = 0; for (int i = 100; i <= 500; i++) {if (i % 3 == 0 && i % 10 == 7){printf("%d ", i);count++;} } printf("\n总数量:%d", count);
-
输入数据 n,计算 1 - 2 + 3 - 4 + … + n。
int n, sum = 0; printf("请输入 n:"); scanf("%d", &n); for (int i = 1; i <= n; i++) {if (i % 2 == 0)sum -= i; // 偶数减elsesum += i; // 奇数加 } printf("结果是:%d", sum);
-
输入两个数,求最大公约数和最小公倍数。
int a, b, gcd, lcm; printf("请输入两个数:"); scanf("%d %d", &a, &b);for (int i = (a < b ? a : b); i >= 1; i--) {if (a % i == 0 && b % i == 0){gcd = i;break;} } lcm = a * b / gcd;printf("最大公约数:%d\n", gcd); printf("最小公倍数:%d", lcm);
-
判断一个五位数是否为回文数字。
int n, ge, shi, bai, qian, wan; printf("请输入一个五位数:"); scanf("%d", &n);ge = n % 10; shi = n / 10 % 10; qian = n / 1000 % 10; wan = n / 10000;if (ge == wan && shi == qian)printf("%d 是回文数字", n); elseprintf("%d 不是回文数字", n);