Avenir_し 2025-04-19 16:54 采纳率: 98%
浏览 14
已结题

数组问题有些错误求解决

img

img

img

img


这个是出现什么问题了,有些就是对的,但是那个31的那个输出到一的时候就没我停止,这个应该怎么修改一下呢

  • 写回答

4条回答

  • a5156520 2025-04-19 19:42
    关注

    根据平台提示,应该是数组越界了,即输入的正整数n的变化数字序列的个数超出了数组a的长度,所以将数组a的大小定义为一个较大的值即可,比如1000。

    修改如下:

    #include <stdio.h>
    
    int main(void){
        
        // 根据提示,应该是当输入的正整数n的数字变化序列的个数,超出了数组a的长度,导致数组越界了
        // 所以,可以将数组a的大小定义为一个较大的值,比如1000 
        int n,a[1000],i=1,count=0;
        
        scanf("%d",&n);
        a[0]=n;
        
        while(n!=1){
            
            if(n%2==1)
                n=n*3+1;
            else 
                n=n/2;
            a[i]=n;
            i++;
            count++;
            
        }
        
        for(int j=count;j>=0;j--){
            printf("%d ",a[j]);
        }
        
        return 0;
        
    } 
    
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月27日
  • 已采纳回答 4月19日
  • 创建了问题 4月19日