XXYx1 2023-11-20 19:34 采纳率: 66.7%
浏览 4
已结题

c语言中乘法口诀数列循环遍历问题

int main()
{
    int n,a1,a2;
    int a[1000];
    scanf("%d %d %d",&a1,&a2,&n);
    a[0]=a1;
    a[1]=a2;
    int i,sum,j=2;
    while(j<n){
    for(i=0;i<n;i++){
        sum=a[i]*a[i+1];
        if(sum/10==0){
            a[j++]=sum;
        }
        else{
            a[j++]=sum/10;
            a[j++]=sum%10;
        }
    }
    }
    for(i=0;i<n;i++){
        printf("%d",a[i]);
        if(i!=n-1){
            printf(" ");
        }
    }
    return 0;
}

这个代码会运行时错误,如果我把while(j<n){for(i=0;i<n;i++)}换成for(i=0;j<n;i++)就对了,这两个代码有什么区别吗?
而且,难道一个for循环中不是只能有一个变量吗?

img

  • 写回答

1条回答 默认 最新

  • 思达不达 2023-11-21 00:52
    关注

    当n为1000,for循环到i等于999时,j可能已经很大了,此时访问a[j++]会数组越界。如果非要写双层循环,可以试着在for中加个如果j>=n则break的处理。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 11月29日
  • 已采纳回答 11月21日
  • 创建了问题 11月20日