2021-2022年甘肃省张掖市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2021-2022年甘肃省张掖市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2021-2022年甘肃省张掖市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2021-2022年甘肃省张掖市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2021-2022年甘肃省张掖市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2021-2022年甘肃省张掖市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.某二叉树结点的中序序列为A、B、C、D、E、F、G,后序序列为B、D、C、A、F、G、E,该二叉树对应的层次遍历序列为()

A.E、G、F、A、C、D、B

B.E、A、C、B、D、G、F

C.E、A、G、C、F、B、D

D.E、G、A、C、D、F、B

2.以下能正确定义且赋初值的语句是______。A.intn1=n2=10;

B.charc=32;

C.floatf=f+1.1;

D.doublex=12.3E2.5;

3.若有定义“intk=7,x=12;”,则以下表达式值为3的是()。

A.(x%=k)-(k%=5)B.x%=(k%=5)C.x%=(k-k%5)D.x%=k-k%5

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

A.连接码B.关系码C.外码D.候选码

5.

6.顺序查找不论在顺序线性表中还是在链式线性表中的时间复杂度为()。

A.O(n)B.O(n^2)C.O(n^1/2)D.O(1og2n)

7.有以下程序

#include<stdio.h>

main()

{structnode{intn;structnode*next;}*p;

structnodex[3]={{2,x+1},{4,x+2},{6,NULL}};

p=x:

printf("%d,",p->n);

printf("%d\n",P->next->n);

}

程序运行后的输出结果是A.A.2,3B.2,4C.3,4D.4,6

8.设以下变量均为int类型,则值不等于7的表达式是()。

A.(x=y=6,x+y,x+1)

B.(x=y=6,x+y,y+1)

C.(x=6,x+1,y=6,x+y)

D.(y=6,y+l,x=y,x+1)

9.

10.下列选项中,能正确定义数组的语句是()。

A.intnum[0..2008];

B.intnum[];

C.intN=2008;intnum[N];

D.#defineN2008;intnum[N];

11.有以下程序

#include<stdio.h>

voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/

{intt,i,j;

for(i=0;i<n-1;j++)

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

if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}

}

main()

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

fun(c+4,6);

for(i=0;i<10;i++)printf("%d,",c[i]);

printf("\n");

}

程序的运行结果是

A.1,2,3,4,5,6,7,8,9,0,

B.0,9,8,7,6,5,1,2,3,4,

C.0,9,8,7,6,5,4,3,2,1,

D.1,2,3,4,9,8,7,6,5,0,

12.设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩.,则表SC的关键字(键或码)为()

A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩

13.以下程序段中的变量已正确定义:for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf(“*”);该程序段的输出结果是()。

A.*B.****C.**D.********

14.如下程序段

#include<stdio.h>

#include<ctype.h>

#include<conio.h>

intfun(char*str)

{inti,j=0;

for(i=0;str[i]!=’\0’;i++)

if(str[i]!=’’)str[j++]=str[i];

str[j]=’\0’;

}

main()

{

charstr[81];

intn;

clrscr();

printf("Inputastring:");

gets(str);

fun(str);

printf("%s\n",str);

}

当运行程序时,输入asdafaaz67<回车>,则输出是A.A.asdafaaz67

B.asdafaaz67

C.asd

D.z67

15.

16.以下正确的字符串常量是()。

A.\\\B.'abc'C.OlympicGames

17.有下列程序:程序执行后的输出结果是()。A.2,14,3,18,4,18

B.1,14,2,18,3,18

C.2,14,3,18,4,22

D.1,14,2,18,3,18,4,18

18.若有定义和语句int**pp,*p,a=10,b=20;pp=&p;p=&a;p=&b;printf("%d,%d\n",*p,**pp);则输出结果是()

A.10,10B.10,20C.20,10D.20,20

19.有以下程序:#include<stdio.h>main(){inta[3][3]={0,1,2,3,4,5,6,7,8},(*p)[3],i;p=a;for(i=0;i<3;i++){printf(“%d”,(*p)[i]);p++;}}程序的运行结果是()。

A.036B.012C.048D.147

20.以下选项中,合法的一组C语言数值常量是()。

A.12.0Xa234.5e0

B.028.5e-3-0xf

C..1774e1.50abc

D.0x8A10,0003.e5

二、2.填空题(20题)21.定义inta=5,b;,则执行表达式b=++a*--a之后,变量b的值为【】。

22.下列程序的运行结果是______。

#include<stdio.h>

longfunc(intx)

{longp;

if(x==0‖x==1)

return(1);

p=x*func(x-1);

return(p);

}

main()

{printf("%d\n",func(4));

}

23.在运算过程中,能够使空表与非空表的运算统一的结构是【】。

24.有以下程序:

#include<stdio.h>

main()

{charch1,ch2;intn1,n2

ch1=getchar();ch2=getchar();

n1=ch1-'0';n2=n1*10+(ch2-'0');

printf("%d\n",n2);

}

程序运行时输入:12<回车>,执行后的输出结果是【】。

25.若已知a=10,b=20,则表达式!a<b的值为【】。

26.在循环中,continue语句与break语句的区别是:______语句只是结束本次循环,然后进行循环的条件判定。

27.下列程序的输出结果是16.00,请填空:

main()

