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. 如果形参与实参类型不一致,以实参类型为准
版权声明:本文标题:二级C语言模拟题2018年(47)_真题-无答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1708216808h517016.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论