卆卌 2023-05-26 17:01 采纳率: 100%
浏览 23
已结题

我自己检查了几遍代码未发现错误,但程序运行没有输出,如何解决?

头歌上的C语言训练题。我自己检查了几遍代码未发现错误,但程序运行没有输出。望指正。

img

#include<stdio.h>
int x(int n)
{
    int sum=0;
    for(int j=1;j<n/2;j++)
        if(n%j==0)
            sum+=j;
    return sum;
}
void solve(){
    /*********Begin*********/
int a,b;
for(int i=1;i<=3000;i++){
    a=x(i),b=x(a);
    if((i==b)&&(i<a))
        printf("(%d,%d)",i,a);
}
    

    /*********End**********/ 
}
int main(void)
{  
    solve();
    return 0;
}


  • 写回答

3条回答 默认 最新

  • qzjhjxj 2023-05-27 12:47
    关注

    问题在 int x(int n) 求因子和的函数里,因子计算里少循环一次,修改如下,改动处见注释,供参考:

    #include<stdio.h>
    int x(int n)
    {
        int sum=0;
        for(int j=1;j<=n/2;j++) //for(int j=1;j<n/2;j++) 修改
            if(n%j==0)
                sum+=j;
        return sum;
    }
    void solve(){
        /*********Begin*********/
    int a,b;
    for(int i=1;i<=3000;i++){
        a=x(i),b=x(a);
        if((i==b)&&(i<a))
            printf("(%d,%d)",i,a);
    }
    
    
        /*********End**********/
    }
    int main(void)
    {
        solve();
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月12日
  • 已采纳回答 6月4日
  • 创建了问题 5月26日