计算机二级

有以下程序#include<stdio.h>int a=1;intf(int c){static int a=2;c=c+1;return(a++)+C;}main( int i,k=0;for(i=0;i<2;i++){int a=3;k+=f(a);}k+=a;printf("%d\n",k);}程序运行结果是( )。A.14B.15C.16D.17

题目

有以下程序

#include<stdio.h>

int a=1;

intf(int c)

{static int a=2;

c=c+1;

return(a++)+C;

}

main

( int i,k=0;

for(i=0;i<2;i++){int a=3;k+=f(a);}

k+=a;

printf("%d\n",k);

}

程序运行结果是( )。

A.14

B.15

C.16

D.17

参考答案和解析
正确答案:A
在主函数中,k的初值为0,首先调用函数f(3),返回值为6,k的值变为6,而函数intfun(intc)中的局部静态变量a等于3。第二次调用函数f(3)时,返回值为7,所以k=6+7=13。退出循环语句,k再加上全局变量a的值l,其最终的值为14。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

34 ) 有以下程序

#include <stdio.h>

int f(int n);

main()

{ int a=3,s;

s=f(a);s=s+f(a);printf("%d\n",s);

}

int f(int n)

{ static int a=1;

n+=a++;

return n;

}

程序运行以后的输出结果是

A)7

B)8

C)9

D)10


正确答案:C

第2题:

有以下程序:includedstdio.h>int f(int n); main( ){int a=3,s; s=f(a);s=s+f(a);printf(&qu

有以下程序:

includedstdio.h>

int f(int n);

main( )

{int a=3,s;

s=f(a);s=s+f(a);printf("%dkn",s);

}

int f(int n)

{static int a=1;

n+=a++;

return n;

}

程序运行后的输出结果是( )。

A.7

B.8

C.9

D.10


正确答案:C

本题考查函数的调用。当执行s=f(a)时,进入fun函数,n=n+(a++),n的值为3,a的值为1,a++的意思是先用a的值,再将a加1为2,所以n的结果为4,也就是主函数中f(a)的结果为4;返回主函数,执行s=s+f(a),s为4,再次调用函数,此时n仍为3,a的值刚才已经自加2,所以计算后n的值为5,a自加l为3。返回主函数,f(a)的结果为5,所以s=4+5=9。

第3题:

有以下程序

int a=4;

int f(int n)

{ int t=0; static int a=5;

if(n%2) {int a=6; t+=a++;}

else {int a=7 ;t +=a++ ; }

return t+a++ ;

}

main( )

{ int s=a , i=0 ;

for( ; i 〈 2 ; i++) s+=f(i);

printf ("%d\n",s);

}

程序运行后的输出结果是

A)24

B)28

C)32

D)36


正确答案:B

第4题:

有如下程序: #inClude<iostream> using namespaCe std; Class A{ publiC: statiC int a; void init( ){。a=1;} A(int a=2){init( );a++;} }; int A::a:0: A obj; int main( ) { Cout<<obj.a: return 0; } 运行时输出的结果是( )。

A.0

B.1

C.2

D.3


正确答案:B
本题考查构造函数,本题中对类中的a数据成员先是赋值为0,当定义了对象obj时,执行构造函数,将a的值变为了1,所以输出1。

第5题:

有以下程序:includeint a=4;int f(int n){int t=0;static int a=5;if(n%2) {int a=6;

有以下程序: #include<string.h> int a=4; int f(int n) {int t=0;static int a=5; if(n%2) {int a=6;t++=a++;} else{int a=7;t+=a++;} return t+a++; } main() {int s=a,i=0; for(;i<2;i++)s+=f(i); printf("%d\n",s); } 程序运行后的输出结果是( )。

A.24

B.28

C.32

D.36


正确答案:B
解析:本题考查的是外部变量的应用。因为程序的初始int a=4;语句定义了外部变量a,在以后的执行过程中,当i=0时,调用f(0)函数,执行的语句是else {int a=7;t+=a++;},此处程序中又定义了变量a,所以原来定义的外部变量在此不起作用,得到t=7,返回值语句return t+a++;处,外部变量a起作用,返回值为7+5=12:当i=1时,调用f(1)函数,执行的是语句else{inta=6:t+=a++;},此处程序中又定义了变量a,所以原来定义的外部变量在此不起作用,得到t=6,返回值语句

第6题:

有以下程序 include int i=0; void fun( ) { { static int i=1

有以下程序 #include<iostream> int i=0; void fun( ) { { static int i=1; Std::cout<<i++<<','; } Std::cout<<i<<','; } int main( ) { fun();fun(); return O; } 程序执行后的输出结果是

A.1,2,1,2,

B.1,2,2,3,

C.2,0,3,0,

D.1,0,2,0,


正确答案:D
解析:本题考核变量的作用域、生存周期和存储类别(自动、静态、存储器、外部)。题中即定义全局变量i又在函数fun内部定义了局部静态变量i,当进入函数fun里面的大括号时,局部静态变量i有效,所以输出1,然后局部静态变量i加1,出了里面的大括号后,全局变量i有效,所以输出0。同理,第二次调用fun后,输出2和0。

第7题:

下列程序的输出结果是()。 include f(int a) {int b=0; static int c=4; a=c++;b++; re

下列程序的输出结果是( )。

#include<stdio.h>

f(int a)

{ int b=0;

static int c=4;

a=c++;b++;

return(a);

}

main()

{ int a=2,i,c;

for(i=0;i<2;i++)

C=f(a++);

printf("%d\n",c);

}

A.4

B.7

C.6

D.5


正确答案:D
解析:本题考查静态变量的使用方法和for循环。在函数调用时,static变量在函数调用结束后所作的所有变化均不保持,所以当i=1时,第2次进入f函数时c=5,所以最终main函数中c的值为5。

第8题:

有以下程序

#include <stdio.h>

int a=1;

int f(int c)

{ static int a=2;

c=c+1;

return (a++)+c;}

main()

{ int i,k=0;

for(i=0;i<2;i++){int a=3;k+=f(a);}

k+=a;

printf( " %d\n " ,k);

}

程序运行结果是

A) 14

B) 15

C) 16

D) 17


正确答案:A

第9题:

有如下程序:includeusing namespace std;class A{public:static int a;void init(){a

有如下程序: #include<iostream> using namespace std; class A{ public: static int a; void init(){a=1;} A(int a=2){init(); a++;} }; int A::a=0; A obj; int main() { cout<<obj.a; return 0; 运行时输出的结果是( )。

A.0

B.1

C.2

D.3


正确答案:B
解析:有如下程序:  #includeiostream>  using namespace std;  class A{  public:  static int a;  void init(){a=1;}  A(int a=2){init(); a++;}  };  int A::a=0;  A obj;  int main()  {  coutobj.a;  return 0;  运行时输出的结果是(  )。 

第10题:

有以下程序: int a=2; int f(int n) { static int a=3; int t=0; if(n % 2)(static int a=4; t+=a++;} else{static int a=5; t+=a++;} return t+a++; } matin() { int s=a, i; for(i=0; i<3; i++)s+=f(i); printf("% d\n", s); } 程序运行后的输出结果是______。

A.26

B.28

C.29

D.24


正确答案:C
解析:在某一函数中当全局变量与局部变量同名时,则在该函数中,全局变量被屏蔽,访问的是局部变量。因此,t+a++中的a用的是static int a=3的这个a。if语句的执行是当n是偶数时,执行else的部分,否则执行其后的部分。因此,当i=0时,t=5,s=2+8=10;i=1时,t=4,s=10+8=18;当i=2时,t=6,s=18+11=29。

更多相关问题