{

inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

28.以下程序运行后的输出结果是【】。

main()

{chars[]="9876",*p;

for(p=s;p<s+2;p++)printf("%s\n",p);

}

29.语句"int(*ptr)();"的含义是______是指向函数的指针,该函数返回一个int型数据。

30.下列程序的输出结果是______。

main()

{inta=1,b=2,c=3,t=0;

if(a<B){t=a;a=b;b=t;}

if(a<C){t=a;a=c;c=t;}

printf("%d,%d,%d\n",a,b,C);

}

31.在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4;一个double型数据在内存中所占的字节数为【】。

32.以下程序运行后的输出结果是【】。

main()

{

charc1,c2;

for(c1='0',c2='9';c1<c2;c1++,c2--)

printf("%c%c",c1,c2);

printf("\n");

}

33.若有下面的程序片段:int[12]={0},*p[3],**pp,i;for(i=0;i<3;i)p[i]=&a[i*4];pp=p;则对数组元素的错误引用是

34.以下sum函数的功能是计算下列级数之和:

请给函数中的各变量正确赋初值。

doublesum(douLlex,intn)

{inti;

doublea,b,s;

【】

for(i=1;i<=n;i++){a=a*x;b=b*i;s=s+a/b;}

returns;

}

35.若有如下程序:

main()

{intx=4,y=3,x=2,t;

t=x<y<z;

printf("%d\n",t);}

则程序运行后的输出结果是【】。

36.以下程序的功能是输出如下形式的方阵:

13141516

9101112

5678

1234

请填空。

main()

{inti,j,x;

for(j=4;j>0;j--)

{for(i=1;i<=4;i++)

{x=(j-1)*4+【】;

printf("%4d",x);

}

printf("\n");

}

}

37.以下程序的功能是:通过函数func输入字符并统计输入字符的个数。输入时用字符作为输入结束标志。请填空。#include<stdio.h>long();/*函数说明语句*/main(){longn;n=func();printf"n=%1d\n",n);}longfunc(){longm;for(m=0;getchar()!='';());returnm:}

38.有以下程序

main()

{intt=1,i=5;

for(;i>=0;i--)t*=i;

printf("%d\n",t);

}

执行后输出结果是______。

39.以下条件表达式可计算:1+|a|的值,请填空。a>=0?【】:【】

40.下面的程序实现的是指针p所指向的地址的n个数中,求出最大的和最小的数据,请填空。

fun(int*p,intn)

{int*q;

intmax,min;

max=min=*p;

for(q=p;【】;q++)

if(*q>max)max=*q;

elseif(*q<min)min=*q;}

三、1.选择题(20题)41.设有以下语句:chara=3,b=6,C;c=a|b<<2;printf("%d\n",C);则c的二进制值是()。

A.11011B.10100C.11100D.11000

42.有以下程序main(){chara[7]="a0\0a0\0";inti,j;i=sizeof(a);j=strlen(a);printf("%d%d\n",i,j);}程序运行后的输出结果是______。

A.22B.76C.72D.62

43.以下4个程序中,完全正确的是()。

A.#include<stdio.h>main();{/*programming*/printf("programming!\n");}

B.#include<stdio.h>main(){/*/programming/*/printf("programming!\n");}

C.#include<stdio.h>main(){/*/*programming*/*/printf("programming!\n");}

D.#include<stdio.h>main(){/*programming*/printf("programming!\n");}

44.下列程序的运行结果是()。main(){inta=-5,b=1,c=1;intx=0,Y=2,z=0;if(c>0)x=x+y;if(a<=0){if(b>0)if(c<=0)y=x-y;}elseif(c>0)Y=x-y;elsez=y;printf("%d,%d,%d\n",x,y,z);}

A.2,2,0B.2,2,2C.0,2,0D.2,0,2

45.关系表中的每一行称为一个()。

A.元组B.字段C.属性D.码

46.若有以下说明和语句intc[4][5],(*p)[5];p=c;能够正确引用c数组元素的是

A.p+1B.*(p+3)C.*(p+1)+3D.*(P[0]+2)

47.下列程序的输出结果是______。#includemain(){charb[30],*chp;strcpy(&b[0],"CH");strcpy(6b[1],"DEF");strcpy(6b[2],"ABC");printf("%s\n",b);}

A.CHDEFB.DEFABCC.CDABCD.CHABC

48.用链表表示线性表的优点是()。

A.便于随机存取B.花费的存储空间较顺序存储少C.便于插入和删除操作D.数据元素的物理顺序与逻辑顺序相同

49.以下程序的运行结果是()。#include<stdio.h>#defineMIN(x,y)(x)<(y)?(x):(y)main(){inti=10,j=15,k;k=10*MIN(i,j);printf("%d\n",k);}

A.10B.15C.100D.150

50.设有以下语句:inta=1,b=2,c;c=a∧(b<<2);执行后,c的值为()。

A.6B.7C.8D.9

51.能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是

A.a>=10ora<=0

B.a>=0|a<=10

C.a>=10&&a<=0

D.a>=10‖a<=0

52.下列叙述中正确的是()。

A.算法的执行效率与数据的存储结构无关

B.算法的空间复杂度是指算法程序中指令(或语句)的条数

C.算法的有穷性是指算法必须能在执行有限个步骤之后终止

D.以上3种描述都不对

53.下列与表达式“b=(a<0?-1:a>0?1:0)”的功能等价选项是()

A.b=0;if(a>=0)if(a>0)b=1;elseb=-1;

B.if(a>0)b=1;elseif(a<0)b=-1;elseb=0;

C.if(A)if(a<0)b=-1;elseif(a>0)b=1;elseb=0;

D.b=-1;if(A)if(a>0)b=1;elseif(a==0)b=0;elseb=-1;

54.在宏定义#definePI3.14159中,用宏名PI代替一个()

A.单精度数B.双精度数C.常量D.字符串

55.以下程序的输出结果是voidfun(float*p1,float*p2,float*s){s=(float*)calloc(1,sizeof(float));*s=*p1+*p2++;}main(){floata[2]={1.1,2.2},b[2]={10.0,20.0},*s=a;fun(a,b,s);printf("%5.2f\n",*s);}

A.11.1B.12C.21.1D.1.1

56.有以下程序:#include<stdio.h>main()}chara,b,e,d;seanf("%e,%e,%d,%d",&a,&b,&c,&d);printf("%c,%c,%e,%c\n",a,b,c,d);若运行时从键盘上输入:6,5,65,66<回车>,则输出结果是()。

A.6,5,A,BB.6,5,65,66C.6,5,6,5D.6,5,6,6

57.算法的有穷性是指A.算法程序的运行时间是有限的

B.算法程序所处理的数据量是有限的

C.算法程序的长度是有限的

D.算法只能被有限的用户使用

58.关系数据库的数据及更新操作必须遵循()等完整性规则。

A.实体完整性和参照完整性

B.参照完整性和用户自定义完整性

C.实体完整性和用户自定义完整性

D.实体完整性、参照完整性和用户自定义完整性

59.当执行下列宏定义命令后,S的值为()#defineR3.0#definePI3.1415926#defineL2*PI*R#defineSPI*R*R

A.3.1415926B.18.849556C.3D.28.2743334

60.两个或两个以上模块之间联系的紧密程度称为()。

A.耦合性B.内聚性C.复杂性D.数据传输特性

四、选择题(20题)61.设x为int型变量,则执行以下语句后,x的值为()。x=10;x=x-=x-x;

A.10B.20C.40D.30

62.以下关于宏的叙述中正确的是()。

A.宏替换没有数据类型限制

B.宏定义必须位于源程序中所有语句之前

C.宏名必须用大写字母表示

D.宏调用比函数调用耗费时间

63.有以下程序:

程序执行后的输出结果是()。

A.45B.20C.25D.36

64.在c语言中,只有在使用时才占用内存单元的变量,其存储类型是()。A.aut0和Iegister

B.extern和register

C.aut0和static

D.static和register

65.对如下二叉树进行后序遍历的结果为()。

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

66.有以下程序:

#include<stdio.h>

main()

{inta=12,C;

c=(a<<2)<<1;

printf("%d\n",c);

}

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

A.3B.50C.2D.96

67.

68.设有数组定义:chararray[]="Chinese";则数组array所占的空间为

A.6个字节B.7个字节C.8个字节D.9个字节

69.

70.

71.

72.有以下程序:

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

A.6B.3C.8D.12

73.有以下程序段程序的输出结果是()。

A.a=10b=50c=10

B.a=10b=50c=30

C.a=10b=30c=lO

D.a=50b=30c=50

74.

以下叙述中正确的是()。

A.预处理命令行必须位于C源程序的起始位置

B.在C语言中,预处理命令行都以“#”开头

C.每个C程序必须在开头包含预处理命令行:#include<stdio.h>

D.C语言的预处理不能实现宏定义和条件编译的功能

75.有定义:“inta=2,b=3,c=4;”,则下列选项中值为0的表达式是()。

A.(!a==1)&&(!b==0)B.(a<b)&&!cC.D.1E.a&&bF.aG.H.(b+b)&&(c-a)

76.在下列关于二叉树的叙述中,选出正确的一项()。

A.在二叉树中,任何一个结点的度都是2

B.二叉树的度为2

C.在二叉树中至少有一个结点的度是2

D.一棵二叉树的度可以小于2

77.若在定义语句inta,b,c,*P=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是()。

A.

B.

C.

D.

78.

79.有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是()

A.*p+9B.*(p+8)C.*p+=9D.p+8

80.

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:依次取出字符串中所有的字母字符,形成新的字符串,并取代原字符串。例如,若输入的字符串是:“ab232bd34bkw”,则输出结果是:“abbdbkw”。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写函数proc(),其功能是:计算并输出下列多项式值。S=(1+1/2)+(1/3+1/4)+…+(1/(2n1)+1/2n)例如,若主函数从键盘给n输入100后,则输出为s=5.878031。n的值要求大于1但不大于100。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.C

2.B解析:本题考查的知识点是变量赋初值.选项A中的语句只能起定义n1的作用,而n2=10是n1的初始值表达式,但因前面没有定义过n2,所以编译会报错“n2未定义”,故不正确。选项B使用一个整数初始化一个字符变量是正确的,因为字符变量中保存的本来就是整数(某字符的ASCII码值)。选项C定义的初始值表达式中出现了它自身,某些编译器能通过编译,但f在初始化之前是一个未知的值,用未知值来初始化也还是未知值,这是不可取的。选项D的初始值是一个非法常量,因为实型常量指数形式的指数部分必须为整数,这里的2.5非法。

3.A选项A中,表达式“x%=k”结果为5,表达式“k%=5”结果为2,5-2结果为3;选项B中,“k%=5”结果为2,“x%=2”结果为0;选项C中,“k%5”结果为2,“k-k%5”结果为5,“x%5”结果为2;选项D中,“k%5”结果为2,“k-k%5”结果为5,x%5结果为2。故本题答案为A选项。

4.DD)【解析】在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的候选码或候选键。从二维表的所有候选键中选取一个作为用户使用的键称为主键或主码。

