问题描述
- C语言输入不会,求指教
-
按如下图形打印杨辉三角,其特点是两个腰上的数都为1,其他位置上的每一个数是它上一行相邻两个整数之和。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
.
.
.Input
包含多组数据。每组数据占一行。
输入n(0 < n <= 20)表示输出杨辉三角的行数。
Output
对于每组测试数据,输出n行杨辉三角。
格式要求:
每个数字宽6个字符。请使用 printf("%-6d", a);
每行末尾无空格。
Sample Input
5
Sample Output
1 1 1 1 2 1
1 3 3 1
1 4 6 4 1
解决方案
不需要输入的 直接输出
#include
#define N 11
void main()
{int i,j,a[N][N];
for(i=1;i<N;i++)
{a[i][i]=1;
a[i][1]=1;
}
for(i=3;i<N;i++)
for(j=2;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=1;i<N;i++)
{for(j=1;j<=i;j++)
printf("%6d",a[i][j]);
printf("n");
}
}
解决方案二:
囧,这个网上到处都有,而且貌似谭浩强的C教程上就有
http://jingyan.baidu.com/article/fea4511a1f454df7bb9125cd.html
解决方案三:
输出一组的,网上确实有很多代码。如果修改为可以输出多组的呢?
1) 使用的数组按最大的维数定义,如20;或使用指针动态分析以满足维数变化的要求、
2) 使用 scanf 等完成维数的输出,再加上一个循环用于多组。
输出一组已经有了,按以上思路修改难度不大。
解决方案四:
是要前部输入完再输出答案,还是输入一个行数就输出一组答案然后继续接受输入?
如果是第二种可以
while(scanf(%d,&num)!=EOF)
{...}
第一种自己申请个数组循环接收
解决方案五:
- 下面的程序经过vs2008验证通过
#include
void main()
{int i=0,j=0,n=0,m=0;
printf("请输入一个整数n");
scanf("%dn",&n);for (i=1;i<=n;i++)
{
m=1;
for (j=1;j<i;j++)
{
printf("%d",m);
m=m*(i-j)/j;
}
printf("%dn",m);
}
}