计算机等级考试二级C语言重点测试题:函数(1)
一、选择题
(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)我
位律师回复
0条评论