我的程序反转给定的整数有什么问题?

时间:2016-06-20 08:47:51

标签: c

Codechef不接受以下代码。任何人都可以告诉我它有什么问题,因为我无法指出任何错误吗?

//This program reverses a given integer.

#include<stdio.h>

int main(void)
{
    int t,n,l;

    scanf("%d",&t);

    while(t--){
        scanf("%d",&n);

        while(n>0){
          l=n%10;
          n=n/10;
          printf("%d",l);
        }

        printf("\n");
    }


    return 0;

}

t不是。测试用例 n是输入整数 l是一个随机变量,用于完成打印作业。

该程序只能反转正整数。

Example:- Input - 1234   
          Output - 4321  

2 个答案:

答案 0 :(得分:0)

我明白了。您不得打印不重要的&#39; 0&#39;。例如1230给出321。这是我的工作代码:

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

/* strrev reverses a given string */
char *strrev(char *str)
{
    char    tmp;
    size_t  i = 0,
            len = strlen(str);

    for (; i < len / 2 ; ++i)
    {
        tmp = str[i];
        str[i] = str[len - i - 1];
        str[len - i - 1] = tmp;
    }
    return str;
}

int main(void)
{
    char    buff[32],
            *s;
    size_t  i,
            len;

    scanf("%zu", &len);
    for (i = 0 ; i < len ; ++i)
    {
        scanf("%s", buff);
        s = strrev(buff);
        while (*s == '0')
            ++s; /* discarding '0' */
        printf("%s\n", s);
    }
    return EXIT_SUCCESS;
}

答案 1 :(得分:0)

试试这段代码(我同意molbdnilo的评论):

//This program reverses a given integer.

#include<stdio.h>
#include <math.h>

int main(void)
{
    int i,j,t,n,l,r = 0;
    char d[1024]; // stock digits

    scanf("%d",&t);

    while(t--){
        scanf("%d",&n);
        i = 0;
        while(n>0){
          l=n%10;
          n=n/10;
          d[i] = l;
          i++;
        }

        for(j=0;j<i;j++)
            r+= d[i-j-1] * pow(10,j); // r is the reversed number
        printf("%d\n",r);
    }


    return 0;

}