计算机软考程序员试题及答案,2013年计算机软考程序员试题及答案10

3.main()

{ int x1,x2,x3,x4;

x1=x2=x3=x4=1;

switch(x1)

{ case 1:switch(x2)

{ case 0:x3++;break;

case 1:x4--;

case 2:x3++,x4--;

printf("%d%d",x3,x4);

【解析】本题的关键是嵌套的多分支语句switch。注意在执行switch语句前,变量x1、x2、x3、x4已经赋值,他们的值均为1。执行外层switch语句时,用于控制分支选择的变量x1的值为1,所以要执行的是“case 1”的分支。该分支又是一个switch语句,用于控制分支选择的变量x2的值为1,所以需要执行的是“case 1”的分支。该分支执行的语句是“x4--”,使得x4的值变为0。接着退出该分支,即退出内层的switch语句。由于外层的switch语句的“case 1”分支中没有“break”语句,所以将继续执行其后的“case 2”分支,即执行“x3++,x4--;”,结果x3等于2, x4等于-1。再退出外层switch语句,执行输出语句,此时,变量x3的值为2;变量x4的值为-1。所以输出结果是2-1。

【参考答案】2-1。

4.conv(b)

int b;

{ if(b>=2)conv(b/2);

printf("%d",b%2);

return;

main()

{ int d;

scanf("%d",&d);

conv(d);

说明:本程序执行时从键盘上输入:22后跟回车键。

【解析】主函数中输入整数22存入变量d中,然后调用函数。conv()。此时将把实参d中的22传递给形参b。然后再执行函数体,函数体中前面一条语句是单分支语句,当b>=2时再用“b/2”调用自己,显然这是一个递归调用的函数。下面我们来详细分析递归调用的过程:

第1次调用函数(b=22),满足条件,引起第2次调用自己(b/2=11)

第2次调用函数(b=11),满足条件,引起第3次调用自己(b/2=5)

第3次调用函数(b=5),满足条件,引起第4次调用自己(b/2=2)

第4次调用函数(b=2),满足条件,引起第2次调用自己(b/2=1)

第5次调用函数(b=1),不满足条件,执行输出语句,输出结果为 b%2=1%2=1

执行第5次调用的返回,执行第今次调用时的输出语句,输出结果为b%2=2%2=0

执行第4次调用的返回,执行第3次调用时的输出语句,输出结果为b%2=5%2=1

执行第3次调用的返回,执行第2次调用时的输出语句,输出结果为b%2=11%2=1

执行第2次调用的返回,执行第1次调用时的输出语句,输出结果为b%2=22%2=0

执行第1次调用的返回,将返回主函数,结束程序的运行。

所以程序运行的输出结果是:10110。

【参考答案】10110。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值