5.D

6.A

7.B解析:p指向x的第一个元素,所以p->n的值为2,p->next指向x+1,即指向x的第二个元素,所以p->next->n为4。

8.C

9.D

10.DC语言不允许定义动态数组,定义数组的大小必须为常量表达式。A选项错误,C语言中的数组没有此类型的定义方法;B选项错误,定义数组应指明数组大小,如果不指明数组大小,需要给定元素的个数;C选项错误,N为变量,不能用来定义数组大小。故本题答案为D选项。

11.D解析:在本题中,主函数在调用fun()函数进行排序时,传递的参数是c+4和6,fun()函数实现的功能是将数组c的第5个元素开始的6个元素依次进行从大到小的顺序排列。排序之后,数组c的内容变为{1,2,3,4,9,8,7,6,5,0}。

12.C学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择C项。

13.AC语言中,分号为一条语句的结束。因此“for(i=0;i<4;i++,i++)for(k=1;k<3;k++);”是完整的语句,“printf(“*”);”是独立语句,不属于for循环。最后执行printf语句输出“*”。故本题答案为A选项。

14.A在本题中,程序首先定义一个返回类型为整型的函数fun,该函数带有一个指针型的形参变量str,从主函数中对其调用时传递的参数我们可以知道,该指针指向的是一个数组,在该函数体中,首先定义两个整型变量,然后执行循环,循环变量i的初始值为0,循环结束的条件是str[i]!=’\\0’,表示取到的数组元素是字符串结束标识,即字符串中的字符被处理完,在循环体中,首先执行条件判断语句if(str[i]!=’’),如果结果为真,说明取到的当前字符不是空字符,这时执行str[j++]=str[i],即将非空格字符保存到数组中;如果为假,说明取到了空格字符,此时不保存,而接着执行下次循环跳过空格字符。循环结束后执行str[j]=’\\0’;,即保存字符结束标识符,用来标识字符串结束。通过上面的这些分析,我们可以知道函数fun的作用是去掉字符数组中的空格字符。

