请问怎样定义数组才能使其不错误?
对应以下实例
首先,提示用户:“您想计算斐波那契数列的项数(1~30):”,并将用户输入的数值存放到变量n中。
然后,判断用户输入数据是否正确,如果不正确则输出错误信息并终止程序运行。
接着,计算斐波那契数列的前n项,并存放到数组list中。
最后,输出计算结果,每个结果输出域宽为8,左对齐,每行最多输出5个结果(不能出现首行为空的情况)。
我找不到对应的确定值定义数组,请问该怎样处理?
供参考:
#include <stdio.h>
int main()
{
int i, n;
int list[31] = { 0 };
list[0] = 0;
list[1] = 1;
scanf("%d", &n);
if (n < 1 || n >30)
printf("input error!");
else {
for (i = 2; i <= n; i++)
list[i] = list[i - 1] + list[i - 2];
for (i = 1; i <= n; i++) {
printf("%-8d", list[i]);
if (!(i % 5) && i != n)
printf("\n");
}
}
return 0;
}
n的范围是1-30,数组大小定义为30就够了。int list[30]={1,1}
编程基础第六版 课后题
代码如下
#include <stdio.h>
#include <math.h>
int main()
{
int i,j,t;
int a[15];
int x,l,h,mid,n;
n=15;
l=0;
h=n-1;
printf("请输入15个不同数字,按一次输入一个,依次输入15次的方法输入数字:\n");
for(i=0;i<15;i++)
scanf("%d",&a[i]);
for(j=0;j<14;j++)
{
for(i=0;i<14-j;i++) //这里我第一次写也忽略了j要不断的去替换i,所以对于i来说它的循环条件应该是14-j,有好多人可能和我一样写成i<15啦
if( a[i]<a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
printf("按从大到小的排序结果:");
for( i=0;i<15;i++)
printf("%d\t",a[i]);
printf("\n");
for (l=0, h=14, printf("请输入一个数:"), scanf("%d", &x); l<=h;)//while也可以但是我很奇怪用while会提前退出循环哈哈哈
{
mid=(l+h)%2;
if (x>a[mid])h=mid-1;
else if (x<a[mid])l=mid+1;
else
{
printf("%d是第%d位数",x,mid+1);
break;
}
}
if(x!=a[mid])
printf("查无此数!");
return 0;
}