admin 管理员组

文章数量: 887021


2024年2月18日发(作者:unity的游戏下载)

二级C语言模拟题2018年(47)

(总分100,考试时间90分钟)

选择题

1. 要求tan(60°)的值,调用的库函数格式为______。

A. tan(60) B. tan(pi/3)

C. tan(60.0) D. tan((double)60)

2. C语言规定,函数返回值的类型是______。

A. 由调用该函数时的主调函数类型所决定

B. 由return语句中的表达式类型所决定

C. 由调用该函数时系统临时决定

D. 由定义该函数时所指定的数值类型决定

3. 以下叙述中,错误的是______。

A. 在同一C程序文件中,不同函数中可以使用名字相同的变量

B. 在main()函数体内定义的变量是全局变量

C. 形参是局部变量,函数调用完成即失去意义

D. 若同一文件中全局和局部变量同名,则全局变量在局部变量作用范围内不起作用

4. 以下函数值的类型是______。

fun(double x)

{foat y;

y=3*x-4;

return y;

)

A. int B. 不确定

C. void D. float

5. 有以下程序:

int f1(double a)

{return a*a;}

int f2(int x,int y)

{double a,b;

a=f1(x);

b=f1(y);

return a+b;

}

main()

{double w;

w=f2(2.1,4.0);

)

变量w的值是______。

A. 20.21 B. 20

C. 20.0 D. 0.0

6. 已知下列函数定义:

fun(int *b,int m,int n,int data)

{int k;

for(k=0;k<m*n;k++)

{*b=data;

b++;}

}

则调用此函数的正确写法是(假设变量a的说明为int a[50])______。

A. fun(*a,4,5,1); B. fun(&a,4,5,1);

C. fun((int*)a,4,5,1) D. fun(a,4,5,1);

7. 以下程序中函数reverse()的功能是将a所指数组中的内容进行逆置。

#include<stdio.h>

void reverse(int a[],int n)

{inti,t;

for(i=0;i<n/2;i++)

{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}

}

main()

{int b[10]={1,2,3,4,5,6,7,8,9,10};int i,s=0;

reverse(b,10);

for(i=0;i<3;i++)s+=b[i];

printf("%dn",s);

}

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

A. 27 B. 6

C. 25 D. 30

8. 下述程序的输出结果是______。

#include<stdio.h>

int fun(int x)

{int p;

if(x=0||x=1)

return 3;

else

p=x-fun(x-2);

return p;

)

void main()

{pfintf("n%d",fum(5));

}

A. 5 B. 3

C. 7 D. 1

9. 以下程序的输出结果是______。

point(char*pt);

main()

{char b[4]={"a","c","s","f"),*pt=b;

pt=point(pt);

printf("%cn",*pt);

}

point(char*p)

{p+=3;

return p;

}

A. .s B. .c

C. .f D. .a

10. 调用函数时,当实参和形参都是简单变量时,它们之间数据传递的过程是______。

A. 实参将其值传递给形参,调用结束时形参再将其值回传给实参

B. 实参将其地址传递给形参,调用结束时形参再将其地址回传给实参

C. 实参将其地址传递给形参,并释放原先占用的存储单元

D. 实参将其值传递给形参,调用结束时形参并不将其值回传给实参

11. 下面说法不正确的是______。

A. 调用函数时,实参可以是表达式

B. 调用函数时,实参与形参可以共用内存单元

C. 调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等

D. 调用函数时,实参与形参的类型必须一致

12. 下面函数调用语句含有实参的个数为______。

func((exp1,exp2),(exp3,exp4,exp5));

A. 1 B. 2

C. 3 D. 5

13. 在C语言中,函数调用时______。

A. 实参和形参各占独立的存储单元

B. 实参和形参共用存储单元

C. 由系统自动确定实参和形参是否共用存储单元

D. 由用户指定实参和形参是否共用存储单元

14. C语言规定,程序中各函数之间______。

A. 既允许直接递归调用也允许间接递归调用

B. 既不允许直接递归调用也不允许间接递归调用

C. 允许直接递归调用不允许间接递归调用

D. 不允许直接递归调用允许间接递归调用

15. 下述程序的输出结果是______。

#include<stdio.h>

int fun(int x)

{ int a;

if(x=0||x==1)

return 3;

else

a=x-fun(x-2);

return a;

}

void main()

{printf("%d",fun(7));

}

A. 2 B. 8

C. 9 D. 5

16. 以下叙述错误的是______。

A. 变量的作用域取决于变量定义语句的位置

B. 全局变量可以在函数以外的任何部位进行定义

C. 局部变量的作用域可用于其他函数的调用

D. 一个变量说明为static存储类型是为了限制其他编译单元的引用

