有以下程序: #include<stdio.h> int f(int t[],int n); main( ) {int a[4]={1,2,3,4

题目

有以下程序: #include<stdio.h> int f(int t[],int n); main( ) {int a[4]={1,2,3,4},s; s=f(a,4);printf("%d\n",s); int f(int t[],int n) {if(n>0)return t[n-1]+f(t,n-1); else return 0; } 程序运行后的输出结果是( )。

A.4

B.10

C.14

D.6

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

第1题:

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

第2题:

以下程序的输出结果是______。 fun(int *s,int *p) { static int t=3; *p=s[t]; t--; } main() { int str[]={1,2,3,4},i,m=0; for(i=0;i<4;i++) {fun(str,&m); printf("%d",m); } printf("\n"); }

A.0

B.444412

C.1234

D.4321


正确答案:D
解析:程序的功能是将字符数组str中的内容以反序输出。函数fun中t为静态变量,每一次调用函数fun时,t的值为上一次调用函数结束时的值。

第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 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。

第5题:

有以下程序: 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,并且只在编译时初始化一次。

第6题:

有以下程序: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,返回值语句

第7题:

有以下程序:include void f(int a[],int i, int j){int t; if(i

有以下程序: #include <stdio.h> void f(int a[],int i, int j) { int t; if(i<j) { t=a[i];a[i]=a[j];a[j]=t; f(a,i+1,j-1); } } main() { int i,aa[5]={1,2,3,4,5}; f(aa,0,4); for(i=0;i<5;i++) printf("%d,",aa[i]);printf("\n"); } 执行后的输出结果是( )。

A.5,4,3,2,1,

B.5,2,3,4,1,

C.1,2,3,4,5,

D.1,5,4,3,2,


正确答案:A
解析:f函数的功能是通过递归调用实现数组中左右部分相应位置数据的交换,即数组中第一个元素与最后一个元素调换位置,第二个元素与倒数第二个元素调换位置,以此类推。

第8题:

( 33 )有以下程序

#include <studio.h>

int f ( int t[],int n ) ;

main

{ int a[4]={1,2,3,4},s;

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

}

int f ( int t[],int n )

{ if ( n>0 ) return t[n-1]+f ( t,n-1 ) ;

else return 0 ;

}

程序运行后的输出结果是

A ) 4

B ) 10

C ) 14

D ) 6


正确答案:B

第9题:

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

第10题:

请选出以下程序的输出结果includemain(){ int a[]={1,2,3,4},i;int x=0;for(i=0;i<4;i

请选出以下程序的输出结果 #include<stdio.h> main() { int a[]={1,2,3,4},i; int x=0; for(i=0;i<4;i++) { sub(a,x);printf("%d",x);} printf("\n");} sub(s,y) int*s,y; { static int t=3; y=s[t];t--; }

A.1 2 3 4

B.4 3 2 1

C.0

D.4444


正确答案:C
解析:若指针s指向数组a,则s[t]可以引用数组a中下标为t的元素。注意:通过数组的首地址引用数组元素。

更多相关问题