2014年9月二级C语言程序设计模拟(2)试题

更新时间:2024-04-14 18:35:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2014年9月二级C语言程序设计模拟(2)

单项选择题

1. 算法的时间复杂度是指( )。 A: B: C: D:

算法的长度

执行算法所需要的时间 算法中的指令条数

算法执行过程中所需要的基本运算次数

2. 以下数据结构中,属于非线性数据结构的是( )。 A: B: C: D:

栈 线性表 队列 二叉树

3. 数据结构中,与所使用的计算机无关的是数据的( )。 A: B: C: D:

存储结构 物理结构 逻辑结构 线性结构

4. 内聚性是对模块功能强度的衡量,下列选项中,内聚性较弱的是( )。 A: B: C: D:

顺序内聚 偶然内聚 时间内聚 逻辑内聚

5. 在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的( )。 A:

连接码

B: C: D:

关系码 外码 候选码

6. 检查软件产品是否符合需求定义的过程称为( )。 A: B: C: D:

确认测试 需求测试 验证测试 路径测试

7. 数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是( )。 A: B: C: D:

控制流 加工 存储文件 源和潭

8. 待排序的关键码序列为(15,20,9,30,67,65,45,90),要按关键码值递增的顺序排序,采取简单选择排序法,第一趟排序后关键码15被放到第( )个位置。 A: B: C: D:

2 3 4 5

9. 对关系S和关系R进行集合运算,结果中既包含关系S中的所有元组也包含关系R中的所有元组,这样的集合运算称为( )。 A: B: C: D:

并运算 交运算 差运算 除运算

10. 下列选项中,不属于数据管理员(DBA)职责的是( )。 A: B: C: D:

数据库维护 数据库设计

改善系统性能,提高系统效率 数据类型转换

11. C语言规定,在一个C程序中,main()函数的位置( )。 A: B: C: D:

必须在系统调用的库函数之后 必须在程序的开始 必须在程序的最后 可以在任意位置

12. 以下叙述中正确的是( )。 A: B: C: D:

C语言比其他语言高级

C语言可以不用编译就能被计算机识别执行

C语言以接近英语国家的自然语言和数学语言作为语言的表达形式 C语言出现的最晚,具有其他语言的一切优点

13. 已知int a=6;则执行a+=a-=a*a;语句后,a的值为( )。 A: B: C: D:

36 0 -24 -60

14. 下列叙述中错误的是( )。 A: B: C: D:

C语句必须以分号结束

复合语句在语法上被看作一条语句

空语句出现在任何位置都不会影响程序运行 赋值表达式末尾加分号就构成赋值语句

15. 若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是( )。 A: B: C: D:

2.5 2.75 3.5 0

16. 若下列选项中的各变量均为整型且已有值,其中不正确的赋值语句是( )。 A: B: C: D:

++i;

n1=(n2/(n3=2)); k=i=j; a=b+c=2;

17. 下列关于逻辑运算符两侧运算对象的叙述中正确的是( )。 A: B: C: D:

只能是整数0或1 只能是整数0或非0整数 可以是结构体类型的数据 可以是任意合法的表达式

18. 若有说明int a[3][4];则a数组元素的非法引用是( )。 A: B: C: D:

a[0][2*1] a[1][3] a[4-2][0] a[0][4]

19. 下列说法不正确的是( )。 A: B: C:

int*ptr;//指针指向整形数据 char*ptr;//指针的类型是字符型指针 int**ptr;//指针的类型是双重指针

D:针

int(*ptr)[3];//是一个指针数组,数组共有三个元素,而三个元素是int型指

20. 有以下程序 #include〈 stdio.h 〉 void main() {

char s[]={\;int i,n=0; for(i=0;s[i]!=0;i++)

if(s[i]〈 =′a′&&s[i] 〉=′z′)n++; printf(\%d\n\,n); }

程序运行后的输出结果是( )。 A: B: C: D:

0 2 3 5

21. 有以下程序: #include〈 stdio.h 〉 main()

{int a[]={1,2,3,4),y,*p=&a[3]; --p;y=*p;printf(\%d\n\,y); }

程序的运行结果是( )。 A: B: C: D:

y=0 y=1 y=2 y=3

22. 下面的for语句的循环次数为( )。

