用c语言程序 要求:输出形状为等腰三角形。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1
要求:输出形状为等腰三角形。11112113311464115101051...
要求:输出形状为等腰三角形。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1 展开
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1 展开
1个回答
展开全部
#include <stdio.h>
#include <string.h>
int main()
{
int i,j;
int line;
printf("input the line number:\n");
scanf("%d",&line);
int num[line][line*2];
memset(num,0,sizeof(num));
num[0][line-1] = 1;
for(i=1; i<line; i++)
{
for(j=0; j<(line*2-1); j++)
{
if(j == 0)
{
num[i][j] = num[i-1][j+1];
continue;
}
if(j == (line*2-1))
{
num[i][j] = num[i-1][j-1];
continue;
}
num[i][j] = num[i-1][j-1] + num[i-1][j+1];
}
}
for(i=0; i<line; i++)
{
for(j=0; j<(line*2-1); j++)
{
if(num[i][j] == 0)
{
printf(" ");
}else
{
printf("%d",num[i][j]);
}
}
printf("\n");
}
return 0;
}
编译通过,运行也没有问题。不知道你是什么样的环境,GNU C支持用变量定义数组大小,标准C是不支持的。。。如果不支持你就定义一个固定大小的数组,稍微大点,那么当行数不是太大时都可以支持的。。。。
#include <string.h>
int main()
{
int i,j;
int line;
printf("input the line number:\n");
scanf("%d",&line);
int num[line][line*2];
memset(num,0,sizeof(num));
num[0][line-1] = 1;
for(i=1; i<line; i++)
{
for(j=0; j<(line*2-1); j++)
{
if(j == 0)
{
num[i][j] = num[i-1][j+1];
continue;
}
if(j == (line*2-1))
{
num[i][j] = num[i-1][j-1];
continue;
}
num[i][j] = num[i-1][j-1] + num[i-1][j+1];
}
}
for(i=0; i<line; i++)
{
for(j=0; j<(line*2-1); j++)
{
if(num[i][j] == 0)
{
printf(" ");
}else
{
printf("%d",num[i][j]);
}
}
printf("\n");
}
return 0;
}
编译通过,运行也没有问题。不知道你是什么样的环境,GNU C支持用变量定义数组大小,标准C是不支持的。。。如果不支持你就定义一个固定大小的数组,稍微大点,那么当行数不是太大时都可以支持的。。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询