知识点5:利用循环设计算法解决具体问题
循环结构是编程中解决重复性任务的核心工具。本知识点通过8个具体案例,展示如何使用循环结构解决实际编程问题。
循环结构使我们能够:
- 处理重复性任务
- 遍历数组或集合
- 实现数学计算
- 创建特定模式输出
- 解决复杂算法问题
在C语言中,主要有三种循环结构:
- while循环 - 在条件为真时重复执行
- for循环 - 在指定次数内重复执行
- do-while循环 - 至少执行一次后再检查条件
// while循环示例
int count = 0;
while (count < 5) {
printf("Count: %d\n", count);
count++;
}
// for循环示例
for (int i = 0; i < 5; i++) {
printf("Iteration: %d\n", i);
}
// do-while循环示例
int num = 5;
do {
printf("Number: %d\n", num);
num--;
} while (num > 0);
例1:数字反转
输入一串数字,反转这个数字并输出(例如输入12345,输出54321)。
算法解析:
该程序使用while循环对数字进行反转操作。在每次循环中:
- 使用模运算(%)获取当前数的最低位数字
- 将获取的数字添加到反转后的数字的末尾
- 将原数除以10,去掉其最低位数字
#include <stdio.h>
int main() {
int num, reversed_num = 0;
printf("请输入一个正整数:");
scanf("%d", &num);
while (num > 0) {
int digit = _______1________;
reversed_num = _______2________;
_______3________;
}
printf("反转后的数字为: %d\n", reversed_num);
return 0;
}
例2:数组最大值和最小值
给定一个整型数组,编写程序找到其中的最大值和最小值。
算法解析:
- 将最大值和最小值初始化为数组的第一个元素
- 使用for循环遍历数组中的所有元素
- 比较每个元素与当前最大值和最小值
- 根据比较结果更新最大值和最小值
#include <stdio.h>
int main() {
int nums[] = {3, 7, 2, 5, 8, 4};
int num_count = _______1________;
int max_num = nums[0], min_num = nums[0],i;
for ( i = 1; i < num_count; i++) {
if (_______2________) {
max_num = nums[i];
}
if (nums[i] < min_num) {
_______3________;
}
}
printf("最大值为: %d\n", max_num);
printf("最小值为: %d\n", min_num);
return 0;
}
示例输出
数组: {3, 7, 2, 5, 8, 4}
最大值: 8
最小值: 2
例3:数组平均值
#include <stdio.h>
int main() {
float nums[] = {3, 7, 2, 5, 8, 4};
int num_count = _______1________;
float ave =0;int i;
for ( i = 1; i < _______2________; i++) {
ave+=nums[i];
}
_______3________;
printf("平均值: %d\n", ave);
return 0;
}
示例输出
数组: {3, 7, 2, 5, 8, 4}
最大值: 8
最小值: 2