C语言编程,用键盘输入一个正数N,输出2N+1行的空心菱形

例如输入N=3,输出... 例如输入N=3,输出 展开
 我来答
空雪梦见
2013-12-01 · TA获得超过5596个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1145万
展开全部
#include <stdio.h>
/* 能输出n个空格的函数 */
void repspace(int n) {
  if (n == 0) return;
  putchar(' ');
  repspace(n-1);
}
/* b:第一个数字前有几个空格 a:第一个数字后有几个空格 */
/* e:输出到第几行为止 low:0代表输出的是上面那行,1代表是下面那行 */
void prline(int b, int a, int n, int e, int low) {
  repspace(b);
  putchar('0'+n);
  if (a > 0) {
    repspace(a);
    putchar('0'+n);
  }
  putchar('\n');
  if (low == 1) return;
  if (e == n) return;
  if (low == 0)
    prline(b-1, a+2, n+1, e, 0);
  prline(b, a, n, e, 1);
}
void pr(int n) {
  prline(n, -1, 1, n+1, 0);
}
int main()
{
  int n;
  scanf("%d", &n);
  pr(n);
  return 0;
}

可以知道每行有两个数值,在第一个数字的“前面有几个空格”和“后面有几个空格”。如果后面大于0个空格,就说明数字要输出两个(一前一后)

然后还有一上一下,现在输出了 2 2 等会儿还要 2 2,这样的结构,呃,

我感觉我是不是又写天书一样的代码出来了

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式