在主函数中,首先定义了一个大小为81的字符数组,然后调用函数clrscr()清除输入文本窗口,接着输出一条提示语句,执行gets(str);语句,该语句的作用是从键盘输入一个字符串到str数组,碰到换行符结束。然后调用函数fun,其实参为str。通过上面对函数fun作用的分析我们可以知道,调用函数后输入字符串中的空格符都被删除了,最后得到的字符串为asdafaaz67。

程序最后执行输出语句,输出字符数组str中的字符串,因此,程序最终的输出结果是asdafaaz67,本题答案选A。

15.A

16.D解析:在C语言中,字符串常量是以双引号括起来的字符序列。故选项B和C不正确。字符序列中可包含一些转义字符,转义字符都是以“\\”开头的。选项A中包含了三个“\\”,前两个(\\\\)代表了一个“\\”字符,后面一个和“'”一起(\\”)被看作一个……,所以该字符串缺少一个结束的“'”,故不正确。选项D的两个……之间没有任何字符,代表的是一个空串,是合法的字符串常量,故应该选择D。

17.A程序定义整型变量a和i,其中a的初值为7。for循环中,循环变量i的取值为1,2,3。循环体中判断a的取值,当a>14时,执行break跳出循环;当a取值为奇数时,a%2==1,a自增3,执行continue继续执行循环体;当a取值为偶数时,a%2==0,a自增4,输出i和a的值。i取值为1时,a取值为7,自增3后a的值为10,执行下一个循环。i取值为2时,a取值为10,自增4后a的值为14,输出2,14。i取值为3时,a取值为14,自增4后a的值为18,输出3,18。i取值为4时,a取值为18,循环终止,输出4,18。综上,程序输出:2,14,3,18,4,18。本题答案为A选项。

18.D

19.Cmain函数定义3行3列的整型二维数组a;定义数组指针P,P指向包含3个元素的数组。程序首先将a赋给p。for循环中,i=0时,P指向a的第1个元素{0,1,2},输出p[0]即0;i=1时,p指向a的第2个元素{3,4,5},输出P[1]即4;i=2时,p指向a的第3个元素{6,7,8},输出P[2]即8。所以程序输出048。故本题答案为C选项。

20.AC语言中,八进制整型常量以0开头,十六进制整型常量以0x或0X开头。C语言中的实型常量有两种表示形式:小数形式和指数形式。小数形式,表示的实型常量必须要有小数点;指数形式,在e或E后加一个整数来表示以10为底数的幂数,且规定字母e或E之前必须要有数字,且e或E后面的指数必须为整数。B选项中“028”不合法,八进制中没有数字8。C选项中,e后面的指数不是整数。D选项中“10,000”数字之间不能有逗号。故本题答案为A选项。

21.2525解析:#NAME?

22.2424解析:本题考查函数的循环调用。p=x*func(x-1),当x=4时,不满足if语句的条件,p=4*func(3),x=3也不满足条件,则func(3)=3*func(2),func(2)=2*func(1),x=1满足条件return(1),则输出结果为4*3*2*1-24。

23.循环链表循环链表解析:在链表的运算过程中,采用链接方式即循环链表的结构把空表与非空表的运算统一起来。循环链表具有两个特点:①在循环链表中增加了一个表头结点,其数据域为任意或根据需要来设置,指针域指向线性表的第一个元素的结点。循环链表的头指针指向表头结点。②循环链表中最后一个结点的指针不是空,而是指向表头结点。

24.1212解析:本题中n1='1'-'0'=1,n2=1×10+('2'-'0')=10+2=12。

25.11解析:计算表达式!a<b,先计算!a,因a的值为10,!a的值为0,而关系表达式0<20为真,所以表达式!a<b的值为1。

26.continuecontinue解析:continue语句只是结束本次循环,然后进行循环的条件判定。break语句是终止整个循环的执行,不再进行条件判定。

解析:本题,已知结果z=16.00,即16.0=a/2+b*x/y+1/2,分别把a、b,代入,得到16.0=9/2+2*x/1.1+1/2。因为a=9,a是整型,所以9/2的值在没有进行类型转换时,等于4,1/2同理,等于0。代入求一元一次方程,很容易就可以得出x=6.6。

28.98768769876\r\n876解析:指针是一种数据类型,这种数据类型的变量用来存放内存中分配的存储单元的首地址。指针的定义:

类型说明符*指针变量名;

29.ptrptr解析:本题考查函数指针的概念。函数指针的定义格式是:类型标识符(*旨针变量名)()。注:“类型标识符”为函数返回值的类型。

30.3123,1,2解析:分析程序,第一个if语句,a=1,b=2,控制条件a<b成立,则交换a、b的值,此时a=2,b=1。第二个if语句,a=2,c=3,控制条件a<c成立,则交换a、c的值,此时a=3,c=2。

31.88解析:在一般系统中,一个float型数据在内存中占4个字节(32位),一个double型数据占8个字节。

32.09182736450918273645解析:题目中为for循环定义了两个字符型循环变量c1和c2,循环开始时分别初始化为字符‘0’和‘9’,然后每次循环结束给c1增1、c2减l,循环条件为c1<c2,即让c1的值依次为‘0’、‘1’、‘2’…,c2的值依次为‘9’、‘8’、‘7’…,直到两个数相遇时结束循环。又因为该循环的循环体每次按字符形式输出c1和c2的值。所以最终的输出结果为:0918273645。

33.C

34.a=1.0;b=1.0;s=1.0;a=1.0;b=1.0;s=1.0;解析:各种数值型数据间进行混合运算时,不同类型的数据要先转换成同一类型,再进行运算。本题的结果为double型。

35.1

36.ii解析:外循环是递减的,方阵中的每个元素为(j-1)*4+i,因此空格处填i。

37.tunc()m++tunc()m++解析:第一空白处,在C语言中如果子函数在主函数之后定义,就要对其进行说明,说明的形式为:“函数类型名函数名”。所以此处填写func()。第二空白处,整型变量m表示输入字符的个数,所以每输入一个字符,变量m的值就加1。所以此处填写m++。

38.00解析:本题中的for循环共执行了6次,每执行一次将相应i的值相乘,最后当i=-1时停止循环.该for循环执行完后t的值为5*4*3*2*1*0=0,故最后输出I的值为0。

