c语言嵌套循环练习题
时间: 2025-07-21 07:33:06 浏览: 15
### 嵌套循环练习题及编程示例
嵌套循环在C语言中是常见的结构,通常用于解决多维问题,例如打印图形、数学计算、处理二维数组等。以下是几个适合练习的题目及对应的编程示例。
#### 打印九九乘法表
使用嵌套的`for`循环可以打印出九九乘法表,其中外层循环控制行数,内层循环控制每行的列数。
```c
#include <stdio.h>
int main() {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
printf("%d * %d = %2d ", j, i, j * i);
}
printf("\n");
}
return 0;
}
```
该程序输出如下:
```
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
...
```
#### 打印金字塔图案
通过嵌套循环可以打印出金字塔形状的星号。外层循环控制行数,内层循环分别控制空格和星号的输出。
```c
#include <stdio.h>
int main() {
int rows = 5;
for (int i = 1; i <= rows; i++) {
// 打印空格
for (int j = 1; j <= rows - i; j++) {
printf(" ");
}
// 打印星号
for (int k = 1; k <= 2 * i - 1; k++) {
printf("*");
}
printf("\n");
}
return 0;
}
```
该程序输出如下:
```
*
***
*****
*******
*********
```
#### 打印菱形图案
嵌套循环也可以用来打印菱形,需要分两部分实现:上半部分和下半部分。
```c
#include <stdio.h>
int main() {
int rows = 5;
// 上半部分
for (int i = 1; i <= rows; i++) {
for (int j = 1; j <= rows - i; j++) {
printf(" ");
}
for (int k = 1; k <= 2 * i - 1; k++) {
printf("*");
}
printf("\n");
}
// 下半部分
for (int i = rows - 1; i >= 1; i--) {
for (int j = 1; j <= rows - i; j++) {
printf(" ");
}
for (int k = 1; k <= 2 * i - 1; k++) {
printf("*");
}
printf("\n");
}
return 0;
}
```
该程序输出如下:
```
*
***
*****
*******
*********
*******
*****
***
*
```
#### 计算完数
“完数”是指一个数恰好等于它的所有因子之和,例如6是一个完数,因为6 = 1 + 2 + 3。以下程序可以计算2000以内的所有完数。
```c
#include <stdio.h>
int main() {
for (int i = 1; i <= 2000; i++) {
int sum = 0;
for (int j = 1; j < i; j++) {
if (i % j == 0) {
sum += j;
}
}
if (sum == i) {
printf("%d\n", i);
}
}
return 0;
}
```
该程序输出如下:
```
6
28
496
8128
```
#### 逆序输出数字
输入一个数字,逆序输出其数字。如果输入的数字超过`int`的取值范围,则输出0。
```c
#include <stdio.h>
#include <limits.h>
int main() {
int n, sum = 0;
printf("请输入一个数:");
scanf("%d", &n);
if (n < INT_MIN || n > INT_MAX / 10) {
printf("0\n");
return 0;
}
while (n != 0) {
int ys = n % 10;
n = n / 10 % 10;
sum = sum * 10 + ys;
}
printf("逆序数字是%d\n", sum);
return 0;
}
```
如果输入为`1023456789`,则输出为:
```
逆序数字是9876543201
```
阅读全文
相关推荐


