for(x=1,y=0;(y!=19)&&(x〈 6);x++); A: B:

是无限循环 循环次数不定

C: D:

最多执行6次 最多执行5次

23. 下列程序的输出结果是( )。 #include〈 stdio.h 〉 void main()

{ int a=0,b=1,c=2; if(++a 〉0‖++b 〉0) ++c;

printf(\%d,%d,%d\,a,b,c); } A: B: C: D:

0,1,2 1,2,3 1,1,3 1,2,2

24. 有以下程序: #include 〈 stdio.h 〉 main() { int c;

while((c=getchar())!=′\n′) { switch(c-′3′) { case 0:

case 1:putchar(c+4); case 2:putchar(c+4);break; case 3:putchar(c+3); case 4:putchar(c+3);break; }}

printf(\\n\;}

从第一列开始输入数据(〈 CR 〉代表一个回车符):3845〈 CR 〉,则程序输出结果为( )。 A: B: C: D:

77889 77868 776810 7.78866e+007

25. C语言规定,函数返回值的类型是( )。 A:

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

B: C: D:

由return语句中的表达式类型所决定 由调用该函数时系统临时决定

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

26. 执行下列程序时输入456〈 空格 〉789〈 空格 〉123〈 回车 〉,输出结果是( )。 #include〈 stdio.h 〉 main()

{ char m[80]; int c,i;

scanf(\%c\,&c); scanf(\%d\,&i); scanf(\%s\,&m);

printf(\%c,%d,%s\n\,c,i,m); } A: B: C: D:

4.56789e+008 4.78912e+006 4,56,789,1 23 4,56,789

27. 已知下列函数定义: fun(int *b,int c,int d) { int k;

for(k=0;k〈 c*d;k++) { *b=c+d; b++;} }

则调用此函数的正确写法是(假设变量a的说明为int a[10])( )。 A: B: C: D:

fun(*a,6,14); fun(&a,6,8); fun(a,8,4); fun((int)a,8,6);

28. 设Y为整型变量,A=1,A的地址为EF01;B=2,B的地址为EF02;执行语句B=&A;Y=&b;后Y的值( )。 A:

1

B: C: D:

2 EF01 EF02

29. 有以下程序: #include〈 stdio.h 〉 int flint t[],int n); main()

{ int a[4]={1,2,3,4},s; s=f(a,2);printf(\%d\n\,s); }

int flint t[],int n)

{ if((n 〉0)&&(n〈 5))return t[n+1]+f(t,n-1); else return 0: }

程序运行后的输出结果是( )。 A: B: C: D:

4 7 10 6

30. 以下语句定义正确的是( )。 A: B: C: D:

int a[1][4]={1,2,3,4,5);

float a[3][]={{1,2},{2,3},{3,1}};

long a[2][3]={{1},{1,2},{1,2,3},{0,0}}; double a[][3]={8);

31. 下列一维数组说明中,不正确的是( )。 A: B: C: D:

int N; scanf(\%d\,&N); int b[N]; float a[]={1,6,6,0,2}; #define S 10 int a[S+5];

32. 下面函数的功能是( )。 SSS(S,t) char*s,*t;

{ while((*s)&&(*t)&&(*t++==*s++)); return(*s-*t); } A: B: C: D:

将字符串s复制到字符串t中 比较两个字符串的大小 求字符串的长度

将字符串S接续到字符串t中

33. 有以下程序: #include〈 stdio.h 〉 #include\.h\void fun(char*s[],int n) {

char*t;int id; for(i=0;i〈 n-1;i++) for(j=i+1;j〈 n;j++)