39.1+a1-a1+a,1-a解析:考查条件运算符的使用。因为题目中求的是1+|a|的值,即1和a的绝对值之和,所以根据数学中求绝对值的规则;当a>=0时,绝对值取本身,当a<0时,绝对值取相反数,再结合条件运算符的计算规则,可得到本题的答案为a>=0。

40.q<p+nq<p+n解析:通过地址传递可以在被调函数中对调用函数中的变量进行引用。

41.A解析:因为左移运算符<<的优先级比位或运算符,要高,所以先计算b<<2。而左移n位在不溢出的前提下相当于乘以2n,所以b<<2=6*22=24。再计算3|24=(00000011)2|(00011000)2=(00011011)2,故本题的正确答案是A。

42.C题目中需要求出程序的输出值i,j,其中i的值由sizeof决定,j的值由strlen函数决定。

sizeof是C语言的一种运算符,以字节的形式给出操作数的存储空间的大小。sizeof的操作对象可以是具体的数据类型,也可以是变量。题目中的操作数为数组名,利用sizeof可计算出数组所占用内存的字节数,题目中数组类型为char,大小为7,故该数组占用的内存数为7。

strlen函数则是计算一段字符串的长度,可以从整个字符串的头部开始计算,也可以从字符串的中间开始计算,当碰到第一个字符串结束符“\\0”,则停止计算,返回当前的计算值。题目中在前两个字符之后就出现了结束符“\\0”,故strlen函数的值为2。

43.B解析:选项A在定义main()函数时,函数头后面多了一个分号,故选项A不正确;C语言中的注释是不能嵌套的,故选项C不正确:选项D在使用预编译指令#include时漏掉了#号,所以也是错误的。故应该选择B。

44.A解析:本题考查ifelse语句的使用。先判断第1个if语句,因为c=1>0,所以x=x+y=0+2=2。第1个if语句,因为a=-5<0,所以进入下列的复合语句。经判断发现,复合语句中第2个if语句的条件均不满足,不执行任何语句退出,在这个过程中y和z的值没有发生变化。

45.A解析:关系表中,每一行称为一个元组,对应表中的一条记录;每一列称为表中的一个属性,对应表中的一个字段;在二维表中凡能唯一标识元组的最小属性集称为该表的键或码。

46.D解析:本题中定义了一个二维数组c和一个指针数组p并初始化让它指向c,显然此时p中的各元素为地址,选项A中p+1,此时其中的1代表的长度是整个;维数组c的长度,故p+1将让p指向c数组后面的元素,故不能引用c数组中的成员,故选项A错误;同理选项B和选项C都不正确,选项D中p[0]指的是指针数组中的第一个元素的地址即c的首地址,此时的1的长度代表的是数组c中一行的长度,故p[0]+2代表的是第三行的首地址,而*(p[0]+2)将代表第三行的第一个元素的地址,所以,4个选项中选项D符合题意。

47.C

48.CC。【解析】数据结构是相互之间存在一种或多种特定关系的数据元素的集合。”关系”描述的是数据元素之间的逻辑关系,因此又称数据的逻辑结构。数据的存储结构是指数据结构(数据的逻辑结构)在计算机中的表示,又称物理结构。数据的存储结构有顺序存储结构和链式存储结构两种。不同存储结构的数据处理效率不同。由于链表采用链式存储结构,元素的物理顺序并不连续,对于插入和删除无需移动元素,很方便,当查找元素时就需要逐个元素查找,因此查找的时间相对更长。

49.B解析:该题考查函数的宏定义及三目运算符。表达式10*MIN(i,j)利用宏展开后为:10*i<j?i:j,即100<15?10:15,其值为15,然后将15赋给k。

50.D解析:先算括号内的表达式,即先对b进行左移运算:b的二进制为00000010,左移后变为00001000,然后再与a进行异或运算(参与运算的两个对应位相同,则为0,相异则为1),结果为00001001,换算成十进制数结果为9。对于左移运算也可直接用此规则:左移1位相当于该数乘以2,左移2位相当于该数乘以22=4,依此类推。

51.D

52.C解析:算法的执行效率与数据的存储结构密切相关。算法的空间复杂度是指算法执行过程中所需的存储空间。

53.B

54.D解析:程序中用#define定义后,PI代表一串字符。

55.D解析:本题主要考查了一维数组名用作函数实参进行的运算,数组名作实参相当于传递的是地址,这样在函数中对形参进行的操作可以影响到实参。

56.A解析:本题考查格式字符的输入和输出。字符常量在内存中是以其ASCII码形式存储的,字符型数据既可以字符形式输出,也可以整数形式输出。程序中变量a,b是以字符型常量输入的,在内存中存储的是字符6和字符5对应的ASCII码;变量c,d是以整型常量输入的,在内存中存储的就是整型常量65和66。输出是以字符形式输出a,b,c,d,所以,将字符常量6和5所对应的ASCII码译成字符常量6和5输出,将整型数65和66对应的字符常量即,'A'和'B'输出。

57.A算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。

58.D解析:关系模型中包括关系数据结构、关系操作集合和关系完整性。关系完整性即数据完整性,包括实体完整性、参照完整性、用户自定义完整性。

59.D

60.A解析:耦合性是模块间互相连接的紧密程度的度量,取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。

[知识拓展]模块的独立程序是评价设计好坏的一个重要标准,衡量软件的模块独立性有两个定性的度量标准。其中内聚性是指一个模块内部各个元素间彼此结合的紧密程度的度最,内聚性是从功能角度来度量模块内的联系;耦合性是模块间互相连接的紧密程度的度量,耦合性从整体的角度来度量模块间的联系。

61.A执行x=x-=x-x语句可写成x=x-(x-x),可看出结果为10,故八选项正确。

62.A宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头,因此B)选项中宏定义必须位于源程序中所有语句之前是错误的。宏名一般用大写,但不是必须用大写,因此c)选项错误。宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值),因此D)选项错误。

63.C统计1~9九个数中的奇数和,此题重点考察指向数组的指针。c语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第i+1个元素。程序运行的结果是l+3+5+7+9=25。1

64.Aaut0:函数中的局部变量动态地分配存储空间,数据存储在动态存储区中,在调用该函数时系统会给它们分配存储空间,在函数调用结束时就自动释放这些存储空间。register:为了提高效率。c语言允许将局部变量的值放在cPu中的寄存器中,这种变量叫“寄存器变量”,只有局部自动变量和形式参数可以作为寄存器变量。extern:外部变量(全局变量)是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件末尾。static:静态局部变量属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放。根据以上分析可知,故本题答案为A)。

