计算机二级

有以下程序 #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

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有以下程序 include int a=1; int f(int c) { stati

有以下程序 #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
解析:静态局部变量的作用域跟一般局部变量相同,都是从声明处开始到声明所在函数或语句块结束为止。但静态局部变量的生存周期却是从第1次执行到该静态局部变量的声明语句时起,直到程序结束。而—般局部变量的生存周期到离开它的作用域时就结束了。本题的f()函数中static int a=2;语句就声明了一个静态局部变量a,并初始化为2。主函数中,通过一个for循环连着调用了2次f()函数。两次调用形参c都为3,f()函数中让c增1变为4,然后输出(a++) +c,第1次调用a为2,所以输出结果为3+4=6,而第2次调用a被上次调用时的++运算符增1,所以为3,输出结果为3+4=7。所以主函数for循环结束后,k的值是13,下面一条k+=a;语句中的a是全局变量a,值为1。故最终输出结果是14,应该选择 A。

第2题:

有以下程序include<stdio.h>int*f(int*p,int*q);main( ){int m=1,n=2,*r=&m;r=f(r,&am

有以下程序

include<stdio.h>

int*f(int*p,int*q);

main( )

{int m=1,n=2,*r=&m;

r=f(r,&n);printf(”%d\n”,*r);

}

int-f(int*P,int*q)

(return(*p>*q)?p:q;)

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


正确答案:2
2 解析:函数f的返回值的类型是int*,作用是返回两个int*型指针所指变量中值大的那个指针的。本题中定义了一个int*型指针r并置初值&m,即指针r指向m。r=f(r,&n),由于m的值小于n值,所以f函数返回值为&n,所以输出为2,即n值。

第3题:

有以下程序:includeusing namespace std;int f(int,int);int main(){ int i:1,x; x=f

有以下程序: #include<iostream> using namespace std; int f(int,int); int main() { int i:1,x; x=f(i,i+1); cout<<x<<end1; return 0; } int f(int a,int b) { int c; c = a; if(a>b) c = 1; else if(a==b) c = 0; else c = -2; return c; } 运行后的输出结果是( )。

A.1

B.0

C.-1

D.-2


正确答案:D
解析:本题考核对函数调用方法的掌握程度。做此类题主要是弄清楚程序每一步的目的:在主函数前面声明了整型函数f。在主函数中,调用了函数f()。实参的值分别是1和2,1传给函数f的形参a,2传给函数f的形参b,函数返回的值赋给变量x。即为输出的函数值。具体分析一下函数f()的功能:如果a大于b,则赋予c的值为1;并且跳出if-else语句。如果a不大于b,则进入elseif分支中,如果a等于b,则赋予c的值为0,并跳出以下的if-else语句。如果a不等于b,则进入else分支,执行c=-2。因为实参1,2分别传给形参a,b,所以此时ab,f()函数应执行c=-2。即最终输出应为-2。

第4题:

主程序中定义了变量int x=3,y=4;调用函数f(x,&y)后,x,y都等于3,则调用的是以下函数()

A.f(int *a, int b){ *a++; b--;}

B.f(int *a, int b) { (*a)++; b--;}

C.f(int a, int *b){ a++; (*b)--;}

D.f(int *a, int *b) { a++; *b--;}


D 一维数组定义和初始化是允许省略行下标,不允许省略列下标。

第5题:

以下程序的正确运行结果是()。includeint f(int);.void main(){int a=2,i;for(i=0;i

以下程序的正确运行结果是( )。 #include<iostream.h> int f(int);. void main() { int a=2,i; for(i=0;i<3;i++) cout<<f(a)<<" "; cout<<endl; } int f(int a) { int b=0; static int c=3; b++;c++; return(a+b+c); }

A.777

B.7 10 13

C.79 11

D.7 8 9


正确答案:D

第6题:

有以下程序:includeint a=2;int f(int *a){return (*a) ++;}main(){ int s=0;{ int a=

有以下程序: #include <stdio.h> int a=2; int f(int *a) { return (*a) ++;} main() { int s=0; { int a=5; s+=f(&a); } s+=f(&a); printf("%d\n",s) } 执行后的输出结果是( )。

A.10

B.9

C.7

D.8


正确答案:C
解析:在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用这些变量。对于main函数中的{inta=5;s+=f(&a);},a只在花括号内有效。在函数之外定义的变量称为外部变量,外部变量是全局变量,它的有效范围是从定义该变量的位置开始到本源文件结束。程序开头的定义inta=2;使a成为全局变量,main函数中第二个s+=f(&a);语句中的a就是这个全局变量。

第7题:

以下程序的正确运行结果是()。includeint f(int);void main(){int a=2,i;for(i=0;i<

以下程序的正确运行结果是( )。 #include<iostream.h> int f(int); void main() { int a=2,i; for(i=0;i<3;i++)cout<<f(a)<<" "; cout<<endl; } int f(int a) { int b=0; static int c=3; b++;c++; return(a+b+c); }

A.777

B.7 10 13

C.7 9 11

D.7 8 9


正确答案:D

第8题:

有以下程序: include using namespace std; int f(int); int main() {int i;for(i=0;

有以下程序:

include <iostream>

using namespace std;

int f(int);

int main()

{

int i;

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

cout<<f(i)<<" ";

return 0;

}

int f(int i)

{

static int k=1;

for(;i>0;i--)

k+=i;


正确答案:1 2 5 11 21
1 2 5 11 21 解析:函数f()中定义了一个内部静态变量k,其作用域仍在定义它的函数内。但该类型变量采用静态存储分配,当函数执行完,返回调用点时,该变量并不撤销,其值将继续保留,若下次再进入该函数时,其值仍然存在。内部静态变量有隐含初值0,并且只在编译时初始化一次。

第9题:

有以下程序: int fa(int x) { return x*x; } int fb(int x) { return x*x*x; } int f(int (*f1)(),int (* f2)(),int x) { return (*f2)(x)-(*f1)(x); } main() { int i; i=f(fa,fb,2); printf("%d\n",i); } 程序运行后的输出结果是( )

A.-4

B.1

C.4

D.8


正确答案:C

第10题:

下面代码能通过编译的是:

A.int main() { int a[3]={1,2,3}; int *b[3]={&a[1],&a[2],&a[3]}; int **p = b; return 0; }

B.int main() { int a[3]={1,2,3}; int *b[3]={a[1],a[2],a[3]}; int **p = b; return 0; }

C.int main() { int a[3]={1,2,3}; int *b[3]={&a[1],&a[2],&a[3]}; int *p = b; return 0; }

D.int main() { int a[3]={1,2,3}; int *b[3]={&a[1],&a[2],&a[3]}; int *p = &b; return 0; }


int main() { int a[3]={1,2,3}; int *b[3]={&a[1],&a[2],&a[3]}; int **p = b; return 0; }