计算机二级

有以下程序#inelude(stdio.h>int f(int n);main( ){int a=3,s;s=f(A);8=s+f(A);prinff(“%d\n”,s);}int f(int n){static ifit a=1:n+=a++:return n;}程序运行后的输出结果是A.7B.8C.9D.10

题目

有以下程序

#inelude(stdio.h>

int f(int n);

main( )

{int a=3,s;

s=f(A);8=s+f(A);prinff(“%d\n”,s);

}

int f(int n)

{static ifit a=1:

n+=a++:

return n;

}

程序运行后的输出结果是

A.7

B.8

C.9

D.10

参考答案和解析
正确答案:C
解析:s=f(a)表达式第一次调用f(n)函数时。f(n)函数运行结果为n:4,a=2,即s等于4;s=g+f(a)表达式第二次涮用f(n)函数时,f(n)函数运行结果为n=5,所以得到s值为9。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

以下程序的输出结果是

#include<stdio.h>

int a[3][3]={1,2,3,4,5,6,7,8,9,},*p;

main()

{ p=(int*)malloc(sizeof(int));

f(p,a);

printf("%d\n",*p);

free(p); }

f(int *s, int p[][3])

{ *s=p[1][1];}

A.1

B.4

C.7

D.5


正确答案:D
解析:本题考查了二维数组元素引用的方法。题中用动态存储分配函数malloc分配了一个int型数据长度大小的内存,然后指针p指向了这段内存,函数f()中对p所指向的数据进行了赋值,p[1][1]为二维数组第二行第二列的元素,对应于实参a的元素5,所以输出结果为5。

第2题:

以下程序的输出结果是

#include

int a[3][3]={1,2,3,4,5,6,7,8,9,},*p;

main( )

{ p=(int *)malloc(sized(int));

f(p,a) ;

printf("%d\n",*p);

free(p);}

f(int *s,int p[ ][3])

{ *s=p[1][1];}

A.1

B.4

C.7

D.5


正确答案:D
解析:本题考查了二维数组元素引用的方法。题中用动态存储分配函数malloc分配了一个int型数据长度大小的内存,然后指针p指向了这段内存,函数f( )中对p所指向的数据进行了赋值,p[1][1]为二维数组第二行第二列的元素,对应于实参a的元素5,所以输出结果为5。

第3题:

以下程序的输出结果是includeint a[3][3]={1,2,3,4,5,6,7,8,9,},*p;main(){p=(int*)ma

以下程序的输出结果是 #include<stdio.h> int a[3][3]={1,2,3,4,5,6,7,8,9,},*p; main() { p=(int*)malloc(sizeof(int)); f(p,a); printf("%d\n”,*p); free(p);} f(int *s,intp [][3]) { *s=p[1][1];}

A.1

B.4

C.7

D.5


正确答案:D
解析: 本题考查了二维数组元素引用的方法。题中用动态存储分配函数malloc分配了一个int型数据长度大小的内存,然后指针p指向了这段内存,函数f()中对p所指向的数据进行了赋值,p[1][1]为二维数组第二行第二列的元素,对应于实参a的元素5,所以输出结果为5。

第4题:

以下程序的输出结果是includeint a[3][3]={1,2,3,4,5,6,7,8,9,},*p;main(){p=(int*)ma

以下程序的输出结果是 #include<stdio.h> int a[3][3]={1,2,3,4,5,6,7,8,9,},*p; main() { p=(int*)malloc(sizeof(int)); f(p,a); printf("%d\n",*p); free(p);} f(int *s, int p[][3]) { *s=p[1][1];}

A.1

B.4

C.7

D.5


正确答案:D
解析:本题考查了二维数组元素引用的方法。题中用动态存储分配函数malloc分配了一个int型数据长度大小的内存,然后指针p指向了这段内存,函数f()中对p所指向的数据进行了赋值,p[1][1]为二维数组第二行第二列的元素,对应于实参a的元素5,所以输出结果为5。

第5题:

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

第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题:

有以下程序 include void fun(int n, int *p) { int f1,t2; if(n==1 |

有以下程序 #include <stdio.h> void fun(int n, int *p) { int f1,t2; if(n==1 ||n==2) *p=1; else { fun(n-1,&f1); fun(n-2,&f2); *p=f1+f2; } } main() { int s; fun(3,&s); printf("%d\n", s ); }

A.2

B.3

C.4

D.5


正确答案:A
解析:在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。本题中的fun()函数直接调用了自身,所以它是一个递归函数。fun()函数中,当形参n为1或2时,让形参p所指内容为1。从这里可以看出形参p的用途是输出一个整数,所以我们不妨记作fun(1)=1、 fun(2)=1。如果是其他情况,那么输出结果*p的内容为f(n)=f(n-1)+f(n-2)。由此可见, fun()函数的作用是求斐波纳契数列第n项的值(斐波纳契数列第1和2项的值为1,以后各项分别为前两项之和:1、1、2、3、5、8、13……)。主函数中通过fun()函数,求第3项值;所以输出结果为2,故应该选择A。

第8题:

有以下程序: 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
解析:本题中定义了一个全局变量a和局部变量a。在主函数中定义一个整型变量s并赋初值为0,接着定义了一个局部变量a并赋值为5,由于该局部变量的和全局变量a同名,全局变量在复合语句中将不起作用,然后调用函数f(&a)(该函数的作用是返回存储变量a中的值,并让该值加1,分析程序可知返回值为5,并让a值加1变为6),并将返回值加到s中。此时s的值为5,再执行该复合语句外的其他语句,同样调用函数f(&a),传递的参数是全局变量a,故其返回值为2,加到s中后s的值变为7,最后输出的s值为7,所以,4个选项中选项C符合题意。

第9题:

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