C语言问题!!输入一个整数,将它逆序输出。。例如reverse(123)的返回值是321

#include<stdio.h>
void main()
{
long n;
long reverse(long number);
printf("Enter an integer:");
scanf("%ld",&n);
printf("After reversed:%ld\n",_____(1)______);
}
long reverse(long number)
{
int flag;
___(2)_____;
flag=number<0 ? -1: 1;
if(__(3)____) number=-number;
while(number!=0){
res=_____(4)______;
number/=10;
}
return flag*res;
}

(1)A.reverse() B.n C.reverse(n) D.reverse
(2)A.res=0 B.long res C.long res=0 D.res
(3)A.number>0 B.number<0 C.number!=0 D.number==0
(4)A.number%10 B.res*10+number%10 C.number/10 D.res*10+number/10

选哪个呢??每步各是什么意思吗?要详细解答啊~非常感谢啦!

1、C 表示将输入的整数n传给reverse函数
2、C 表示定义一个long型变量res,并初始化
3、B 表示主函数(main)穿进来的值,如果为负数,则取反
4、B 倒置传入的参数number,res*10表示将原来res乘以10,再加上number%10;比喻说你传的是123,而res的初始值是0,123%10=3,那么res=3,第二次循环:由于123/10=12,所以res*10+number%10=30+2=32,第三次循环:12/10=1,所以res=res*10+number%10=320+1=321,第四次循环,number/10=0,结束循环,所以最后的res就是将传进来的值倒置之后的值。

这里给你分析了一下倒置的原理,望采纳!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-04
ccbb
(1)C 执行将数字变为逆序的函数
(2)C 声明变量res保存新数字的绝对值,res要初始化为0 。考虑到number为0的情况
(3)B 最后返回的是flag*res。flag已经保存了number的符号,所以当number小于0时,应该让他为正数
(4)B 每次循环的时候number%10得到的结果是number的最后一位数。number的最后一位数就是新数字的第一位数,所以还要加上res*10
第2个回答  2013-01-04
C C B B
(1)要调用reverse(n),获得返回值
(2)声明一个long变量res,作为倒置后的接收变量
(3)判断number是否大于0,如果小于0,取其相反数,得正
(4)倒置传入的参数number,放在res