一个关于求数字中位数全倒的C语言问题,似乎是有非常巧妙的思路。麻烦大家帮帮我!谢谢

从键盘任意输入任意一个正整数,编程计算并输出他的逆序数,输入的数据必须要验证合法性(即输入的是负数,就重新输入)。例如,输入-1234,则忽略负号,并输出4321;输入12,输出21。

输入提示信息:“input x:”

输出格式:“y = %d\n”

只给你中间逆序的思路代码
不考虑越界问题,输入输出格式、判断合法性,估计你自己应该能完成
int a,b=0;
scanf("%d",&a);
abs(a);
while(a)
{
b=b*10+a%10;
a/=10;
}
这样b就是a的逆序数了

要是很大的数,这个只能用字符串来解决,代码更简单。三个字符串函数解决
就是判断合法性麻烦一点
char a[1000];
int i;
while(1)
{
gets(a);
for(i=0;a[i];i++)
if(!(a[i]>='0'&&a[i]<='9'))
{
printf("error")
break;
}
if(i==strlen(a))
break;
}
strrev(a);
puts(a);
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-11
#include <stdio.h>
void main()
{
char c;
char stack[100];
int i;
printf("输入:");
while(1){
i=0;
fflush(stdin);
do
{
c = getchar();
if(c >='0' && c <= '9')stack[i++]=c;
else
{
if(i==0&&(c=='-'||c=='+'))
{
;
}
else break;
}
}while(c!='\n');
if(c=='\n')break;
else printf("重新输入:");
}
i=i-1;
for(; i>=0; i--)
{
printf("%c",stack[i]);
}
}
第2个回答  2012-04-11
int Get(int a)
{
int b = abs(a);
int c = 0;
while(b>0)
{
c = c*10+b%10;
b = b/10;
}
return c;
}

整数int的取值范围:-2G~2G,不需要字符串
相似回答