问答题
[C语言函数]
long change(int num)
{
ind,m=num;
long result mul;
if (num<=0||{{U}} (1) {{/U}} /*若num不大于0或num的位数大于4,则返回-1*/
retum-1;
mul=1;
{{U}}(2) {{/U}}
while(m>0){
d=m%10;
m={{U}} (3) {{/U}};
result=result+({{U}} (4) {{/U}}) *mul;
mul={{U}} (5) {{/U}};
}
return result;
}
【正确答案】
【答案解析】num/10000>0,或num>9999,或num>=10000,或其等价形式
(2)result=0
(3)m/10,或(m-d)/10,或其等价形式
(4)d*10 +d,或其等价形式
(5)mul*100,或其等价形式
[分析]试题二
本题考查简单运算的程序实现。对于这类题目,应将题干部分描述的运算过程理解透彻。
函数change(int num)的功能是对四位以内(含四位)的十进制正整数num的每一位重复一次。显然,num的位数大于4的直接表示是num>9999或nam>10000,或 num/10000>0。
从题干部分给出的变换公式看,最后的结果是累加获得的,而且代码中用于保存累加结果的变量是result,该变量的初值应为0。所以空(2)处应填入“result=O”。分析对 5234的变化过程可知,首先取出个位,其次是十位上的数字,以此类推,并且将每次取出的数字d乘以10再加上该数字d,因此空(4)处应填入“d*10 +d” 。显然mul的值以100进行累乘,因此空(5)处填入“mul*100"。由于跳出循环的条件为“m<=0”,所以结合“d=m%10”可知,空(3)处应填入“m/10”。