65.D解析:后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,道先遍历左子树,然后遍历右子树,最后访问根结点:并且遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。

66.D\n本题考查左移运算符,左移运算符相当于乘以2的2n,所以a<<2=12*22=48,所以(a<<2)<1—48*2=96。

\n

67.B

68.C本题主要考查字符数组的初始化操作。字符数组的初始化可以逐个元素赋值,也可以作为字符串赋值。

逐个元素赋值初始化形式:

char数组名[n]={字符1,字符2,……,字符n};

char数组名[]={字符1,字符2,……,字符n};

作为字符串赋值形式:

char数组名[n]='字符串';

char数组名[]='字符串';

在C语言中,为了方便确定字符串的长度,编译系统在字符串后增加了一个结束标识’\\0’,即ASCII码的0。因此,当采用字符串初始化字符数组时,必须为其保留一个存放结束标识符的位置。

在本题中,用一个字符串作为数组的初值,这种方法直观、方便,而且符合人们的习惯。数组array的长度是7,但所占的空间是8,这点必须要注意。因为字符串常量的最后由系统加上一个’\0’,因此,上面的初始化是chararray[]={′C′,′h′,′i′,′n′,′e′,′s′,′e′,′\0′}。

69.C

70.C

71.D

72.A本题中第一次调用为fun(8,fun(5,6)),因为fun(5,6)返回值为5,所以第二次调用为fun(8,5)--6,因此选择A)。

73.A本题中a>b的!条件不满足,因此不执行逗号表达式“a=b,b=-c;”的操作,而是执行“c=a”的操作,即c的值为10。’故本题答案为A)。

74.B

\n本题是对基本知识点的理解,预处理命令行的位置没有规定,只是习惯写在起始位置而已,当需要时才用#include<stdio.h>头文件,预处理的作用就是实现宏定义和条件编译。

\n

75.A

\n本题考查逻辑与运算“&&”与逻辑或运算“||”。在选项A中,因为!a=0,所以关系表达式!a=1为0,又因为逻辑与运算符“&&”两边的表达式只要一个等于零,则整个表达式为零,所以选项A正确。在选项8中,关系表达式a<b为真,表达式(a<b)&&!C为假,而表达式(a<b)&&!||1为真,所以整个表达式的值为真。选项C中,a&&b的结果为真。在选项D中,a||(b+b)&&(C-a)的结果为真。

76.D节点的度是其子节点的个数,树的度是其节点度的最大值,二叉树的度小于等于2.

77.Dseartf函数中的输入项必须是指针,只有选项D)符合这个要求。

78.A

79.B解析:在C语言的数组元素的引用方法,我们在前面已经讲过了,比如数组元素a[0],可以用表达式*(p+0),即*p来引用,对于数组元素a[1],可以用表达式*(p+1)来引用,在这里,p+1的值就是数组元素a[1]的地址,对此地址使用“间接访问运算符”:*(p+1)就代表存储单元a[1],注意:一对圆括号不可少。同样,对于数组元素a[2],则可以用表达式。(p+2)来引用…,对于数组元素a[9],可以用表达式,(p+9)来引用。因此,当指针变量p指向a数组的起始地址时,若0≤i<10,则数组元素a[i]可以用*(p+i)来表示。

80.B

81.

82.

【解析】首先定义一个变量来存放表达式的和.根据题目中提供的多项式,通过n次循环来求出n项的和。最后把所求得的和返回到主函数当中。

2021-2022年甘肃省张掖市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.某二叉树结点的中序序列为A、B、C、D、E、F、G,后序序列为B、D、C、A、F、G、E,该二叉树对应的层次遍历序列为()

A.E、G、F、A、C、D、B

B.E、A、C、B、D、G、F

C.E、A、G、C、F、B、D

D.E、G、A、C、D、F、B

2.以下能正确定义且赋初值的语句是______。A.intn1=n2=10;

B.charc=32;

C.floatf=f+1.1;

D.doublex=12.3E2.5;

3.若有定义“intk=7,x=12;”,则以下表达式值为3的是()。

A.(x%=k)-(k%=5)B.x%=(k%=5)C.x%=(k-k%5)D.x%=k-k%5

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

A.连接码B.关系码C.外码D.候选码

5.

6.顺序查找不论在顺序线性表中还是在链式线性表中的时间复杂度为()。

A.O(n)B.O(n^2)C.O(n^1/2)D.O(1og2n)

7.有以下程序

#include<stdio.h>

main()

{structnode{intn;structnode*next;}*p;

structnodex[3]={{2,x+1},{4,x+2},{6,NULL}};

p=x:

printf("%d,",p->n);

printf("%d\n",P->next->n);

}

程序运行后的输出结果是A.A.2,3B.2,4C.3,4D.4,6

8.设以下变量均为int类型,则值不等于7的表达式是()。

A.(x=y=6,x+y,x+1)

B.(x=y=6,x+y,y+1)

C.(x=6,x+1,y=6,x+y)

D.(y=6,y+l,x=y,x+1)

9.

10.下列选项中,能正确定义数组的语句是()。

A.intnum[0..2008];

B.intnum[];

C.intN=2008;intnum[N];

D.#defineN2008;intnum[N];

11.有以下程序

#include<stdio.h>

voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/

{intt,i,j;

for(i=0;i<n-1;j++)

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

if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}

}

main()

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

fun(c+4,6);

for(i=0;i<10;i++)printf("%d,",c[i]);

printf("\n");

}

程序的运行结果是

A.1,2,3,4,5,6,7,8,9,0,

B.0,9,8,7,6,5,1,2,3,4,

C.0,9,8,7,6,5,4,3,2,1,

D.1,2,3,4,9,8,7,6,5,0,

12.设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩.,则表SC的关键字(键或码)为()

A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩

13.以下程序段中的变量已正确定义:for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf(“*”);该程序段的输出结果是()。

A.*B.****C.**D.********

14.如下程序段

#include<stdio.h>

#include<ctype.h>

#include<conio.h>

