预定程序员 2023-08-04 16:09 采纳率: 65.9%
浏览 7
已结题

openjudge 1.5数字反转题提交显示错误,C语言问题

问题:在openjudge上运行错误,但是看不出代码哪里有问题?在Devc++上也能运行

描述
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。

输入
输入共 1 行,一个整数N。

-1,000,000,000 ≤ N≤ 1,000,000,000。
输出
输出共 1 行,一个整数,表示反转后的新数。
样例输入
样例 #1:
123

样例 #2:
-380
样例输出
样例 #1:
321

样例 #2:
-83

#include<stdio.h>
#include<math.h>
int main()
{
    long n;
    scanf("%ld",&n);
    if(n==0)
    {printf("%d",n);}
    else
    {
        if(n%10==0)
        {n/=10;}
        while(n)
        {
            printf("%d",n%10);
            n/=10;
            if(n<0)
            {
                n=-n;
            }
        }
    }
    return 0;
}
  • 写回答

2条回答 默认 最新

  • qzjhjxj 2023-08-04 16:25
    关注

    用int 型就满足题目要求,修改如下,供参考:

    #include <stdio.h>
    #include <math.h>
    int main()
    {
        int  n, k = 0, flg = 1;   // 修改
        scanf("%ld", &n);
        if (n == 0)
        {
            printf("%d", n);
        }
        else
        {
            if (n < 0){
                n = -n;
                flg = -1; // 修改
            }
            //if (n % 10 == 0)
            //{
            //    n /= 10;
            //}
            while (n)
            {
                k = k * 10 + n % 10;
                //printf("%d", n % 10);
                n /= 10;
            }
            printf("%d", k * flg);
        }
        return 0;
    }
    
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月19日
  • 创建了问题 8月4日