求逆序的问题!!!(vc++)

来源:百度知道 编辑:UC知道 时间:2024/06/28 09:43:05
#include <stdio.h>
int reverse(int number);
int main (void)
{
int x;
scanf("%d",&x);
printf("%d\n",reverse(x));
}
int reverse(int number)
{
while(number!=0)
{
printf("%d",number%10);
number=number/10;
}
return 0;
}

对于这个程序最后一行的“return 0;”不加的话,它说要在主函数后加一个返回值。加了之后,本应输入123,输出321,它却输出3210.这是怎么回事啊!?该怎样解决啊??高手指点一下!!!

#include <stdio.h>
int reverse(int number);
int main (void)
{
int x;
scanf("%d",&x);
//printf("%d\n",reverse(x));//这里注释掉改成下面
reverse(x);
}
int reverse(int number)
{

while(number!=0)
{
printf("%d",number%10);
number=number/10;
}
return 0;
}
实际上你的这个函数返回值没什么用,定义成void即可。

1楼指出问题所在
我补充一下
因为你在main里面又printf了
所以当最后运行到最后一位时
printf("%d",number%10); 取余之后又运行了number=number/10;
得出了0.再在主程序里面运行了printf多出了一个0来.
明白否!

#include <iostream.h>
int reverse(int number);
void main (void)
{
int x;
cin>>x;
reverse(x);
}
int reverse(int number)
{
while(number!=0)
{
cout<<number%10;
number=number/10;
}
return 0;
}