C语言写函数fun求一个整数的逆序数,在main中输入两个整数,求其逆序数之和并输出。如输入32 -71 输出6

#include <stdio.h>
int fun(int num);
void main( )
{
int x,y,sum;
sum=0;
printf("请输入两个整数:");
scanf("%d%d",&x,&y);
sum=fun(x)+fun(y);
printf("sum=%d\n",sum);
}
int fun(int num)
{
int a,b;
a=0;
while (num!=0)
{
b=num%10;
a=a*10+b;
num=num/10;
}
return a;
}
答案是这样的,求大神告诉我子函数的a,b是什么,还有num为什么不等于0,最好在子函数里给注析。还有main函数的sum=fun(x)+fun(y)又是什么意思,我记得我平时调用不是这样子的

#include <stdio.h>
int fun(int num);
void main( )
{
int x,y,sum;
sum=0;
printf("请输入两个整数:");
scanf("%d%d",&x,&y);
sum=fun(x)+fun(y); %因为fun()函数有返回值,这里相当于将两个返回值相加
printf("sum=%d\n",sum);
}
int fun(int num)
{
int a,b; %定义 a,b变量
a=0;
while (num!=0) %判断循环的结束条件 此处num以两位数为例
{
b=num%10; %对10取余,即求出num的个位数赋值给b
a=a*10+b;
num=num/10; %将num的末位数去掉
}
return a;
}追问

b=num%10; %对10取余,即求出num的个位数赋值给b
a=a*10+b;
比如num=32,b就=2,前面不是int a=0吗,a=a*10+b又是什么意思

追答

原程序中并没int a =0;
int a =0 是对a初始化 int a ; a = 0;是对a赋值,不过这里并没有影响。
a是变量 ,当然可以 a = a*10+b “=”这个符号是赋值运算符。

追问

你告诉我num ,a ,b分别是什么意思,num是指前面的X,Y吗?我要知道num ,a,b 是什么意思我就懂了

追答

好的,在主函数中 sum = fun(x)+fun(y)
在这句话中调用了两次fun()函数
我们再来看 int fun(int num)

num是fun()函数的形参 ,即是前面的x和y。
a,b则是fun()函数中的局部变量。每次调用fun()函数都会重新定义。
第一次调用fun(x)
里面的num = x ;
刚开始 a = 0;
进入 while 循环后
b先等于 num即x的各位数 并把b给a;
第二次while循环 b等于num 的十位数,再给a,从而实现逆序数。
当fun(x)结束后
调用fun(y)
此时同理fun(x);

在int fun(int num)中 ,局部变量a,b在一次fun()函数结束后就会被释放,所以
fun(x)和fun(y)中的a,b。是相对独立的,不会有影响

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-04-25
b是个位数,num每次循环去掉一个个位数,直到num变为0。
a是逆序数。
sum=fun(x)+fun(y);
是在表达式里调用函数。
当然也可以写成:
int t1=fun(x);
int t2=fun(y);
sum=t1+t2;但是这样效率低些。