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
答案 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;
}