intfun(char*str)

{inti,j=0;

for(i=0;str[i]!=’\0’;i++)

if(str[i]!=’’)str[j++]=str[i];

str[j]=’\0’;

}

main()

{

charstr[81];

intn;

clrscr();

printf("Inputastring:");

gets(str);

fun(str);

printf("%s\n",str);

}

当运行程序时,输入asdafaaz67<回车>,则输出是A.A.asdafaaz67

B.asdafaaz67

C.asd

D.z67

15.

16.以下正确的字符串常量是()。

A.\\\B.'abc'C.OlympicGames

17.有下列程序:程序执行后的输出结果是()。A.2,14,3,18,4,18

B.1,14,2,18,3,18

C.2,14,3,18,4,22

D.1,14,2,18,3,18,4,18

18.若有定义和语句int**pp,*p,a=10,b=20;pp=&p;p=&a;p=&b;printf("%d,%d\n",*p,**pp);则输出结果是()

A.10,10B.10,20C.20,10D.20,20

19.有以下程序:#include<stdio.h>main(){inta[3][3]={0,1,2,3,4,5,6,7,8},(*p)[3],i;p=a;for(i=0;i<3;i++){printf(“%d”,(*p)[i]);p++;}}程序的运行结果是()。

A.036B.012C.048D.147

20.以下选项中,合法的一组C语言数值常量是()。

A.12.0Xa234.5e0

B.028.5e-3-0xf

C..1774e1.50abc

D.0x8A10,0003.e5

二、2.填空题(20题)21.定义inta=5,b;,则执行表达式b=++a*--a之后,变量b的值为【】。

22.下列程序的运行结果是______。

#include<stdio.h>

longfunc(intx)

{longp;

if(x==0‖x==1)

return(1);

p=x*func(x-1);

return(p);

}

main()

{printf("%d\n",func(4));

}

23.在运算过程中,能够使空表与非空表的运算统一的结构是【】。

24.有以下程序:

#include<stdio.h>

main()

{charch1,ch2;intn1,n2

ch1=getchar();ch2=getchar();

n1=ch1-'0';n2=n1*10+(ch2-'0');

printf("%d\n",n2);

}

程序运行时输入:12<回车>,执行后的输出结果是【】。

25.若已知a=10,b=20,则表达式!a<b的值为【】。

26.在循环中,continue语句与break语句的区别是:______语句只是结束本次循环,然后进行循环的条件判定。

27.下列程序的输出结果是16.00,请填空:

main()

