问题
问答题
[说明2]
在C函数2中,reverse(unsigned int n)的功能是求出并返回n的反序数。例如,1234的反序数是4321,其求解过程如下:
(1)由1234除以10得到商123和余数4,0乘以10再加上4得到4;
(2)由123除以10得到商12和余数3,4乘以10再加上3得到43;
(3)由12除以10得到商1和余数2,43乘以10再加上2得到432;
(4)由1除以10得到商0和余数1,432乘以10再加上1得到4321。
[C函数2]
unsigned int reverse(unsigned int n)
{
unsigned int result=0;
while( (1) ){
result=result *10+n%10;
n= (2) ;
}
return result;
}
用567,1234,56781234,62354879643分别作为实参调用函数reverse,对应的返回值分别为765,4321,43218765,1357400630。请说明以62354879643作为实参调用函数reverse时返回结果出错的原因。
答案
参考答案:
运算结果溢出(或超出范围,或其他含义相近的描述)。
解析:
本问题考查溢出问题。
由于程序语言提供的基本数据类型都有其表示范围的限制,因此在运算过程中需要注意是否发生溢出。通过分析,上面的运算过程并没有问题,而且前三个数据的处理结果都是正确的,因此最后一个数据出错的原因是其超出整型的表示范围造成的。