不会有人不吃香菜吧 2021-10-19 06:24 采纳率: 73.7%
浏览 37
已结题

c语言:请看看这段代码为什么编译出错

/* 本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。*/
 #include <stdio.h>
 #include <math.h>
 int IsTheNumber ( const int N );
 int main()
 {
     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 b=N;
    int m=sqrt(b);
    int i,a[b],j;
    int cnt=0;
    if (m*m==b) {
        for (i=0; i<b; i++) {
            a[i]=b%10;
            b=b/10;
        }
        for (i=0; i<b; i++) {
            for (j=0; j<b; j++) {
                if (a[i]==a[j]){
                    cnt++;
                    if (cnt>1) {
                        return 1;
                    }
                }
            }
        }
    }
    else
        return 0;
}

只用看IsTheNumber函数部分就可以,编译器非要我给他一个返回值,但是我在if和else里已经给了他返回值

展开全部

  • 写回答

2条回答 默认 最新

  • 信仰869 2021-10-19 06:25
    关注

    第一个if没有返回值,你可以在第一个if中加返回值,也可以在函数末尾加默认返回值

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

    这道题是N是完全平方数并且有两位数字相同才可以返回1,不然就是0,所以返回值在三个if都符合的情况下加在了第三个if里,如果加在第一个if那就算不符合也返回1了

    回复
    信仰869 回复 不会有人不吃香菜吧 2021-10-19 06:33

    那你把else去掉,如果不返回1就返回0

    回复
    不会有人不吃香菜吧 回复 信仰869 2021-10-19 06:39

    懂了谢谢!但是提交后说部分答案错误,可以看下我的函数错在哪了吗

    回复
    展开全部4条评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 10月26日
  • 已采纳回答 10月19日
  • 修改了问题 10月19日
  • 创建了问题 10月19日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部