阅读以下说明和C函数,回答问题1至问题3,将解答写在答题纸的对应栏内。
【说明2】在C函数2中,reverse(unsignedintn)的功能是求出并返回n的反序数。例如,1234的反序数是4321,其求解过程如下:(1)由1234除以10得到商123和余数4,0乘以10再加上4得到4;(2)由123除以10得到商12和余数3,4乘以10再加上3得到43;(3)由12除以10得到商l和余数2,43乘以10再加上2得到432;(4)由1除以10得到商0和余数1,432乘以10再加上1得到4321。【C函数2】
【问题2】请根据说明2,填充C函数2中的空缺(1)和(2)。
【问题3】用567,1234,56781234,62354879643分别作为实参调用函数reverse,对应的返回值分别为765,4321,43218765,1357400630。请说明以62354879643作为实参调用函数reverse时返回结果出错的原因。
参考答案:
【问题2】(1)n!=0或n>0(2) n/10
【问题3】运算结果溢出(或超出范围,或其他含义相近的描述)。
解析:
【问题2】本问题考查整数运算。从题中给出的运算过程可知,在所运算的整数不为0时,运算过程会继续,因此空(1)处应填入"n!=0"。除以10后要丢掉个位数的处理则由空(2)处进行,即填入"n/10"。
【问题3】本问题考查溢出问题。由于程序语言提供的基本数据类型都有其表示范围的限制,因此在运算过程中需要注意是否发生溢出。通过分析,上面的运算过程并没有问题,而且前三个数据的处理结果都是正确的,因此最后一个数据出错的原因是其超出整型的表示范围造成的。