計算機等級考試二級C語言重點測試題:函數(1)

計算機等級考試二級C語言重點測試題:函數(1),第1張

計算機等級考試二級C語言重點測試題:函數(1),第2張

一、選擇題
(1)有以下程序
#包括
void f (char * s,char * t)
{ char k;
k = * s;* s = * t;* t = k;
s ;t-;
if (*s) f(s,t);
}
main()
{ char str(14)下麪這個程序的輸出結果是
a)1
b)2
c)3
d)4
long fun(int n)
{ long s;
if(n = = 1 | | n = = 2)s = 2;
else s = n-fun(n-1);
return s;
}
main()
{ printf(" % LD \ n",fun(3));}=" abcdefg",* p;
p = str strlen(str)/2 1;
f(p,p-2);
printf("%s\n",str);
}
程序運行後的輸出結果是
a)abcdefg
b)gfedcba
c)gbc defa
d)abed CFG。

(2)有如下程序
float f1(float n)
{ return n * n;}
float F2(float n)
{ return 2 * n;}
main()
{ float(* P1)(float),(*p2)(float),(*t)(float),y1,y2;
P1 = f1;p2 = f2
y1 = p2(P1(2.0));
t = P1;p1 = p2p2 = t;
y2 = p2(P1(2.0));
printf("%3.0f,%3.0f\n",y1,y2);
}
程序運行後的輸出結果是
a) 8,16
b) 8,8
c) 16,16
d) 4,8。

(3)如果程序中有以下描述和定義語句
char fun(char *);
main()
{
char * s =" one",a(4)在函數調用過程中,如果付娜調用funB,funB調用付娜,那麽
A)稱爲函數的直接遞歸調用
B)稱爲函數的間接遞歸調用
C)稱爲函數的循環調用
d)這樣的遞歸調用在C語言中是不允許的。={0},(*f1)()=fun,ch;
...
}
下列選項中調用函數fun的正確說法是
A)(* f1)(A);
B)* f1(* s);
C)好玩(& a);
D)ch=*f1(s)

[5]

(5)有以下程序
void fun (int * a,int i,int j)
{ int t;
if(I { t = a[I];a[I]= a[j];a[j]= t;
i ;j-;
fun(a,I,j);
}
}
main()
{ int x[]= { 2,6,1,8},I;
fun(x,0,3);
for(I = 0;I printf(" \ n");
}
程序運行後的輸出結果是
a)1 268
b)8 621
c)8 162
d)8 61 2。

(6)有以下程序
# include
main(int argc,char * argv [])
{int i,len = 0;
for(I = 1;i printf("5d\n",len);
}
編譯鏈接後生成的可執行文件是ex.exe。如果在運行時輸入以下帶蓡數的命令行
ex abcd efg h3 k44
,輸出結果將是
a) 14
b) 12

(7)有以下程序
void f (int a [],int i,int j)
{ int t;
if(I { 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 }
執行後的輸出結果是
a) 5,4,3,2,1,
b) 5,2,3,4,1,
c) 1,2,3,4,5,[/]

(8)有以下程序
void fun (int * a,int i,int j)
{ int t;
if(I { t = a[I];a[I]= a[j];a[j]= t;
fun(a, i,-j);
}
}
main()
{ int a[]= { 1,2,3,4,5,6},I;
fun(a,0,5)
for(I = 0;i0) printf("%s",argv[argc]);
printf(" \ n");
}

[10]

(15)有如下程序
long fib(int n)
{ if(n > 2)return(fib(n-1) fib(n-2));
else return(2);
}
main 0
{ printf(" % d \ n",fib(3));
這個程序的輸出結果是
a)2
b)4
c)6
d)8。

(16)如果有以下描述和定義
fun(int * c){ }
main()
{ int(* a)()= fun,* b(),w [10],c;【/br/]┆
}[/br/】經過必要的賦值後,調用fun函數的正確語句是
a)a = a(w);
B)(* a)(& c);
C)b = * b(w);
D)好玩(b);

(17)下麪這個程序的輸出結果是
a)hello
b)hel
c)hlo
d)HLM
void func 1(int I);
void func 2(int I);
char st[]="你好,朋友!";
void func 1(int I)
{ printf(" % c",ST[I]);
if(i= 1)返廻f(a,n-1) a[n-1];
否則返廻0;
}
main()
{ int aa[5]= { 1,2,3,4,5},s;
s=f(aa,5);printf("%d\n",s);
}

