牛客错题3

1、(函数递归)下面程序输出结果是:12

int foo(int x, int y){
if(x <=0 || y <=0 ){
return 1;
}

if ( y%2 == 0) {
return 2*foo( x-3, y/3 );
}
else{
return 3*foo( x-2, y/2 );
}
}
printf("%d\n", foo(9, 12));

解析: 2foo(6,4)->12 foo(6,4)=2foo(3,1)=6 foo(3,1)=3*foo(1,0)=3
foo(1,0)==1
注意这里4/3取值1(整形)

2、下列程序执行后的输出结果为()

这里是引用
解析:
编译器在编译时会将宏定义展开,i* sum(i, (i+j), j)被展开为 i* i+(i+j)+j。因此,若想宏定义sum(a, b, c)为a,b,c的和,应该定义为 # define sum(a, b, c) (a+b+c)
宏替换后为i * i + (i + j) + j,即为3×3+5+2=16

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值