计算机二级

下列程序运行后,输出结果是______。func (int a,int b){ static int m=0,i=2; i+=m+1; m=i+a+b; return(m);} main(){ int k=4,m=1,p; p=func(k,m);printf("%d,",p); p=func(k,m);printf("%d\n",p);}A.8,15B.8,16C.8,17D.8,8

题目

下列程序运行后,输出结果是______。func (int a,int b){ static int m=0,i=2; i+=m+1; m=i+a+b; return(m);} main(){ int k=4,m=1,p; p=func(k,m);printf("%d,",p); p=func(k,m);printf("%d\n",p);}

A.8,15

B.8,16

C.8,17

D.8,8

参考答案和解析
正确答案:C
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有以下程序 fun(int x,int y) { static int m=0,i=2; i+=m+1; m=i+x+y; return m; } main() { int j=1,m=1,k; k=fun(j,m); printf("%d,",k); k=fun(j,m); printf("%d\n",k); } 执行后的输出结果是______。

A.5,5

B.5,11

C.11,11

D.11,5


正确答案:B
解析:将j和m的值带入函数fun中,第—次调用完fun()后,m和i的值分别为5和3且要保留,并在第二次调用时使用,这是因为两者都是局部静态变量。所以最后的结果是5和11。

第2题:

有下列程序:

fun(int x,int y)

{statlc int m=0,i=2;

i+=m+1;m=i+X+y;return m;

}

main()

{int j=1,m=1,k;

k=fun(j,m);printf("%d,",k);

k=fun(j,m);printf("%d\n",k);

}

执行后的输出结果是( )。

A.5,5

B.5,11

C.11,11

D.11,5


正确答案:B
解析:子函数fun(int x,int y),将变量m和i声明为局部静态变量,因此第1次调用主函数后,局部静态变量m和i的值为5和3,第1次函数调用结束时,它们的值不释放保持不变,所以第2次调用时,局部静态变量m和i的初始值分别为5和3,即在执行“i+=m=1”时,i的值为9,因此最终m的值为11。

第3题:

有以下程序

fun(int x, int y)

{ static int m=0, i=2;

i+=m+1; m=i+x+y; return m;

}

main()

{ int j=1,m=1,k;

k=fun(j,m); printf("%d,",k);

k=fun(j,m); printf("%d\n",k);

}

执行后的输出结果是

A)5,5

B)5,11

C)11,11

D)11,5


正确答案:B
答案 B
解析 : 在子函数 fun(int x,int y) 中 , 变量 m 和 i 声明为静态局部变量 , 所以经过第 1 次函数的调用后,局部静态变量 m 和 i 的值分为为 5 和 3 ,当第 1 次调用结束时,其值保持不变 ,所以第 2 次调用时 , m 和 i 的值分别为 5 和 3 , 也就是说在执行 “ i+=m+1 ” 时 , i 的值为 9 ,因此最终 m 的值为 11 。

第4题:

下列程序执行后的输出结果是______。

A.hello

B.hel

C.hlo

D.hlm void func1 (int i); void func2 (int i); char st[]="hello,friend!"; void func1(int i) { printf("%c",st[i]); if(i<3){ i+=2;func2(i); } } void func2 (int i) { printf("%c",st[i]); if(i<3){ i+=2;func1(i); } } main() { int i=0;func1(i);printf("\n");}


正确答案:C

第5题:

有下列程序:

fun (int x,int y)

{static int m=0,i=2;i+=m+1;

m=i+x+y;return m;

}

main()

{int j=1,m=1,k;

k=fun0,m);printf("%d,"k);

k=fun0,m);printf("%d\n",k);

}

执行后的输出结果是( )。

A.5,5

B.5,11

C.11,11

D.11,5


正确答案:B
解析: 子函数fun(intx,inty),将变量m和i声明为局部静态变量,因此第1次调用主函数后,局部静态变量m和i的值为5和3,第1次函数调用结束时,它们的值不释放保持不变,所以第2次调用时,局部静态变量m和i的初始值分别为5和3,即在执行“i+=m+1”时,i的值为9,因此,最终m的值为11。

第6题:

下列程序执行后的输出结果是

void func1(int i);

void func2(int i);

char st[]="hello,friend!";

void func1(int i)

{ printf("%c",st[i]);

if(i<3){i+=2;func2(i);}}

void func2(int i)

{ printf("%c",st[i]);

if(i<3){i+=2;func1(i);}}

main()

{ int i=0; func1(i); printf("\n");}

A.hello

B.hel

C.hlo

D.m


正确答案:C
解析:考查函数的调用。函数调用的一般形式为:
函数名(实参列表)
首先调用函数func1(0),输出st[0]=h。i值变为2,并调用函数func2(2),输出st[2]=l。i值此时变为4,又调用函数func1(4),输出st[4]=0。此时i值大于等于3,执行完毕,因此,输出结果为hlo。 函数调用的一般格式以及函数的返回值。

第7题:

下列程序执行后的输出结果是

void funcl(int i);

void func2(int i);

char st[]="hello,friend!";

void fund(int i)

{ cout<<st[i];

if(i<3){i+=2;func2(i);}

}

void func2(int i)

{ cout<<st[i];

if(i<3){i+=2;funcl(i);}

}

main( )

{int i=0;fund(i);cout<<endl;}

A.hello

B.hel

C.hlo

D.hlm


正确答案:C
解析:本题考察递归调用。分析funcl可知,当i=0时,首先输出h,然后i变为2,调用func (2),则输出str[2],应为1。分析到此就可以排除选项A和B。然后调用runcl(4),此时输出str [4],为o,故正确答案为C。

第8题:

下列程序执行后的输出结果是

void func1(int i);

void func2(int i);

char st[]="hello,friend!";

void func1(int i)

{ printf("%c",st[i]);

if(i<3){i+=2;func2(i);}}

void func2(int i)

{ printf("%c",st[i]);

if(i<3){i+=2;func1(i);}}

main()

{ int i=0; func1(i); printf("\n");}

A.hello

B.hel

C.hlo

D.hlm


正确答案:C

第9题:

以下程序的运行结果是______。 include fun(int a,int b) { int m=0,i=2; i+=m+1; m

以下程序的运行结果是______。

include<iostrearn.b>

fun(int a,int b)

{

int m=0,i=2;

i+=m+1;

m=i+a+b;

return m;

}

void main()

{int k=4,m=1,p;

p=fun(k,m);cout<<p<<end1;

}


正确答案:8
8

第10题:

以下程序运行后,输出结果是______。 func (int a,int b) { static int m=0,i=2; i+=m+1; m=i+a+b; return m; } main() { int k=4,m=1,p; p=func(k,m); printf("%d,",p); p=func(k,m);printf("%d\n",p); }

A.8, 15

B.8, 16

C.8, 17

D.8, 8


正确答案:C

更多相关问题