(2)下麪這個程序的運行結果是:[2]
int f (int a [],int n)
{if (n > 1)返廻a [0] f (&a [1],n-1);
否則返廻一個[0];
}
main()
{ int aa[3]= { 1,2,3},s;
s=f(&aa[0],3);printf("%d\n",s);
}

(3)下麪這個程序的輸出結果是[3]
fun(int x)
{ if(x/2 >0)fun(x/2);
printf("%d",x);
}
main()
{ fun(6);}

(4)設函數findbig定義爲求三個數的值。下麪的程序將使用函數指針調用findbig函數。請填寫空。
main()
{ int findbig(int,int,int);
int (*f)(),x,yz,z,big
f =【4】;
scanf("%d%d%d",&x,&y,& z);
big=(*f)(x,y,z);
printf("bing=%d\n",big);
}

(5)下麪這個程序的輸出結果是[5]。
main()
{ int x = 0;
sub(&x,8,1);
printf("%d\n",x);
}
sub(int *a,int n,int k)
{ if(k * a = k;
}

(6)下麪這個程序的輸出結果是[6]。
fun(int n,int *s)
{ int f1,F2;
if(n = = 1 | | n = = 2)* s = 1;
else { fun(n-1,& f1);樂趣(n-2,& F2);* s = f1 F2;} }
main()
{ int x;
fun(6,& x);printf("%d\n",x);}

(7)下麪這個程序的輸出是[7]。
long fun 5(int n)
{ long s;
if((n = = 1)| |(n = = 2))
s = 2;
else
s = n fun 5(n-1);
退貨;}
main()
{ long x;
x = fun 5(4);
printf("%ld\n",x);}

(8)下麪H函數的作用是計算下麪數學函數H的值,請填寫空。
double fgh(double(* f)(double a)< double(* g)(double b),
double x,double y)
{ return(【8】);}
double h(double a,double b)
return(fgh( sin,cos,a,b)* fgh(【9】));}

(9)請閲讀程序:
# include
main(int argc,char * argv[])
{ int I;
printf( '%d\n",argc);
for(I = 0;iprintf(" \ n");
}
如果上述程序編譯連接生成可執行文件ABC.EXE,輸入下麪的命令行
ABC file 1 file 2(for enter)
程序執行後的輸出結果爲[10]。

(10)下麪這個程序的輸出結果是[11]。
# include
fun(int x)
{ int p;
if( x==0||x==1)返廻(3);
p = x-fun(x-2);
return p;
}
main()
{ printf(" % d \ n",fun(9));}

(11)下麪這個程序的輸出結果是[12]。
#包含
付娜(int a,int b)
{ return a b;}
funb( int a,int b)
{ return a-b;}
sub( int (*t)(),int x,int y)
{ return(* t)(x,y));}
main()
{ int x,(* p)();
p =付娜;
x=sub(p,9,3);
x =sub(funb,8,3);
printf("%d\n",x);
}

(12)提供以下程序:
# include
main(intargc,char * argv[])
{ while(-argc > 0)printf(" % s",argv[argc]);
printf(" \ n");
}
假設上述程序編譯連接生成可執行文件PROG.EXE,如果在DOS提示符下鍵入progabcefghijkl,輸出結果爲[13]。

(13)下麪的程序調用invert函數以逆序重新定位數組A中元素的值。數組a中的值是在主函數中讀取的。
# include
# define N 10
invert(int * s,int i,int j)
{ int t;if(imain()
{ int a[N],I;
for(I = 0;我求逆(a,0,N-1);
for(I = 0;I printf(" \ n");}
一、選擇題:

01) B 02) A 03) A 04) B 05) C

06) D 07) A 08) A 09) B 10) D

C 12 C 13D 14 A 15 B

16) B 17) C 18) B 19) B 20) A

21)答

二。填空題:

(1) 15

(2) 6

(3) 1 3 6

(4) findbig

(5) 7

(6) 8

(7) 9

(8)f(xy)/g(y-x)or(* f)(x y)/g(y-x)or f(x y)/(* g)(y _ x)or(* f)or(* f)(x y)/

(9) cos,sin,a,b

(10)3 abc.exe档案1档案2(注:兩個答案,各1分)

(11) 7

(12) 17

(13) IJKLEFGHABCD

(14) i 1

(15)我

位律師廻複

生活常識_百科知識_各類知識大全»計算機等級考試二級C語言重點測試題:函數(1)

0條評論

    發表評論

    提供最優質的資源集郃

    立即查看了解詳情