qq_33918988 2016-02-03 02:19 采纳率: 0%
浏览 1428

程序运行异常 c语言小问题 求助

想写一个求大数的斐波那契的程序,需要数组来实现进位,然后进位条件那(就是for循环的条件那里)有问题 ,改一下(改成c!=0或改成a[i-1][j]!=0||a[i-2][j]!=0,合起来就不对了)就可以正常运行,想问下现在这样写有什么问题吗?

#include
#include

const int A=10000;
int a[1000][10];

int main()
{
int n,i,j,c,cc;
memset(a,0,sizeof(a));
a[0][0]=a[1][0]=1;
for(i=2; i {
c=0;
for(j=0; c!=0||a[i-1][j]!=0||a[i-2][j]!=0 ; j++)//进位条件
{
a[i][j]=(a[i-1][j]+a[i-2][j]+c)%A;
c=(a[i-1][j]+a[i-2][j]+c)/A;
}
}
while(~scanf("%d",&n))
{
for(i=0; a[n-1][i]!=0; i++) {}
i--;
cc=i;
for(; i>=0; i--)
if(i==cc)
printf("%d",a[n-1][i]);
else
printf("%05d",a[n-1][i]);
printf("\n");
}
return 0;
}

  • 写回答

1条回答

  • 林深 2016-02-03 03:23
    关注

    c!=0与a[i-1][j]!=0||a[i-2][j]!=0 不同时满足的话,你合在一起当然不会跳出循环啦,如果你要满足其一就可以结束for循环的话,那么可以判断条件:c!=0 && a[i-1][j]!=0&&a[i-2][j]!=0 ,表明的是当c==0、a[i-1][j]==0,a[i-2][j]==0同时满足的时候继续for循环,否则只要有一项不满足条件就跳出循环。

    评论

报告相同问题?

悬赏问题

  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM