C语言 求教高手 用二维数组打印出以下三角(注意空格!!

我要二维数组的!!!!!!

第1个回答  2011-04-13
#include <iostream>
using namespace std;

int number(int a,int b)//求得第n行第k列的数据
{
int c=1,d;
for(d=a;d>0;--d)
c=c*d;
for(d=a-b;d>0;--d)
c=c/d;
for(d=b;d>0;--d)
c=c/d;
return c;
}

int main()
{
int n,k,m=30,i;//声明变量
for(n=0;n<=12;++n)//对行数进行循环
{
for(i=m-n;i>=0;--i)
cout<<' ';
for(k=0;k<=n;++k)//对列数进行循环
{
cout<<number(n,k);//输出数据
cout<<' ';
}
cout<<endl;
}
return 0;
}
可以打印到第12行,你自己可以改变。追问

额……麻烦你用 二维数组 做一个呗

追答

抱歉,刚开始没有注意……实际上,改用二维数组也不难,只要把C值改用二维数组存储起来就可!鉴于别人已经帮你写好了,我就不再帮忙了……

第2个回答  2011-04-13
#include<stdio.h>
#define Test 10
int main()
{
int test[Test][Test];
int i,j,k;
for(i=0;i<Test;i++)
{
test[i][0]=1;
test[i][i]=1;
}

for(j=1;j<Test-1;j++)
for(k=1;k<j+1;k++)
test[j+1][k]=test[j][k-1]+test[j][k];
for(k=0;k<Test;k++)
{

for(i=k;i<Test-1;i++)
printf(" ");
for(j=0;j<k+1;j++)
{
printf("%2d",test[k][j]);
if(j!=k)
printf(" ");
}
printf("\n");
}
return 0;
}
第3个回答  2011-04-16
for(i=0;i<5;i++)
for(j=0;j<11;j++)printf("%d",a[i][j]);
a[][] 中定义你的输出内容
第4个回答  2011-04-13
没看到是二维数组,帮修改下
#include <stdio.h>
#define N 13
int main()
{
int i;
int j;
int a[N][N];

for (i = 0; i < N; i++)
{
a[i][0] = 1;
a[i][i] = 1;
}

for (i = 2; i < N; i++)
for (j = 1; j < i; j++)
a[i][j] = a[i-1][j-1] + a[i-1][j];

for (i = 0; i < N; i++)
{
for (j = 0; j < (N * 3 - 3 * i); j++)
printf(" ");

for (j = 0; j <= i; j++)
printf("%-6d", a[i][j]);

printf("\n");
}

return 0;
}追问

编译有1个错:fatal error C1004: unexpected end of file found

追答

哦,忘记了,我这是VC

追问

我用的是VC++6.0

追答

请注意加上#include "stdafx.h" 这样就能编译过了
如果用vc的console application的话,写法如下
#include "stdafx.h"
#include "stdio.h"

#define N 13

void _tmain(int argc, _TCHAR* argv[])
{

int i;
int j;
int a[N][N];

for (i = 0; i < N; i++)
{
a[i][0] = 1;
a[i][i] = 1;
}

for (i = 2; i < N; i++)
for (j = 1; j < i; j++)
a[i][j] = a[i-1][j-1] + a[i-1][j];

for (i = 0; i < N; i++)
{
for (j = 0; j < (N * 3 - 3 * i); j++)
printf(" ");

for (j = 0; j <= i; j++)
printf("%-6d", a[i][j]);

printf("\n");
}
scanf("%d");

}

本回答被提问者采纳
相似回答
大家正在搜