leoRui_ 2022-07-15 11:01 采纳率: 33.3%
浏览 29

一个pta上的问题,求解答

问题遇到的现象和发生背景 为什么在第十行那里会出现一个小红点呢?
问题相关代码,请勿粘贴截图
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int pre(int n);
main()
{
    int i,j,k,l;
    char n[1001],m[1001],s[1001];
    int A,B,C;
    scanf("%s",n);
    for(i=0;i<10;i++)
    {
        A=atoi(n);
        l=strlen(n)-1;
        for(j=0;j<strlen(n);j++)
        {
            m[l]=n[j];
            l--;
        }
        B=atoi(m);
        C=A+B;
        sprintf(s,"%d",C);
        if(pre(C))
        {
            printf("%s + %s = %s\n",n,m,s);
            printf("%s is a palindromic number.\n",s);
            break;
        }
        else
        {
            printf("%s + %s = %s\n",n,m,s);
           sprintf(n,"%d",C);//数字转字符串
        }
    }
    if(i>=10)
        printf("Not found in 10 iterations.\n");
}
int pre(int n)
{
    int i,j=0,a[1001],flag=1;
    if(n==0)
        return 1;
    else
    while(n!=0)
    {
        a[j]=n%10;
        n=n/10;
        j++;
    }
    for(i=0;i<j/2;i++)
    {
        if(a[i]!=a[j-1])
        {flag=0;
        break;}
        j--;
    }
    if(flag==1)
        return 1;
    else
        return 0;
}

运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-07-15 12:47
    关注

    修改见注释,供参考:

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    int pre(int n);
    int main()
    {
        int i, j, k, l;
        char n[1001], m[1001], s[1001];
        int A, B, C;
        scanf("%s", n);
        for (i = 0; i < 10; i++)
        {
            A = atoi(n);
            l = strlen(n) - 1;
            for (j = 0; j < strlen(n); j++)
            {
                m[l] = n[j];
                l--;
            }
            m[strlen(n)] = '\0';  //修改
            B = atoi(m);
            C = A + B;
            sprintf(s, "%d", C);
            if (pre(C))
            {
                printf("%s + %s = %s\n", n, m, s);
                printf("%s is a palindromic number.\n", s);
                break;
            }
            else
            {
                printf("%s + %s = %s\n", n, m, s);
                sprintf(n, "%d", C);//数字转字符串
            }
        }
        if (i >= 10)
            printf("Not found in 10 iterations.\n");
        return 0;
    }
    int pre(int n)
    {
        int i, j = 0, a[1001], flag = 1;
        if (n == 0)
            return 1;
        else
            while (n != 0)
            {
                a[j] = n % 10;
                n = n / 10;
                j++;
            }
        for (i = 0; i < j / 2; i++)
        {
            if (a[i] != a[j - 1])
            {
                flag = 0;
                break;
            }
            j--;
        }
        if (flag == 1)
            return 1;
        else
            return 0;
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 7月15日

悬赏问题

  • ¥15 远程访问linux主机超时
  • ¥15 odoo17存货管理优势于中国国内该行业传统ERP或MES的详细解读和举例
  • ¥15 CPU卡指令整合指令数据都在图片上
  • ¥15 火车票关联12306问题
  • ¥15 odoo17处理受托加工产品
  • ¥15 如何用MATLAB编码图三的积分
  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES
  • ¥15 结构功能耦合指标计算