若有以下程序: #include<stdio.h> int f(int m) { static int n=0; int a = 2; n+ +;a+ +; return n+m+a; } main( ) { int k; for(k=0;k<4;k+ +

admin2019-04-14  14

问题 若有以下程序:
#include<stdio.h>
int f(int m)
{
static int n=0;
int a = 2;
n+ +;a+ +;
return n+m+a;
}
main( )
{
int k;
for(k=0;k<4;k+ +)
printf(″%d,″,f(k));
}
则程序的输出结果是(    )。

选项 A、3,5,7,9,
B、4,7,10,13,
C、4,5,6,7,
D、4,6,8,10,

答案D

解析 本题考查静态局部变量以及自增运算符,静态局部变量在函数调用结束后,并不释放,仍然保留它的值。本题中,k为0时,returnn+m+a之前,n为1,a为局部变量是3,m为0,所以第一个返回值为4。k为1时,在函数返回值之前,静态局部变量为2,局部变量a仍然为3,m为1,所以结果是6。以此类推,答案为D。
转载请注明原文地址:https://kaotiyun.com/show/g9Rp777K
0

最新回复(0)