发布网友
共4个回答
热心网友
你那个有点问题看这个
#include "stdio.h"
/* N:行数 */
void display(int N)
{
int i, j, m;
for(i=0; i<N; i++)
{
/* 输出每一行的前导空格 */
for(j=0; j<N-1-i; j++)
printf(" ");
/* 输出数字部分的前一半(0..i) */
for(j=0; j<=i; j++)
printf("%3d",j+1);
m=j-1;
/* 输出数字部分的后一半(0..i-1) */
for(j=0; j<i; j++)
printf("%3d",m--);
printf("\n");
}
}
void main()
{
int N;
printf("input rows : ");
scanf("%d", &N);
display(N);
}
运行如图
参考资料:参考http://zhidao.baidu.com/question/278019427.html
热心网友
#include <stdio.h>
void main()
{
int n,i,j;
printf("请输入行数:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=(n-i);j++) printf(" ");//这里有3个空格。
for(j=1;j<=i;j++) printf("%3d",j);
for(j=i-1;j>=1;j--) printf("%3d",j);
printf("\n");
}
}
热心网友
j<(2n-1)改成j<(2*n-1)
看了半天终于发现了,你的算法有问题。数字应该是从1输出到行数再输出回1,你怎么想的?
3L正解
热心网友
你这个i就没有赋值啊?坑定有错误啊追问for(i=1;i<=n;i++)
赋了初值的啊
追答终于给你改好了,第三个for语句错误,首先第三个for语句输出不是到2n-1 ,而是到n+i-1,还有输出的是n+i-j,呵呵,看了好久啊。真不容易
#include
void main()
{
while(1)
{
int n,i,j;
printf("请输入行数:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=(n-i);j++) printf(" ");
for(j=n-i+1;j<=n;j++) printf("%d",i+j-n);
for(j=n+1;j<=n+i-1;j++) printf("%d",n+i-j);
printf("\n");
}
}
}