有一个数列,它的第一项为1,第二项为2,第三项为3,以后每一项都等于它的前三项之和。使用一维数组编程实现功能:计算该数列的前20项并赋值给数组,然后以逆序方式输出,每一行5个数据。
#include<stdio.h>
int main()
{
int i;
int a[20] = { 1, 2,3,0 };
for(i = 2; i < 20; i++);
a[i] = a[i-3]+a[i - 2] + a[i - 1];
for (i = 20; i>0; i+=-1);
{
if (i % 5 == 0)
printf("\n");
printf("%12d", a[i]);
}
printf("\n");
return 0;
}
哪里出错了?生成解决方案没错为什么运行不了?
为什么是a[19],我看书上有条例题算20个也是a[20]啊
追答因为你定义的是a[20],是a[0]~a[19],望采纳!
追问运行之后不是每一行5个啊
追答那肯定了,你在这块进行了选择i%5==0,就是只输出i是5的倍数的a[i]
if (i % 5 == 0)//再此加{}
{
printf("\n");
printf("%12d", a[i]);
}
你试一下你写的,只显示了一组
追答你是想把20个数据都显示出来吗?
那你把这块改成这样就可以了
printf("%12d", a[i]);
if (i % 5 == 0)
printf("\n");
望采纳!
怎么换了位置输出就不同了?
追答printf("%12d", a[i]);
if (i % 5 == 0)
printf("\n");
因为i是从19开始的,输出a[19],a[18],a[17],a[16],a[15]换行。
if (i % 5 == 0)
printf("\n");
printf("%12d", a[i]);
输出a[19],a[18],a[17],a[16],到a[15]时先换行在输出。
这就是这两个位置不同,输出不同的原因。
望采纳!