{

inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

28.以下程序运行后的输出结果是【】。

main()

{chars[]="9876",*p;

for(p=s;p<s+2;p++)printf("%s\n",p);

}

29.语句"int(*ptr)();"的含义是______是指向函数的指针,该函数返回一个int型数据。

30.下列程序的输出结果是______。

main()

{inta=1,b=2,c=3,t=0;

if(a<B){t=a;a=b;b=t;}

if(a<C){t=a;a=c;c=t;}

printf("%d,%d,%d\n",a,b,C);

}

31.在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4;一个double型数据在内存中所占的字节数为【】。

32.以下程序运行后的输出结果是【】。

main()

{

charc1,c2;

for(c1='0',c2='9';c1<c2;c1++,c2--)

printf("%c%c",c1,c2);

printf("\n");

}

33.若有下面的程序片段:int[12]={0},*p[3],**pp,i;for(i=0;i<3;i)p[i]=&a[i*4];pp=p;则对数组元素的错误引用是

34.以下sum函数的功能是计算下列级数之和:

请给函数中的各变量正确赋初值。

doublesum(douLlex,intn)

{inti;

doublea,b,s;

【】

for(i=1;i<=n;i++){a=a*x;b=b*i;s=s+a/b;}

returns;

}

35.若有如下程序:

main()

{intx=4,y=3,x=2,t;

t=x<y<z;

printf("%d\n",t);}

则程序运行后的输出结果是【】。

36.以下程序的功能是输出如下形式的方阵:

13141516

9101112

5678

1234

请填空。

main()

{inti,j,x;

for(j=4;j>0;j--)

{for(i=1;i<=4;i++)

{x=(j-1)*4+【】;

printf("%4d",x);

}

printf("\n");

}

}

37.以下程序的功能是:通过函数func输入字符并统计输入字符的个数。输入时用字符作为输入结束标志。请填空。#include<stdio.h>long();/*函数说明语句*/main(){longn;n=func();printf"n=%1d\n",n);}longfunc(){longm;for(m=0;getchar()!='';());returnm:}

38.有以下程序

main()

{intt=1,i=5;

for(;i>=0;i--)t*=i;

printf("%d\n",t);

}

执行后输出结果是______。

39.以下条件表达式可计算:1+|a|的值,请填空。a>=0?【】:【】

40.下面的程序实现的是指针p所指向的地址的n个数中,求出最大的和最小的数据,请填空。

fun(int*p,intn)

{int*q;

intmax,min;

max=min=*p;

for(q=p;【】;q++)

if(*q>max)max=*q;

elseif(*q<min)min=*q;}

三、1.选择题(20题)41.设有以下语句:chara=3,b=6,C;c=a|b<<2;printf("%d\n",C);则c的二进制值是()。

A.11011B.10100C.11100D.11000

42.有以下程序main(){chara[7]="a0\0a0\0";inti,j;i=sizeof(a);j=strlen(a);printf("%d%d\n",i,j);}程序运行后的输出结果是______。

A.22B.76C.72D.62

43.以下4个程序中,完全正确的是()。

A.#include<stdio.h>main();{/*programming*/printf("programming!\n");}

B.#include<stdio.h>main(){/*/programming/*/printf("programming!\n");}

C.#include<stdio.h>main(){/*/*programming*/*/printf("programming!\n");}

D.#include<stdio.h>main(){/*programming*/printf("programming!\n");}

44.下列程序的运行结果是()。main(){inta=-5,b=1,c=1;intx=0,Y=2,z=0;if(c>0)x=x+y;if(a<=0){if(b>0)if(c<=0)y=x-y;}elseif(c>0)Y=x-y;elsez=y;printf("%d,%d,%d\n",x,y,z);}

A.2,2,0B.2,2,2C.0,2,0D.2,0,2

45.关系表中的每一行称为一个()。

A.元组B.字段C.属性D.码

46.若有以下说明和语句intc[4][5],(*p)[5];p=c;能够正确引用c数组元素的是

A.p+1B.*(p+3)C.*(p+1)+3D.*(P[0]+2)

47.下列程序的输出结果是______。#includemain(){charb[30],*chp;strcpy(&b[0],"CH");strcpy(6b[1],"DEF");strcpy(6b[2],"ABC");printf("%s\n",b);}

A.CHDEFB.DEFABCC.CDABCD.CHABC

48.用链表表示线性表的优点是()。

A.便于随机存取B.花费的存储空间较顺序存储少C.便于插入和删除操作D.数据元素的物理顺序与逻辑顺序相同

49.以下程序的运行结果是()。#include<stdio.h>#defineMIN(x,y)(x)<(y)?(x):(y)main(){inti=10,j=15,k;k=10*MIN(i,j);printf("%d\n",k);}

A.10B.15C.100D.150

50.设有以下语句:inta=1,b=2,c;c=a∧(b<<2);执行后,c的值为()。

A.6B.7C.8D.9

51.能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是

A.a>=10ora<=0

B.a>=0|a<=10

C.a>=10&&a<=0

D.a>=10‖a<=0

52.下列叙述中正确的是()。

A.算法的执行效率与数据的存储结构无关

B.算法的空间复杂度是指算法程序中指令(或语句)的条数

C.算法的有穷性是指算法必须能在执行有限个步骤之后终止

D.以上3种描述都不对

53.下列与表达式“b=(a<0?-1:a>0?1:0)”的功能等价选项是()

A.b=0;if(a>=0)if(a>0)b=1;elseb=-1;

B.if(a>0)b=1;elseif(a<0)b=-1;elseb=0;

C.if(A)if(a<0)b=-1;elseif(a>0)b=1;elseb=0;

D.b=-1;if(A)if(a>0)b=1;elseif(a==0)b=0;elseb=-1;

54.在宏定义#definePI3.14159中,用宏名PI代替一个()

A.单精度数B.双精度数C.常量D.字符串

55.以下程序的输出结果是voidfun(float*p1,float*p2,float*s){s=(float*)calloc(1,sizeof(float));*s=*p1+*p2++;}main(){floata[2]={1.1,2.2},b[2]={10.0,20.0},*s=a;fun(a,b,s);printf("%5.2f\n",*s);}

A.11.1B.12C.21.1D.1.1

56.有以下程序:#include<stdio.h>main()}chara,b,e,d;seanf("%e,%e,%d,%d",&a,&b,&c,&d);printf("%c,%c,%e,%c\n",a,b,c,d);若运行时从键盘上输入:6,5,65,66<回车>,则输出结果是()。

A.6,5,A,BB.6,5,65,66C.6,5,6,5D.6,5,6,6

57.算法的有穷性是指A.算法程序的运行时间是有限的

B.算法程序所处理的数据量是有限的

C.算法程序的长度是有限的

D.算法只能被有限的用户使用

58.关系数据库的数据及更新操作必须遵循()等完整性规则。

A.实体完整性和参照完整性

B.参照完整性和用户自定义完整性

C.实体完整性和用户自定义完整性

D.实体完整性、参照完整性和用户自定义完整性

59.当执行下列宏定义命令后,S的值为()#defineR3.0#definePI3.1415926#defineL2*PI*R#defineSPI*R*R

A.3.1415926B.18.849556C.3D.28.2743334

60.两个或两个以上模块之间联系的紧密程度称为()。

A.耦合性B.内聚性C.复杂性D.数据传输特性

四、选择题(20题)61.设x为int型变量,则执行以下语句后,x的值为()。x=10;x=x-=x-x;

A.10B.20C.40D.30

62.以下关于宏的叙述中正确的是()。

A.宏替换没有数据类型限制

B.宏定义必须位于源程序中所有语句之前

C.宏名必须用大写字母表示

D.宏调用比函数调用耗费时间

63.有以下程序:

程序执行后的输出结果是()。

A.45B.20C.25D.36

64.在c语言中,只有在使用时才占用内存单元的变量,其存储类型是()。A.aut0和Iegister

B.extern和register

C.aut0和static

D.static和register

65.对如下二叉树进行后序遍历的结果为()。

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

66.有以下程序:

#include<stdio.h>

main()

{inta=12,C;

c=(a<<2)<<1;

printf("%d\n",c);

}

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

A.3B.50C.2D.96

67.

68.设有数组定义:chararray[]="Chinese";则数组array所占的空间为

A.6个字节B.7个字节C.8个字节D.9个字节

69.

70.

71.

72.有以下程序:

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

A.6B.3C.8D.12

73.有以下程序段程序的输出结果是()。

A.a=10b=50c=10

B.a=10b=50c=30

C.a=10b=30c=lO

D.a=50b=30c=50

74.

以下叙述中正确的是()。

A.预处理命令行必须位于C源程序的起始位置

B.在C语言中,预处理命令行都以“#”开头

C.每个C程序必须在开头包含预处理命令行:#include<stdio.h>

D.C语言的预处理不能实现宏定义和条件编译的功能

75.有定义:“inta=2,b=3,c=4;”,则下列选项中值为0的表达式是()。

A.(!a==1)&&(!b==0)B.(a<b)&&!cC.D.1E.a&&bF.aG.H.(b+b)&&(c-a)

76.在下列关于二叉树的叙述中,选出正确的一项()。

A.在二叉树中,任何一个结点的度都是2

B.二叉树的度为2

C.在二叉树中至少有一个结点的度是2

D.一棵二叉树的度可以小于2

77.若在定义语句inta,b,c,*P=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是()。

A.

B.

C.

D.

78.

79.有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是()

A.*p+9B.*(p+8)C.*p+=9D.p+8

80.

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:依次取出字符串中所有的字母字符,形成新的字符串,并取代原字符串。例如,若输入的字符串是:“ab232bd34bkw”,则输出结果是:“abbdbkw”。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写函数proc(),其功能是:计算并输出下列多项式值。S=(1+1/2)+(1/3+1/4)+…+(1/(2n1)+1/2n)例如,若主函数从键

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论