问题 问答题

[说明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时返回结果出错的原因。

答案

参考答案:

运算结果溢出(或超出范围,或其他含义相近的描述)。

解析:

本问题考查溢出问题。

由于程序语言提供的基本数据类型都有其表示范围的限制,因此在运算过程中需要注意是否发生溢出。通过分析,上面的运算过程并没有问题,而且前三个数据的处理结果都是正确的,因此最后一个数据出错的原因是其超出整型的表示范围造成的。

问答题 简答题
判断题