问题 填空题

以下程序的输出结果是 【14】 。 main() { int x=0; sub(&x,8,1); printf("%d\n",x); } sub(int *a,int n,int k) { if(k<=n)sub(a,n/2,2*k); *a+=k; }

答案

参考答案:G

解析:在主函数中定义了一个变量x并赋初值0,然后执行函数调用语句,该语句的执行过程为sub(&x,8,1)调用sub(&a,4,2),sub(&a,4,2)调用sub(&a,2,4),sub(&a, 2,4)中由于2<4,所以if后面括号里的判断为假,递归结束,执行其后的*a+=k;语句此时x=x+k=0+4=4,回推到上一层调用函数sub(&x,4,2)中,执行后面的语句,x=x+k=4+2=6,在回推到最上一层调用函数sub(&x,8,1)执行后面的语句,x=x+k=6+1=7,所以最后输出7。

猜谜题

猜谜语。

lín hǎzhīzhōng yìyī  shēng                                   yǒu gè péng yǒu    hǎo xīn cháng

林海之中一医生,                                              有个朋友好心肠,

bǎo hù shù mù lì dà gōng                                   yǒu fāng yǒu yuán yòu yǒu cháng

保护树木立大功。                                             有方有圆又有长。

bù dǎ zhēn lái bù gěi yào                                     fā xiàn zuò yè yǒu cuò wù

不打针来不给药,                                             发现作业有错误,

yì kǒu diāo chū mù lǐ chóng                                xī shēng zì jǐ lái  bāng máng

一口叼出木里虫。                                             牺牲自己来帮忙。   

      mí dǐ                                                                      mí dǐ    

      谜底:(       )                                                         谜底:(       )  

单项选择题