酷代码 AI
菜单
服务商

C 语言实现:输入层数打印“剥洋葱”字母图形,附代码详解

以下是实现“剥洋葱”图形打印的C语言代码: ```c #include <stdio.h> int main() { int n; // 读取输入的层数 scanf("%d", &n); int size = 2 * n - 1; // 外层循环控制行数 for (int i = 0; i < size; i++) { // 内层循环控制列数 for (int j = 0; j < size; j++) { // 计算当前位置到中心的水平和垂直距离 int distX = (i < n)? i : size - i - 1; int distY = (j < n)? j : size - j - 1; // 取最小距离 int minDist = (distX < distY)? distX : distY; // 计算要打印的字符 char ch = 'A' + minDist; // 打印字符 printf("%c", ch); } // 换行 printf("\n"); } return 0; } ``` 代码说明: 1. 输入读取:通过`scanf`函数读取用户输入的图形层数`n`。 2. 图形大小计算:根据层数`n`计算图形的边长`size`,其值为`2 * n - 1`。 3. 双重循环:外层循环控制行数,内层循环控制列数。 4. 距离计算:对于每个位置`(i, j)`,计算其到图形中心的水平距离`distX`和垂直距离`distY`,并取两者中的最小值`minDist`。 5. 字符计算:根据`minDist`计算要打印的字符,字符为`'A' + minDist`。 6. 输出:打印字符,并在每行结束时换行。 复杂度分析: - 时间复杂度:$O((2n - 1)^2)$,因为需要遍历整个图形的每个位置。 - 空间复杂度:$O(1)$,只使用了常数级的额外空间。 ######[AI问答 | 488点数解答 | 2025-11-15 18:49:17]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]