【C语言】数组问题

有一个数列,它的第一项为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;
}
哪里出错了?生成解决方案没错为什么运行不了?

修改之后的
#include<stdio.h>
int main()
{
int i;
int a[20] = { 1, 2,3,0 };
for(i = 3; i < 20; i++)//不能在这加;号并且i从3开始
a[i] = a[i-3]+a[i - 2] + a[i - 1];
for (i = 19; i>=0; i+=-1)//a[20]越界了 从a[19]开始
{
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]时先换行在输出。
这就是这两个位置不同,输出不同的原因。
望采纳!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-01-14
你的程序时计算斐波那契数列的。。
f[i]=f[i-2]+f[i-1];就是一个通式。。
就是数组的赋值运算。。也就是f[i-2]+f[i-1]的值然后赋给f[i]。。。
有问题直接qq我
第2个回答  2019-04-15
b错。行数和列数不对应。
a已经赋值了初始化了。所以可以的
C已经赋值了。所以可以的
D,不够的值自动默认为0
第3个回答  2019-05-26
B错误,X【2】【3】应该是2行3列,即
1
2
3
4
5
6
不应是3行2列
A:中给出的0
是X[0][0]的数值;
C:中C语言中会自动确定

数为2;
D:给出数自的顺序

X[0][0]
X[0][1]....顺序一一对应。
第4个回答  2014-11-29
for(i = 2; i < 20; i++);
这个地方把=2换成=3
相似回答