C语言刷题(二)

1、题1

在这里插入图片描述

本题i=2、3、4的时候循环三次
刚开始s=0;
第一次循环
i=2 s+=fun(i)
那么就是fun(2)
在fun函数中,a是使用static修饰的静态变量,也就是每次调用函数的时候,a不会重置它的值,而是上一次使用这个函数后a是几,下一次使用这个函数a就还是几
这里第一次循环,a=3,n=2
循环的if语句中,不论是满足if的条件,还是不满足,两个分支的语句都是p+=a++;
所以可以直接将这个if语句忽略,而直接将函数看为
那么,首先p += a++
这里a是后置++,所以先用后加,也就是先把a的值拿出来和p进行+=运算,然后a再自增
那么就是p+=3,p由0变为3,
之后a自增,a由3变为4,
接下来进行return p + a++
a还是后置++,所以先取值,与p相加,这个相加的值返回,而a自增
那么返回的值就是p+4=3+4=7,a自增,由4变为5
在main函数中,s一开始的值为0,s+=fun(2) -> s+=7,s由0变为7
第二次循环
a=5,n=3
p += a++
先把a的值拿出来和p进行+=运算,然后a再自增
那么就是p+=5,p由0变为5,
之后a自增,a由5变为6,
接下来进行return p + a++
a还是后置++,所以先取值,与p相加,这个相加的值返回,而a自增
那么返回的值就是p+6=5+6=11,a自增,由6变为7
在main函数中,s的值为7,s+=fun(3) -> s+=11,s由7变为18
第三次循环
a=7,n=4
p += a++
先把a的值拿出来和p进行+=运算,然后a再自增
那么就是p+=7,p由0变为7,
之后a自增,a由7变为8,
接下来进行return p + a++
a还是后置++,所以先取值,与p相加,这个相加的值返回,而a自增
那么返回的值就是p+8=7+8=15,a自增,由8变为9
在main函数中,s的值为18,s+=fun(3) -> s+=15,s由18变为33
循环结束,最终s=33,答案为C

2、题2

在这里插入图片描述
在这里插入图片描述

本题swap函数会对传入的数组的x[0]和x[1]进行交换,在交换后,输出一次数组的两个元素
对于数组传参,传的是地址,所以函数内的改变是影响着函数外的,函数结束,数组内的变化还是在的
本题考察的就是形参与实参,一些同学只记着形参改变不影响实参,而忘记了数组是传址
所以,本题,先将{3,4}进行交换,得到{4,3}
Swap函数内对数组进行打印 ,有 4 3
因为传址调用,函数内的变化是影响着函数外的,所以在主函数中的数组,里边是被改变后的{4,3}
main函数中对数组进行答疑,有 4 3
所以结果是:
4 3
4 3
选B

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值