主题:求各路高手帮忙。
mirkochou
[专家分:0] 发布于 2011-11-26 17:53:00
老师出了个题目,效果出来是:
1 1
222 121
33333 12321
4444444 1234321
三角形的数字顺序,求代码。
回复列表 (共3个回复)
沙发
chenwfeng [专家分:0] 发布于 2011-11-27 09:22:00
又是一道作业题
右边的那个是i-abs(j-i) i控制行,j控制列,其他的自己弄。左边那个太简单了,实在不想回答了。
板凳
羽翼灵动 [专家分:80] 发布于 2011-11-27 10:36:00
这种题是有规律可寻的。用n表示第n行,i表示每行共输出i个数据,j表示每行输出的数字有j个。
行数 总数数据(i) 数字(j)
1 4(3个空格加上一个数字1) 1
2 5 3
3 6 5
4 7 7
n 2*n-1
代码如下:
int n,i=4,j; //i初始话为4是因为有3个空格和一个数字"1"
for(n=1;n<=4;n++) //循环4行
{
for(j=1;j<=i;j++)
{
if(j<=i-2*n+1) //第n行有数字2*n-1,那么空格就有i-(2*n-1)个
printf(" ");
else
printf("%d",n); //输出数字
}
printf("\n");
i++; //每行输出的数据比上一行多1个
}
至于右边这个“三角形”没怎么看懂,我才是这么一个意思
1
1 2 1
1 2 3 2 1
同样的思路:
int n,i=4,j,m;
for(n=1; n<=4; n++)
{
for(j=1; j<=i-2*n+1; j++) //前i-(2*n-1)表示空格
printf(" ");
for(m=1; m<=2*n-1; m++)
printf("%d",n-abs(n-m));//输出数据,头文件是<stdlib.h>
printf("\n");
i++;
}
如果是这样的
1
1 2 1
1 2 3 2 1
尝试自己动手做。
3 楼
zxxdyx0124 [专家分:0] 发布于 2012-04-06 18:05:00
1
121
12321
1234321
的程序如下
#include<stdio.h>
void main()
{
int i,j,k,h;
for(i=1;i<5;i++)
{ for(j=1;j<=5-i;j++)
printf(" ");
for (k=1;k<i;k++)
printf("%d",k) ;
for (h=i;h>=1;h--)
printf("%d",h) ;
printf("\n");
}
}
我来回复