m0_74474036 2022-11-13 15:59 采纳率: 94.4%
浏览 30
已结题

如何定义不定长度的数组

定义了数值a用来储存每位数字,但因输入的数字不确定,数组a的长度就不确定了
再请问代码哪里写错了,怎么答案不对啊

 

img

  • 写回答

2条回答 默认 最新

  • a5156520 2022-11-14 14:18
    关注

    应该是因为判断数字是否为完全平方数又至少有两个数字相同的判断分支else错了,把这个esle分支的return 0放到函数结尾即可,因为是需要判断数组里的每个元素,所以需要让整个双层for循环遍历完所有数组元素才能判断是否需要返回0,即此数不满足条件要等循环完成才能判断,修改如下:

    #include <stdio.h>
    #include <math.h>
    
    int isTheNumber(const int N);
    
    int main(void){
        
        int n1,n2,i,cnt;
        
        scanf("%d %d",&n1,&n2);
        
        cnt = 0;
        for(i=n1;i<=n2;i++){
            if(isTheNumber(i))
                cnt++;
        }
        
        printf("cnt= %d\n",cnt);
        
        return 0;
    }
    
    int isTheNumber(const int N){
        
        int n=N;
        int i=0;
        int a[10];
        int x=(int)sqrt(N);
        while (n>=10){
            a[i]=n%10;
            n=n/10;
            i++;
        }    
        a[i]=n;
        
        
    //    FILE * fp = fopen("perfectNumber.txt","a+");
    //    fprintf(fp,"数组a的元素逆序打印为:");
    //
    //    for(int j=i;j>=0;j--){
    //        fprintf(fp,"%d ",a[j]);
    //    //    printf("%d",a[j]);
    //    }
    ////    printf(" ");
    //    fprintf(fp,"\n");
    //    fclose(fp);
        
    //    if(x*x==N){
    //        printf("perfectNumber=%d\n",N); 
    //    }
        
        for(int b=0;b<i;b++){
            for(int c=b+1;c<=i;c++){
                if(a[b]==a[c]&&x*x==N){
                    //printf("N=%d\n",N);
                    return 1;
                }
            }
        }
        
        return 0;
    }
    
    

    img

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

报告相同问题?

问题事件

  • 系统已结题 11月23日
  • 已采纳回答 11月15日
  • 创建了问题 11月13日

悬赏问题

  • ¥15 python怎么在已有视频文件后添加新帧
  • ¥20 虚幻UE引擎如何让多个同一个蓝图的NPC执行一样的动画,
  • ¥15 fluent里模拟降膜反应的UDF编写
  • ¥15 MYSQL 多表拼接link
  • ¥15 关于某款2.13寸墨水屏的问题
  • ¥15 obsidian的中文层级自动编号
  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
  • ¥15 神经网络模型一直不能上GPU
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