你觉得这个图形,怎么样?好看吗? *...* .*.*. ..*.. .*.*. *...* 给定一个正整数n(n <= 50),请打印出一个n*n的一个这样的图形(两条对角线是*符号)。
时间: 2023-11-25 07:06:28 浏览: 116
这个图形看起来很有趣!要打印出一个n*n的这样的图形,可以使用两个嵌套的for循环来实现。具体代码如下:
```
#include <stdio.h>
int main() {
int n;
printf("请输入一个正整数n:");
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (i == j || i + j == n + 1) {
printf("*");
} else {
printf(".");
}
}
printf("\n");
}
return 0;
}
```
在这个代码中,我们首先输入一个正整数n,然后使用两个for循环来遍历每一个位置。如果当前位置在两条对角线上,就输出一个*号,否则输出一个.号。最后在每一行结束时输出一个换行符。
相关问题
C语言题目:题目描述 jingjing学长看了冬奥的开幕式,觉得冬奥的雪花十分好看,所以他打算使用递归算法自己编程来实现一个雪花。 提示 请仔细观察样例,尤其要注意空格的数量及位置。 输入 一个正整数 n (n< 30) 表示要求打印图形的递归深度。 输出 对应递归深度的雪花图案。 样例输入 1 样例输出 *。输出的每个*之间空一格。例如输入2有三行三列,输入3有9行9列
好的,这是一个关于递归的 C 语言题目。下面是代码实现:
```c
#include <stdio.h>
void snow(int n, int x, int y) {
if (n == 1) {
printf("* ");
return;
}
int m = n / 3;
for (int i = 0; i < n; i++) {
if (i >= m && i < 2 * m) {
if (x >= m && x < 2 * m)
printf(" ");
else
snow(m, x % m, y % m);
} else {
snow(m, x % m, y % m);
}
}
}
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
snow(n, i, j);
}
printf("\n");
}
return 0;
}
```
解释一下这个代码的实现思路:
首先定义一个 snow 函数,用于实现打印雪花的递归功能。函数参数包括当前递归深度 n,以及当前打印位置 x 和 y。
当 n 等于 1 时,直接输出一个星号,并返回。
否则,将当前图形分为 3*3 的九个小方块,中间的方块应该为空。遍历每个小方块,若当前位置在中间的方块内,则输出一个空格;否则递归调用 snow 函数,n 减小为原来的三分之一,并且当前位置变为当前小方块内部的坐标。
在 main 函数中,遍历每个位置,调用 snow 函数进行打印。注意,需要在每行结束时输出一个换行符。
至于如何保持每个星号之间的空格,是在 snow 函数中通过输出空格实现的。
阅读全文