2401_84401465 2024-06-04 23:03 采纳率: 71.4%
浏览 3
已结题

我的程序错在哪里?题mu是输入一个正整形多位数,取其后五位数,判断后五位数是否是一个回文数(回文数就是从左往右读跟从右往左读都是一样的,例如12521

下面是我的代码,编译通过但运行错误




int fun(int cnt,int n);
int main()
{
    int n;
    scanf("%d",&n);
    int t;
    t=n;
    int g,s,q,w;
    int cnt=0;
    while(n!=0)
    {
        n=n/10;
        cnt++;
    }
    
    n=t;
    n=fun(cnt,n);
    w=n/10000;
    q=(n-w*10000)/1000;
    g=n%10;
    s=((n%100)-g)/10;
    if(w==g&&q==s)
    printf("this number is a huiwen");
    else
    printf("this number is not a huiwen");
    return 0;
}
int fun(int cnt,int n) 
/*只取多位数的最后五位数,例如对165156取65156作为函数的
返回值*/ 
{
    int k=1;
    int i;
    for(i=1;i<=cnt;i++)
    {
        k*=10;
    }
    int x;
    x=n/k;
    n=n-x*k;
    fun(--cnt,n);
    if(cnt==5)
    {
        return n;
    }
}
  • 写回答

3条回答 默认 最新

  • a5156520 2024-06-05 09:00
    关注

    将函数fun()修改下即可。

    修改如下:

    #include <stdio.h> 
     
    
    int fun(int cnt,int n);
    
    int main()
    {
        int n;
        scanf("%d",&n);
        int t;
        t=n;
        int g,s,q,w;
        int cnt=0;
        while(n!=0)
        {
            n=n/10;
            cnt++;
        }
        
        n=t;
        n=fun(cnt,n);
        //printf("n=%d\n",n);
        w=n/10000;
        q=(n-w*10000)/1000;
        g=n%10;
        s=((n%100)-g)/10;
        if(w==g&&q==s)
        printf("this number is a huiwen");
        else
        printf("this number is not a huiwen");
        return 0;
    }
    int fun(int cnt,int n) 
    /*只取多位数的最后五位数,例如对165156取65156作为函数的
    返回值*/ 
    {
    
        return n%100000;  // 使用求余运算符来求n的后五位数 
        
    }
    
    

    img

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

报告相同问题?

问题事件

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