A-A+
有下列程序: inta=4; intflintn) {intt=0;staticinta=5
问题详情
有下列程序: inta=4; intflintn) {intt=0;staticinta=5; if(n%2){inta=6;t+=a++;} else{inta=7;t+=a++;} returnt+a++; } main() {ints=a,i=0; for(;i<2;i++)s+=f(i); printfl%dn,s); } 程序运行后的输出结果是
A.28
B.24
C.32
D.36
请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:A
程序中定义了全局整型变量a=4。在intf(intn)函数中定义了局部静态整型变量并进行了初始化即staticinta=5。在jntffintn)函数中对n是否是偶数进行判断,如果n是奇数,则函数的返回值为11,局部静态整型变量a=6;如果n是偶数,则函数的返回值为12,局部静态整型变量a=6。所以在main()函数中循环首先执行s+=f(O)语句,而f(0)返回值12,所以第一次循环结束s的值等于4+12=16;第二次开始执行f(1)时,在f(1)中执行if(n%2){inta=6;t+=a++;}和retumt+a++;这两条语句,这时t=6,a=6(静态局部变量第一次循环后其值加1值不释放,执行第二次循环量,其值仍有效),所以f(1)的返回值等于12。再在主函数中执行s+=f(1)语句,即16+12=28。