if(strlen(s[i]) 〉strlen(s[j])) {t=s[i];s[i]=s[j];s[j]=t;} } main() {

char *ss[]={\,\,\,\,\; fun(ss,5);printf(\%s,%s\n\,ss[0],ss[4]); }

程序的运行结果是( )。 A: B: C: D:

xy,aaaacc aaaacc,xy bcc.aabCC aabcc,bcc

34. 若已定义:

int a[]={0,1,2,3,4,5,6,7,8,9),*p=a,i; 其中0≤i≤9,则对a数组元素不正确的引用是( )。 A: B:

a[p-a] *(&a[i])

C: D:

p[i] a[10]

35. 以下选项中可用作C程序合法实数的是( )。 A: B: C: D:

0.1 3.0e0.2 E9 9.12E

36. 以下叙述中不正确的是( )。 A: B: C: D:

预处理命令行都必须以#号开始,结尾不加分号 在程序中凡是以#号开始的语句行都是预处理命令行 C程序在执行过程中对预处理命令进行处理 预处理命令可以放在程序中的任何位置

37. 以下程序的输出结果是( )。 #include〈 stdio.h 〉 #define F(x)2.84+x

#define w(y)printf(\%d\,(int)(y)) #define P(y)w(y) main() { int x=2; P(F(5)*x); } A: B: C: D:struct st { int a; float b: }d;

12 13 14 16

38. 设有下面的定义:

int*p;

要使p指向结构变量d中的a成员,正确的赋值语句是( )。 A: B: C: D:

*p=d.a; p=&a; p=d.a; p=&d.a;

39. 交换两个变量的值,不允许用临时变量,应该使用下列( )位运算符。 A: B: C: D:

& ^ ‖ ~

40. 如果需要打开一个已经存在的非空文件“FILE”并进行修改,正确的语句是( )。 A: B: C: D:

fp=fopen(\,\; fp=fopen(\,\; fp=fopen(\,\; fp=fopen(\,\;

程序填空题

41. 用筛选法可得到2~n(n〈 10000)之间的所有素数,方法是:首先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成0);接着从数表中找下一个非0数,并从数表中删去该数的所有倍数;依此类推,直到所找的下一个数等于n为止。这样会得到一个序列:

2,3,5,7,1 l,1 3,17,1 9,23,??????

函数fun用筛选法找出所有小于等于n的素数,并统计素数的个数作为函数值返回。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! #include 〈 stdio.h 〉 int fun(int n)

{ int a[10000],i,j,count=0; for(i=2;i〈 =n;i++)a[i] =i; i=2;

while(i〈 n){

/**********found**********/ for (j=a[i]*2;j〈 =n;j+=____1____) a[j]=0; i++;

/**********found**********/ while(____2____==0) i++; }

printf(\\nThe prime number between 2 to %d\n\,n); for (i=2; i〈 =n; i++)

/**********found**********/ if(a[i]!=____3____)

{ count++;print f(count%15? \%5d\:\\n%5d\,a[i]);} return count; } main()

{ int n=20,r; r=fun(n);

printf(\\nThe number of prime is: %d\n\,r); }

程序修改题

42. 给定程序MODI1.C中函数fun的功能是:根据以下公式求x值,并作为函数值返回。 例如,给指定精度的变量eps输入0.0005时,应当输出Pi=3.141480。

请改正程序中的错误,使它能得出正确结果。________

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 #ihclude〈 math.h 〉 #include〈 stdio.h 〉 double fun(double eps) { double s,t;int n=1; s=0.0;

/**********found**********/ t=0;

while(t 〉epS) { s+=t;

t=t * n/(2*n+1); n++; }

/**********found**********/ return(s);

} main() { double x;

printf(\\nPlease enter a

precision:\;scanf(¨%1f¨,&x);

printf(\\neps=%1f,Pi=%if\n\n¨,x,fun(x)); }

程序设计题

43. 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组S中,请编写函数fun,它的功能是:把分数最高的学生数据放在h所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。 注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include 〈 stdio.h 〉 #define N 16 typedef Struct { char num[10]; int s; } STREC;

int fun(STREC *a,STREC*b) {

________ } main()

(STREC S[N]={{\,85},{\,76},{\,69},{\,85},{\,91},{\,72},{\,64},{\,87},{\,85},{\,91},{\,64},{\,91},{\,77},{\,64}, {\,64},{\,72}};STREC h[N]; int i,n;FILE *out; n=fun(s,h);

printf(\%d highest score:\n\,n); for(i=0;i〈 n; i++)

printf(\%s %4d\n\,h[i].num,h[i].S); print f(\\n\;

out=fopen(\.dat\,\; fprintf(out,\%d\n\,n); for(i=0;i〈 n; i++)

fprintf(out,\%4d\n\,h[i].s); fclose(out); }

本文来源:https://www.bwwdw.com/article/vilp.html

Top