
一个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 展开
【程序】
#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 展开
1个回答
展开全部
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
即输出 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)不是变为死循环了吗?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询