17. 以下程序的输出结果是______。

#include<stdio.h>

int m=13;

int fun(int x,int y)

{ int m=2;

return(x*y-m);

}

main()

{int a=7,b=6;

printf("%d",fun(a,b)/m);

}

A. 1 B. 3

C. 7 D. 10

18. 以下全局变量声明中正确的是______。

A. auto int i=1; B. float a=1,b=0.5,c=a+b;

C. charfor=1; D. static char ch;

19. 已知函数f的定义如下:

void f(void)

{printf("That"s great!");}

则调用f函数的正确形式是______。

A. .f; B. f();

C. f(void); D. f(1);

20. 以下程序在编译时在第三行报错“Redeclaration of "a" infunction d”,如果决定修改该行声明中出现的局部变量a的名字,则下列选项中不能用来替换变量名a的是______。

[程序]

int b;

void d(int a)

{int f;double a=1;

printf("%d",a);

}

main()

{int e=1;d(e);}

A. .f B. .e

C. .d D. .b

21. 以下函数定义中正确的是______。

A. int fun(int a,b){}

B. int fun(int a[][]){}

C. int fun(void){}

D. int fun(static int a,int b){}

22. 已知有函数f的定义如下:

int f(int a,int b)

{if(a<b);else retum(b,a);}

在main函数中若调用函数f(2,3),得到的返回值是______。

A. 2 B. 3

C. 2和3 D. 3和2

23. 以下关于函数定义的叙述中正确的是______。

A. 构成C语言源程序的基本单位之一是函数定义

B. 所有被调用的函数必须在调用之前定义

C. main函数定义必须放在其他函数定义之前

D. main函数定义的函数体中必须至少有一条语句或声明

24. 在main函数体内部和外部均允许出现的实体是______。

A. 预处理命令 B. 语句

C. 另一函数的定义 D. 函数形式参数声明

25. 已知函数fun的定义如下:

void fun(int x[],int y)

{ int k;

for(k=0;k<y;k++)

x[k]+=y;

}

若main函数中有声明“int a[10]={10};”及调用fun函数的语句,则正确的fun函数调用形式是______。

A. fun(a[],a[0]);

B. fun(a[0],a[0]);

C. fun(&a[0],a[0]);

D. fun(a[0],&a[0]);

26. 设有下列程序段:

static char b=2;

void Y()

{static float d=4;...)

int a=1;

void X()

{int c=3;...}

关于程序段中各变量的属性,以下叙述中错误的是______。

A. a是全局变量,函数X可以访问,函数Y不能访问

B. b是全局变量,函数X和函数Y都可以访问

C. c是动态变量,函数X可访问,函数Y不可访问

D. d是静态变量,函数X和函数Y都可以访问

27. 若已定义一个有返回值的函数,则以下关于调用该函数的叙述中错误的是______。

A. 函数调用可以作为独立的语句存在 B. 函数调用可以出现在表达式中

C. 函数调用可以作为一个函数实参 D. 函数调用可以作为一个函数形参

28. 对应main函数中的fun函数调用语句,以下给出的4个fun函数首部中错误的是______。

main()

{int a[50],n;fun(n,&a[9]);}

A. void fun(int m,int x[])

B. void fun(int s,int h[41])

C. void fun(int p,int*s)

D. void fun(int n,int a)

29. 以下关于C语言源程序的叙述中错误的是______。

A. 一个C源程序由若干个函数定义组成,其中必须有且仅有一个名为main的函数定义

B. 函数定义由函数头部和函数体两部分组成

C. 在一个函数定义的函数体中允许定义另一个函数

D. 在一个函数定义的函数体中允许调用另一个函数或调用函数自身

30. 若有声明“long fun(int *x,intn,long *s);int a[4]={1,2,3,4};long b,c;”,则以下函数调用形式中正确的是______。

A. e=fun(a,4,b); B. c=fun(a[],4,&b);

C. c=fun(a[4],4,b); D. e=fun(a,4,&b);

31. 在C语言程序中,以下说法正确的是______。

A. 函数的定义和函数的调用均不可以嵌套

B. 函数的定义不可嵌套,但函数的调用可以嵌套

C. 函数的定义可以嵌套,但函数的调用不可以嵌套

D. 函数的定义和函数的调用均可以嵌套

32. 设x和y都是int类型,且x=1,y=2,则printf("%d%d",x,y,(x,y))的输出结果是______。

A. 1 2 B. 1 2 2

C. 1,2 D. 输出值不确定

33. 若定义函数int *func(),则函数func的返回值为______。

A. 一个实数 B. 一个指向整型变量的指针

C. 一个指向整型函数的指针 D. 一个整型函数的人口地址

34. 有以下函数定义:

int fun(double a,double b)

{return a*b;}

若以下选项中所用变量都已正确定义并赋值,错误的函数调用是______。

A. if(fun(x,y)){...}

B. z=fun(fun(x,y),fun(x,y));

C. z=fun(fun(x,y)x,y);

D. fun(x,y);

35. 下面程序的输出结果是______。

#include<stdio.h>

main()

{char a[]={"a","b","c","d","f","g"},*p;

p=a;

printf("%cn",*p+4);

}

A. .a B. .b

C. .e D. .f

36. 以下叙述中不正确的是______。

A. 在不同的函数中可以使用相同的名字的变量

B. 函数中的形式参数是局部变量

C. 在一个函数内定义的变量只在本函数范围内有效

D. 在一个函数内的复合语句中定义的变量在本函数范围内有效

37. 下面说法正确的是______。

A. 调用函数时,实参不可以是表达式,必须是数值

B. 调用函数时,实参与形参是共用内存单元的

C. 调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等

D. 调用函数时,实参与形参的类型可不一致,编译器能够自动转换

38. 以下程序的输出结果是______。

#include<stdio.h>

main()

{int a[3][3]={0,1,2,0,1,2,0,1,2),i,j,s=1;

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

for(j=i;j<=i;j++)

s+=a[i][a[j][j]];

printf("%dn",s);

}

A. 3 B. 4

C. 1 D. 9

39. 在一个C源程序文件中,定义一个只允许本源文件中所有函数使用的全局变量的存储类别是______。

A. extern B. static

C. register D. auto

40. 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是______。

A. 函数调用可以作为独立的语句存在 B. 函数调用可以作为一个函数的实参

C. 函数调用可以出现在表达式中 D. 函数调用可以作为一个函数的形参

41. 若运行时给变量x输入12,则以下程序的运行结果是______。

main()

{int x,y;

scanf("%d",&x);

y=x>12?x+10:x-12;

printf("%dn",y);

}

A. 0 B. 22

C. 12 D. 10

42. 若函数调用时的实参为变量,以下关于函数形参和实参的叙述中正确的是______。

A. 函数的实参和其对应的形参共占同一存储单元

B. 形参只是形式上的存在,不占用具体存储单元

C. 同名的实参和形参占同一存储单元

D. 函数的形参和实参分别占用不同的存储单元

43. 请阅读以下程序:

#include<stdio.h>

#include<string.h>

void fun(int b[])

{ static int i=0;

do

{b[i]+=b[i+1];

}while(++i<2);}

main()

{int k,a[5]={1,3,5,4,9};

fun(a);

for(k=0;k<5;k++)pfintf("%d",a[k]);}

上面程序的输出是______。

A. 13579 B. 48579

C. 48549 D. 48999

44. C语言中,凡未指定存储类别的局部变量的隐含存储类别是______。

A. 自动(auto) B. 静态(static)

C. 外部(extern) D. 寄存器(register)

45. 若语句“t=fun(fun(x,y,a),(a+b,a+c),x+y+z);”对fun函数的调用正确,则fun函数的形参个数为______。

A. 3 B. 4

C. 5 D. 6

46. 假设有语句sizeof(double),则它是______。

A. 一个整型表达式 B. 一个双精度浮点型表达式

C. 一种函数调用 D. 一种函数定义

47. C语言中允许用外部说明来指定变量、函数和其他标识符的特征,这里所说的外部指的是______。

A. 冠以关键字extern B. 位置在函数体外部

C. 作用范围是全程的 D. 位置在函数的外部

48. 若有代数式(其中e仅代表自然对数的底数,不是变量),则下列能够正确表示该代数式的C语言表达式是______。

A. sqn(abs(n^x+e^x))

B. sqrt(fabs(pow(n,x)+pow(x,e)))

C. sqrt(fabs(pow(n,x)+exp(x)))

D. sqrt(fabs(pow(x,n)+exp(x)))

49. 下列程序的运行结果为______。

#include<stdio.h>

void abc(char *str)

{int a,b,i,j;

for(i=j=0;str[i]!="0";i++)

if(str[i]!="a")

str[j++]=str[i];

str[j]="0";

}

void main()

{char str[]="abcdef";

abc(str);

printf("str[]=%s",str);

}

A. str[]=bcdef B. str[]=abcdef

C. str[]=a D. str[]=ab

50. 以下正确的说法是______。

A. 定义函数时,形参的类型说明可以放在函数体内

B. return后边的值不能为表达式

C. 如果函数值的类型与返回值类型不一致,以函数值类型为准

D. 如果形参与实参类型不一致,以实参类型为准


本文标签: 函数 定义 形参