一个C语言2级考试题,第4题怎么看,为什么选A,我不会做!

阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。递归【程序】#include<stdio.h>intfun(intn){if(n<=1)retur... 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。递归
【程序】
#include <stdio.h>
int fun(int n)
{
if(n<=1)
return 2;
else
return fun(n-1)*2;
}
void f(int n)
{
do{
printf(“%d ”,n);
}while(--n);
}
main()
{
int a=4;
printf(“%d %d\n”,a<<2,a&3);
printf(“%d %d\n”,a==a,!a);
printf(“%d %d\n”,fun(1),fun(3));
for(a=1;a<=3;a++)
f(a);
}

【问题】
程序运行时,第4行输出()
A. 1 2 1 3 2 1 B. 1 0 2 1 0 3 2 1 0
C. 1 2 1 3 D.1 0 2 1 0 3
展开
 我来答
金色潜鸟
2016-11-17 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:6081万
展开全部
for(a=1;a<=3;a++) f(a);
即输出 f(1), f(2), f(3)
f(1) 输出 1, 执行一次 do 输出 1
f(2) 输出 2 1, 执行一次 输出 2, 再 循环 一次 输出 1
f(3) 输出 3 2 1 , 执行一次 输出 3, 再 循环 二次, 依次输出 2 1
所以是 A. 1 2 1 3 2 1
追问
while(--n)变为while(1)不是变为死循环了吗?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式