2022年广东省深圳市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2022年广东省深圳市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2022年广东省深圳市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2022年广东省深圳市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2022年广东省深圳市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

2022年广东省深圳市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.

2.以下选项中不能用作C语言程序合法常量的是()。

A.123B.‘\123’C.1,234D.“\x7D”

3.有以下程序

#include<stdio.h>

main()

{intx=1,y=2,z=3;

if(x>y)

if(y<z)printf("%d",++z);

elseprintf("%d",++y);

printf("%d\n",x++);

}

程序的运行结果是

A.A.331

B.41

C.2

D.1

4.能正确表示“当x的取值在[1,10]和[100,110]范围内为真,否则为假”的表达式是()。

A.(x>=1)&&(x<=10)&&(x>=100)&&(x<=110)

B.(x>=1)‖(x<=10)‖(x>=100)‖(x<=110)

C.(x>=1)&&(x<=10)‖(x>=100)&&(x<=110)

D.(x>=1)‖(x<=10)&&(x>=100)‖(x<=110)

5.有以下程序:#include<stdio.h>main(){inta=1,b=2,c=3,d=0;if(a==1&&b++==2) if(b!=2||c--!=3) printf(“%d,%d,%d\n”,a,b,c); elseprintf(“%d,%d,%d\n”,a,b,c);elseprintf(“%d,%d,%d\n”,a,b,c);}程序的运行结果是()。

A.1,3,2B.1,3,3C.1,2,3D.3,2,1

6.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。

A.DB包括DBS和DBMSB.DBMS包括DB和DBSC.DBS包括DB和DBMSD.没有任何关系

7.有以下程序

A.741B.963C.852D.87542l

8.有以下程序#include<stdio.h>#include<string.h>main(){chara[10]=”abcd”;printf("%d,%d\n",strlen(a),sizeof(a));}程序运行后的输出结果是()。A.7,4B.4,10C.8,8D.10,10

9.下面程序的输出结果是()。

#include<stdio.h>

main()

{inta[4][5]={1,2,4,-4,5,-9,3,6,-3,2,7,8,4};

inti,j,n;

n=9;

i=n/5;

j=n-i*5-1;

printf("a[%d][%d]=%d\n",i,j,a[i][j]);

}

执行后输出结果是()。A.A.a[1][3]=6

B.a[1][3]=-3

C.a[1][3]=2

D.不确定

10.设一棵二叉树共有50个叶子结点(终端结点),则共有___个度为2的结点。

A.25B.49C.50D.51

11.下列选项中不合法的十六进制数是()。

A."0"xffB."0"X11C."0"x1gD.”0”Xabc

12.有以下程序#include<stdio.h>structtt(intx;structtt*y;)*P;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main{inti;p=a;for(i=l;i<=2;i++){printf("%d,",p->x);P=p->y;}}程序的运行结果是()。A.20,30,B.30,17,C.15,30,D.20,15,

13.下列关于C语言数据文件的叙述中正确的是A.文件由ASCII码字符序列组成,C语言只能读写文本文件

B.文件由二进制数据序列组成,C语言只能读写二进制文件

C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件

D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

14.以下有关宏替换的叙述不正确的是()。A.A.使用宏定义可以嵌套

B.宏定义语句不进行语法检查

C.双引号中出现的宏名不替换

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

15.以下关于return语句的叙述中正确的是()。

A.一个自定义函数中必须有一条return语句

B.一个白定义函数中可以根据不同情况设置多条return语句

C.定义成void类型的函数中可以有带返回值的return语句

D.没有return语句的自定义函数在执行结束时不能返回到调用处

16.第

22

阅读下面程序,则程序执行后的结果为

#include"stdio.h"

main()

{inta=4,b=6,c=7;

doubled,fun(int,int,int);

d=fun(a,b,c);

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

doublefun(inta,intb,intc)

{doubles;

s=a%b*c;

returns;}

A.27B.27.000000C.28D.28.000000

17.一个队列的入队序列是1,2,3,4,则队列的输出序列是()。

A.4,3,2,1B.l,4,3,2C.1,2,3,4D.3,2,4,1

18.有以下程序:#include<stdio.h>main(){chars[]={“012xy”;inti,n=0;for(i=0;s[i]|=0;i++)if(s[i]>=‘a’&&s[i]<=‘z’)n++;printf(“%d\n”,n);}程序的运行结果是()。

A.0B.2C.3D.5

19.下列关于return语句的叙述中正确的是()。

A.—个自定义函数中必须有一条return语句

B.—个自定义函数中可以根据不同情况设置多条return语句

C.定义成void类型的函数中可以有带返回值的return语句

D.没有return语句的自定义函数在执行结束时不能返回到调用处

20.有以下程序:#include<stdio.h>#deflneS1(z)4*z+4*(z)#defineS2(x,y)4*(x)*(y)+y*xmain(){inta=1,b=2;printf(“%d,”,S1(a+b));printf(“%d,”,S2(a,b)+S1(3));printf(“%d”,S2(3+a,b+3));}程序运行后的输出结果是()。

A.18,34,100B.24,34,92C.24,34,100D.18,34,92

二、2.填空题(20题)21.【】是从二维表列的方向进行的运算。

22.在关系模型中,若属性A是关系R的主码,属性A的取值不能为空,称为约束。

23.在一个容量为25的循环队列中,若头指针front=16,尾指针rear=9,则该循环队列中共有【】个元素。

24.以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值。请填空。

#include<stdio,h>

voidfun(int,int,int(*)[4],int*);

main()

{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;

fun(3,4,a,b);

for(i=0;i<3;i++)printf("%4d",b[i]);

prinff("\n");

}

voidfun(intm,intn,intar[][4],int*br)

{inti,j,x;

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

{x=ar[i][0];'

for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];

【】=x;

}

}

25.函数pi的功能是根据以下公式近似求得的:

pi*pi/6=1+1/(2*2)+1/(3*3)+…+1/(n*n)

请在下面的函数中填空,完成求pi的功能。

#include<math.h>

doublepi(longn)

{doubles=0.0,longi;

for(i=1;i<=n;i++)s=s+【】。

return(sqrt(6*s));

}

26.数据库的逻辑模型设计阶段的任务是将______转换成关系模式。

27.设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为【】。

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

29.结构化程序设计方法的主要原则可以概括为自顶向下、逐渐求精、【】和限制使用goto语句。

30.设有如下变量说明,则a+(int)((int)b+c)>>(int)(b-c)的值为【】。

inta=5;floatb=7.2,c=3.6;

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

charstr[]="ABCD",*p=str;

printf("%d\n",*(p+3));

32.设x、y、z均为int型变量,请写出描述“x或y中至少有一个小于z”的表达式______。

33.函数delete(s,i,n)的作用是从字符串s中删除从第i个字符开始的n个字符,请填空。

voiddelete(chars[],inti,intn)

{intj,k,length=0;

whiles(length])

【】;

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

while(k<length)

s[j++]=s[k++];

s[j]='\0';

}

34.实体—联系模型是一种常用的高级概念数据模型,而【】是实体—模型中的核心。

35.以下程序运行后的输出结果是______。

inta=5;

fun(intB)

{staticinta=10;

a+=b++;

printf("%d",A);

}

main()

{intc=20;

fun(C),

a+=C++;

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

}

36.以下函数sstrcat的功能是实现字符串的连接,即将t所指字符串复制到s所指字符串的尾部。例如:,所指字符串为abed,t所指字符串为efgh,调用函数sstrcat后s所指字符串为abcdefgh。请填空。

#inehde<stdio.h>

#include<string.h>

voidsstuat(char*9,char*t)

{intn;

n=strlen(s);

while(*(s+n)=【】){s++;t++;}

37.以下程序段的输出结果是【】。

main()

{inta=2,b=2,c=4;

a*=16+(b++)-(++C);

printf("%d",a);

}

38.下面程序的输出是【】。

main()

{intarr[10],i,k=0;

for(i=0;i,10;i++)arr[i]=i;

for(i=1;i<4;i++)k+=arr[i]+i;

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

}

39.若对长度为90的线性表进行分块查找,其中每块子表长度为9。如果在索引表查找过程中进行顺序查找,那么平均查找长度为【】。

40.设有以下结构体类型:

structst

{charname[8];

intnum;

floats[4];

}student[50];

并且结构体数组student中的元素都已有值。若要将这些元素写到硬盘文件fp中,请将以下fwrite语句补充完整:

fwrite(student,【】,1,fp);

三、1.选择题(20题)41.下面程序的运行结果是()。#include"stdio.h"main(){inti;for(i=1;i<=5;i++){if(i%2)printf("*");elseprintf("#");}}

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

42.两次运行下列的程序,如果从键盘上分别输入3和1,则输出结果是()。main(){intx;scanf("%d",&x);if(x++>2)printf("%d",x);elseprintf("%d\n",x--);}

A.4和2B.4和1C.4和0D.3和1

43.有以下函数定义:intmypr(doublea,doubleb){returna*b;}若以下选项中所用变量都已正确定义并赋值,错误的函数调用是

A.if(mypr(x,y)){……}

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

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

D.mypr(x,y);

44.若有下列说明,则()不是对strcpy库函数的正确的调用。strcpy库函数用于复制一个字符串:char*str1="abcdt",str2[10],*str3="hijklmn",*str4[2],*str5="aaaa";

A.strcpy(str2,str1)

B.strcpy(str3,str1)

C.strcpy(str4,str1)

D.strcpy(str5,str1)

45.已定义以下函数:fun(Char*p2,char*p1){while((*p2=*p1)!='\0'){p1++;p2++;}}函数的功能是()。

A.将p1所指字符串复制到p2所指内存空间

B.将p1所指字符串的地址赋给指针p2

C.对p1和p2两个指针所指字符串进行比较

D.检查p1和p2两个指针所指字符串中是否有'\0',

46.下列关于栈的描述中错误的是()。A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针

47.有以下程序voidss(char*s,chart){while{*s)if(*s==t)*s-t-'a'+'A';S++;main(){charstrl[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",str1);}程序运行后的输出结果是

A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd

48.下列程序的输出结果是()。main(){inta=4,b=5,c;if(a<B){c=a*b;printf("%d,%d,%d\n",b,a,C);}else{c=b/a;printf("%d,%d,%d\n",b,a,C);}}

A.4,5,12B.20C.5,4,20D.12

49.下列语句中,不正确的是______。

A.staticchara[]={"China"};

B.staticchara[]="China";

C.printf("%s",a[0]);

D.scanf("%s",a);

50.下列程序的输出结果是______。inti=010,j=10;printf("%d,%d\n",++i,j--);

A.11,10B.9,10C.010,9D.10,9

51.现有如下程序段#include"stdio.h"main(){intk[30]={12,324,45,6,768,98,21,34,453,456};intcount=0,i=0;while(k[i]){if(k[i]%2==0||k[i]%5==0)count++;i++;}printf("%d,%d\n",count,i);}则程序段的输出结果为

A.7,8B.8,8C.7,10D.8,10

52.数据库设计的根本目标是要解决()。

A.数据共享问题B.数据安全问题C.大量数据存储问题D.简化数据维护

53.下面不属于软件工程的三个要素的是A.A.工具B.过程C.方法D.环境

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

A.黑箱(盒)测试方法完全不考虑程序的内部结构和内部特征

B.黑箱(盒)测试方法主要考虑程序的内部结构和内部特征

C.白箱(盒)测试不考虑程序内部的逻辑结构

D.上述三种说法都不对

55.有以下程序main()intx[]={1,3,5,7,2,4,6,0},i,j,k;for(i=0;i<3;i++)for(j=2;j>=i;j--)if(x[j+1]>x[j]){k=x[j];x[j]=x[j+1];x[j+1]=k;}for(i=0;i<3;i++)for{j=4;j<7-i;j++)if{x[j]>x[j+1]){k=x[j];x[j]=x[j+l];x[j+l]=k;}for(i=0;i<8;i++)printf("%d",x[i]);printf("\n');}程序运行后的输出结果是

A.75310246B.1234567C.76310462D.13570246

56.关于结构化程序设计原则和方法描述错误的是()。

A.选用的结构只准许有一个入口和一个出口

B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现

C.不允许使用GOTO语句

D.语言中所没有的控制结构,应该采用前后一致的方法来模拟

57.有如下说明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

58.有以下程序:#include<stdio.h>main(){intc=35;printf("%d\n",e&c);}程序运行后输出结果是()。

A.0B.70C.35D.1

59.出下列程序执行后的输出结果是______。mare(){intm[][3]={1,4,7,2,5,8,3,6,9};inti,k=2;for(i]0;i<3;i++){printf(("%d",m[k][i]);}}

A.456B.258C.369D.789

60.下列语句中,正确的是______。

A.staticcharstr[]="China";

B.staticcharstr[];str="China";

C.staticcharstr1[5],str2[]={"China"};strl=str2;

D.staticcharstr1[],str2[];str2={"China"};strcpy(str1,str2);

四、选择题(20题)61.下面概念中,不属于面向对象方法的是()。A.对象B.继承C.类D.过程调用

62.

当输入为"hello?"时,下面程序的执行结果是()。

#include<stdio.h>

main

{charc;

c=getchar;

while(c!=?)

{putehar(e);break;

}

}

A.RvfsuB.hC.?D.hello

63.以下()不是标准的HTTP消息头字段。

A.StatusB.HostC.AcceptD.Referer

64.在C语言中,合法的长整型常数是()。

A.0.123456B.4962717C.9LD.5.321e2

65.已知inta,b;doublec;,则以下语句中错误的函数调用是

A.scanf("%d,%x,%lf",&a,&b,&c);B.scanf("%d,%d,%le",&a,&b,&c);

C.scanf("%o,%x,%o",&a,&b,&c);D.scanf("%d,%o,%e",&a,&b,&c);

66.

67.

68.下面程序的运行结果是()。

A.gaeB.gaC.LanguageD.有语法错

69.运行下面程序时,从键盘输入字母H,则输出结果是()。

A.

B.

C.

D.

70.下列条件语句中,输出结果与其他语句不同的是()。

A.if(a)printf("%dn",x);elseprint[("%d\n",y)

B.if(a=0)pritf("%dn",y);elseprint[("%d\n",x)

C.if(a!一0)printf("%dn",x);elseprint[("%a\n",y)

D.if(a=O)print[("%dn",x);elseprintf("%d\n",y)

71.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是()。

A.提高耦合性降低内聚性有利于提高模块的独立性

B.降低耦合性提高内聚性有利于提高模块的独立性

C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度

D.内聚性是指模块间互相连接的紧密程度

72.为了使模块尽可能独立,要求()。

A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强

B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱

C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱

D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强

73.有如下程序

#include"stdio.h"

fun(inta,intb)

{ints;

s=a*(b/4);

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

main()

{inta=16,b=10;

fun(a,b);

}

该程序的输出结果是

A.16B.32

C.40D.80

74.

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

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

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

C.sqrt(abs(n^x+e^x)

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

76.

77.

78.设有如下说明

typedefstruct

{intnumber;charclass;doublescore;}student;

则以下选项中,能正确定义结构体数组并赋初值的语句是()。

A.studenttt[2]={{189,’A’,62},{190,’B’,75}};

B.studenttt[2]={189,’"A",62,190,"B",75};

C.structtt[2]={{189,’A’},{190,’B’}};

D.structtt[2]={{189,"A",62.5},{190,"B",75.0}};

79.以下选项中与

80.有以下函数定义:

voidfun(intn,doublex){……}

若以下选项中的变量都已正确定义并赋值,则对函数fun正确调用的语句是

A.fun(inty,doublem);B.k=fun(10,12.5);

C.fun(x,n);D.voidfun(n,x);

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:先将字符串s中的字符按顺序存放到t中,然后把S中的字符按正序连接到t的后面。例如,当s中的字符串为WXYZ时,则t中的字符串应为WXYZWXYZ。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>voidproc(char*s,char*t){inti,s1;s1=strlen(s);for(i=0;i<s1;i++)//****found****t[i]=s[s1];for(i=0;i<s1;i++)t[s1+i]一s[i];t[2*s1]=\O0;}voidmain{chars[100],t[100];system("CLS");print{("\nPleaseenterstrings:");scanf("%s",s);proc(s,t);printf("Theresultis:%s\n",t);}六、程序设计题(1题)82.请编写函数proc,该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。例如,若字符串数组中的M个字符串为:ABCDBCDEFGCDEFGHI则合并后的字符串内容应该是ABCDBCDEFGCDEFGHl。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。试题程序:#include<stdio.h>#include<conio.h>#defineM3#defineN20voidproc(chararr[M][N],char*b){}voidmain{charstr[M][N]={"ABCD","BCDEFG","CDEFGHl"),i;chararr[100]={"##################"};printf(”Thestrin9:kn”);for(i=0;i<M;i++)puts(str[i]);printf("\n");proc(str,arr);printf("TheAstring:\n");printf("%S",arr);printf("\n\n");}

参考答案

1.D

2.CC选项中不能含有逗号,所以“1,234”不能用作C语言程序的合法常量。B选项表示的是八进制的常量,D选项表示的是十六进制的常量。故本题答案为C选项。

3.D本题考查if-else语句的使用。if-else语句可以在条件为“真”或为“假”时执行指定的动作,由if引导条件为“真”时执行的操作;由else引导条件为“假”时执行的操作。else语句要与上面最近的if语句进行匹配,如果要嵌套调用if-else语句,需要将嵌套部分用{}括起来,避免程序报错。题目中给出了一个if语句和一个if-else语句,if-else语句为第一个if语句的子语句。首先执行外层if语句,执行条件为x>y,由于x=1,y=2,故该条件为假,不执行if的子语句,直接执行语句printf("%d\\n",x++);,该语句先输出x的值,然后进行x++操作。x的初始值为1,输出结果为1。

4.C本题考查逻辑与(&&)和逻辑或(||)运算符的使用。x值在[1,10]之间,C语言中可以写成x值在[100,11O]之间,C语言表达式应写成“(x>=100)&&(x>=110)”;[1,1O]和[100,110]满足任意条件就可以,所以是逻辑或的关系,因此只要将前两个表达式用逻辑或运算符连接起来即可,所以最后的表达式:(x>=1)&&(x<=10)&&(x<=110)。

5.Belse总是和最近的if配对。进入第1个if语句进行条件判断时,因为是選辑与操作,需要两边运算对象的值均为非零值才为真,所以需要逐个执行判断。结果为1,进入第2个if语句进行条件判断。因为“b!=2”条件成立,所以整个条件表达式的值为真,不再执行逻辑或的第2个运算对象“(c--!=3)”变量c的值不变,也不再执行第1个else语句。输出a的值1,b的值3,c的值3。故本题答案为B选项。

6.CC。【解析】数据库系统(DBS)由数据库(DBS)、数据库管理系统(DBMS)、数据库管理员、硬件平台和软件平台五个部分组成,可见DB和DBMS都是DBS的组成部分。

7.C在for循环中,当y的值为9、6或3时,执行输出语句,输出表达式“——y”的值。y先自减1,然后再输出y的值。

8.Bstrlen是求字符串的长度,结果为4,sizeof是求数组的长度,而数据在定义时已给出长度为10。

9.Bn=9,i=n/5=1;j=9-1*5-1=3,输出为a[1][3]=-3

10.B难易程度:易

11.C十六进制是以“0x、0X”开头的字符串,字符串中只能含有0~9这l0个数字和a、b、C、d、e、f这6个字母。

12.D程序的结构体数组a的元素形成了一个单向的循环链表,每个元素的指针成员都指向下一个元素的地址。

13.D解析:C语言把文件看成是一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成。根据数据的组织形式,可分为ASCII文件和二进制文件。ASCII文件又称文本文件,它的每一个字节放一个ASCII代码,代表一个字符。二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。

14.D解析:本题考查宏替换的规则。宏替换有两类:简单的字符替换和带参数的宏替换。使用宏应注意:①宏定义仅仅是符号替换,不是赋值语句,因此不做语法检查:②为了区别程序中其他的标示符,宏名的定义通常用大写字母,但不是必须用大写;③双引号中出现的宏名不替换;④使用宏定义可以嵌套,即后定义的宏中可以使用先定义的宏。

15.Breturn语句又称为返回语句。该语句的格式如下:“return;”和“return(<表达式>);”。其中,return是关键字。该语句有两种格式:不带返回值格式和带返回值格式。该语句用在被调用函数中,在被调用函数中执行到该语句时,将结束对被调用函数的执行,并把控制权返回给调用函数,继续执行调用函数后边的语句。在带有返回值的情况下,将return语句所带的表达武的值返回给调用函数,作为被调用函数的值。在被调用函数中,可以用return语句,也可以不用return语句。如果要求被调用函数有返回值,则一定要用return语句,采用return(<表达式>);格式。如果被调用函数不需要返回值,并且当被调用函数的所有语句执行完后进行返回,则被调用函数可以不用return语句。

16.D

17.C

18.B程序首先给字符数组s赋值为“012xy”。for循环语句的功能是遍历字符串,通过if条件语句对字符串中的小写字母进行计数,字符串中小写字母个数为2,即n=2。故本题答案为B选项。

19.B在函数中允许有多个return语句,但每次调用只能有一个return语句被执行,因此只能返回一个函数值,A选项描述错误。定义成void类型的函数,不允许从该函数取得返回值,也不允许使用return语句,C选项描述错误。没有return语句的函数在执行到函数的最后一条语句后会自动返回到调用处,D选项描述错误。故本题答案为B选项。

20.D程序中S1和S2都是宏定义。S1(a+b)宏展开后的表达式为4*a+b+4*(a+b),即4*1+2+4*(1+2),结果为18;S2(a,b)宏展开后的表达式为4*(a)*(b)+b*a,即4*(1)*(2)+2*1,结果为10;S1(3)宏展开后的表达式为4*3+4*(3),结果为24;32(3+a,b+3)宏展开后的表达式为4*(3+a)*(b+3)+b+3*3+a,即4*(3+1)*(2+3)+2+3*3+1,结果为92。最终输出:18,34,92。故本题答案为D选项。

21.投影投影解析:在关系模型的数据语言中,一般除了运用常规的集合运算,(并、交,差、笛卡尔积等)外,还定义了一些专门的关系运算,如投影、选择、连接等。投影是从二维表的列方向上进行的运算。

22.实体完整性实体完整性

23.1818解析:设循环队列的容量为n。若rear>front,则循环队列中的元素个数为rear-front;若rear<front,则循环队列中的元素个数为n+(rear-front)。题中,front=16,rear=9,即rear<front,所以,循环队列中的元素个数为m+(rear-front)=25+(9-16)=18。

24.br[i]或*(br+i)br[i]或*(br+i)解析:程序中的数组a是一个3行4列的二维数组,一维数组b用于存放每行的最大数。在函数fun中,通过二重for循环求每行的最大数,外层for循环用于控制行数,内层for循环用于控制列数,当外层循环执行一次时,内层循环则从一行的4个数中找出最大数x,然后将最大值x赋给数组br,故空格处应填br[i]或*(br+i)。

25.0/i/i或1.0/(i*i)0/i/i或1.0/(i*i)解析:由题面中提供的计算pi的公式可知;在第i项其值为1/(i*i),考虑到运算结果为浮点数,故必须要将1转化为浮点数或采用1.0/(i*i)的形式。故本题应填1.0/(i*i)或其等效形式。

26.E-R图E-R图解析:数据库逻辑设计的任务是将概念模型进一步转化成相应的数据模型。而E-R图是主要的概念模型,因此数据库的逻辑设计的主要工作是将E-R图转换成关系模式。

27.33解析:本题考查的是C语言逗号表达式的相关知识。程序在计算逗号表达式时,从左到右计算由逗号分隔各表达式的值,整个逗号表达式的值等于其中最后一个表达式的值。本题中,首先i被赋值为2,再自加1,最后i++的值计算为3。

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

29.模块化模块化解析:结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化和限制使用goto语句。自顶向下程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。

逐步求精:对复杂问题,应设计一些子目标作过度,逐步细化。

模块化:一个复杂问题,肯定是由若干精简单的问题构成。模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块。

限制使用goto语句。

30.11解析:在表达式a+(int)((int)b+c)>>(int)(b-c)中圆括号最优先,其次为类型转换(int)、加法+、减法-、右移运算>>。所以先看两个圆括号((int)b+c)和(b-c),前者b先被转换为int型7,然后与c相加得10.6,后者结果是3.6,现在表达式为a+(iot)10.6>>(int)3.6。C语言中,float型转换为int型是截尾取整,所以表达式进一步简化为5+10>>3=>15>>3。由于15的二进制为000011112(下标),所以15>>3的结栗是000000012(下标),即1。

31.6868解析:本题考查如何用指针引用数组元素。本题先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],*(p+3)指的是字符“D”,输出时是以“%d”格式输出的,即输出其相应ASCII码值68。

32.x<z‖y<zx<z‖y<z解析:本题考查逻辑运算符和逻辑表达式。x或y中至少有一个小于z,即x<z或y<z,是“或”的关系。

33.length++i<lengthlength++\r\ni<length解析:第—个循环极有可能是计算串的长度,在i<=length时字符才被删除,被删除的是从第i个到笫i+n或最后—个间的所有字符。删除前,应判断i<=length。由于已经进行了-i运算,故实际应填入i<length。

34.实体-联系图(E-R图)实体-联系图(E-R图)解析:实体-联系图(E-R图)是实体联系模型中的核心。由于E-R图描述的是数据流图中数据存储及其之间的关系,因此它是数据库概念设计的最常用的工具。

35.30253025解析:本题考核的知识点是变量的存储属性和算术运算的应用。本题涉及了自动变量、静态变量和外部变量。外部变量是定义在所有函数之外的变量,本题中inta=5定义了一个外部变量a,它是一个全局变量,即作用域是从定义的位置开始到本文件的结束;静态变量的存储空间在程序的整个运行期间是固定的(static),本题函数fun()中staticinta=10定义个一个静态变量a,此静态变量a是个静态的局部变量,即它的值只能在本函数中使用;自动变量是C程序中使用最多的一种变量,它的建立和撤消都是由系统在程序执行过程中自动进行的,auto是自动变量的存储类别标识符,如果省略auto,系统隐含认为此变量为auto,本题中main()中intc=20定义了一个自动变量c,此自动变量c是个静态的局部变量.算术运算中a+=b++相当于a=a+b,b=b+1.所以,在第一个ptine('%d',a)中a=a+b=10+20=30,第二个printf('%d',a)中a=a+c=5+20=25,即输出3025。

36.*t*t解析:程序中,(a+n)代表字符串s最后一个字符后的,'\\0',根据题意,'\\0'所在位置应该赋值为字符串t的第一个字符,字符中t的其他字符根据循环,依次赋值到,所指字符串的尾部,所以[14]应填:*t。

37.2626解析:a*=16+(b++)-(++c)等价于a*=a*(16+(b++)-(++c))=2*(16+(2-5)=26。b++是先使用b的值参加运算,再对b加1;++c是先c加1,再使用c的值参加运算。

38.1212解析:本题首先通过第一个for语句把0~9(包含0和9)间的整数依次赋值给数组arr,第二个for语句用于实现将满足条件的数组元素与对应的下标值求和并累加,并用变量k保存。

39.10.5

40.sizeof(structst)*50sizeof(structst)*50解析:fwrite函数的一般调用形式为:fwrite(buffer,size,count,fp);其中:buffer是一个指针变量,是要输出数据的起始地址;size是要写的字节数;count是要写多少个size字节的数据项;fp是文件指针。

41.A解析:分析程序呵知.程序循环5次,然后利用if语句决定每次循环时输出的字符。当i为奇数时,i%2=1,if(i%2)为真,输出“*”;当i为偶数时,i%2=0,if(i%2)为假,执行else语句,输出“#”,所以当i取1、3、5值时输出“*”,当i取2、4值时输出“#”。

42.A解析:本题考查ifelse语句。首先scanf函数通过键盘读入x的值。当x=3时,第一个if语句,先判断条件,取x的值3和2比较,然后将x的值加1,发现条件成立,执行下列的printf语句,输出x的值4。当x=1时,第一个if语句,先判断条件,取x的值1和2比较,然后将x的值加1(x的值变为2),发现条件不成立,执行下列的else语句,先输出x的值2,再将x的值减1。

43.C解析:本题考查了函数调用的方法。选项C函数调用mypr(x,y)可以作为表达式再参与运算,但是与另一个运算数x之间没有任何运算符所以是错误的。

44.C解析:strcpy(s1,s2)函数的功能是将字符串s2复制到字符串s1中(注意:要保证s1存储区能容纳下s2字符串)。

45.A解析:fun()函数中声明了两个字符串指针作为形参,在其函数体中用了一个while循环,首先while括号内表达式*p2=*p1是将p1所指的内容赋值到p2所指的存储空间中,然后在判断是否为'\\0',表达式的值为真时,执行循环体,指针p1和p2分别下移一位,当p1指向字符'\\n'时,表达式的值为假,循环结束,故此函数的功能是将p1所指字符串复制到p2所指内存空间中。所以,4个选项中选项A符合题意。

46.B栈是限定只能在表的一端进行插入和删除操作的线性表,入栈和出栈都是在栈顶进行,它们的操作特点是先进后出,因此具有记忆作用。栈可以采用顺序存储,也可以采用链式存储。

47.B解析:本题中的函数ss()有两个参数,一个是字符型指针变量s,另一个是字符型变量t在函数中通过一个while循环,在循环中一次取出s指向的字符串并判断它是否和t中存放的字符相同,若相等,则执行“s=t-'a'+'A':”(若是小写字母,则把它转换成大写字母)语句。在主函数中执行函数调用ss(strl,c),很显然是把str1数组中所有字符“d”变成大写字母,其他字符不变。所以4个选项中B正确。

48.C解析:本题考查ifelse语句。第一个if语句,先判断条件,发现a<b成立,执行下列的复合语句,得c=a*b=20,b、a的值不变。

49.C

50.B

51.D解析:在C语言中,定义一维数组的语句一般形式如下:

类型名数组名[常量表达式];

一维数组的引用形式为:数组名[下标表达式]。count表示能被2整除或被5整除的个数,i则计算有多少个数组元素。

52.A解析:由于数据的集成性使得数据可为多个应用所共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据关系的应用范围。数据的共享本身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。因此,数据库设计的根本目标是要解决数据共享问题。

53.D解析:软件工程包括3个要素,即方法、工具和过程。

54.A解析:黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例,选项A是正确的,选项B错误。白箱测试是根据对程序内部逻辑结构的分析来选取测试用例,选项C错误。正确答案为A。

55.A解析:主函数中定义了一个整型数组x,并初始化.接着执行了一个二重for循环,在该二重循环的作用是将数组的前4个元素按从大到小排序,接着用了一个;重循环(也是冒泡算法)将数组的后4个元素按从小到大的顺序排序,故最后依次输出数组的个元素的值为75310246,所以,4个选项中选项A符合题意。

56.C解析:限制使用GOTO语句是结构化程序设计的原则和方法之一,但不是绝对不允许使用GOTO语句。其他3项为结构化程序设计的原则。

57.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)来表示。

58.C解析:按位与运算符“&”的运算规则是:如果两个相应的二进制位都为1,则该位的结果为1,否则为0。因为本题中相与的两个数相同,即对应位的二进制数相等,所以结果为其值本身。

59.C解析:根据二维数组的定义得出:m[0][0]=1,m[0][1]=4,m[0][2]=7,m[1][0]=2,m[1][1]=5,m[1][2]=8,m[2][0]=3,m[2][1]=6,m[2][2]=9,所以本题的输出是第3行的值m[2][0],m[2][0],m[2][2],即369。

60.A

61.D[答案]D

[考点]软件工程基础

[评析]

面向对象=对象+类+继承+通过消息的通信

对象:一组属性及其上的操作的封装体

类:一组有相同属性和操作的对象的集合

继承:一个类为另一个类上的扩充的方式,子类继承父类,主要目的是代码复用

消息:对象间通信的手段

D是结构化程序设计或过程式(函数式)语言中的,一般的面向对象程序设计语言兼容这种方式,但不是其特征,故最佳选项为D

62.A

\n本题考查getchar函数与putchar函数,通过9etchar函数读入字符,并通过putchar函数将字符逐个输出,当用户输入“?”时停止输出,且c是一个字符变量只占一个字节。

\n

63.A

64.C选项A)和D)是实型而非整型。

65.C本题主要考查格式输入函数scanf。此函数一般的输入形式是scanf(格式控制,地址表列);。函数“格式控制”的含义同printf函数,以%开始,以一个格式字符结束,中间可以插入附加的字符。常用的格式字符主要有:

d:用来输入有符号的十进制整数。

u:用来输入无符号的十进制整数。

o:用来输入无符号的八进制整数。

x:用来输入无符号的十六进制整数(大小写作用相同)。

c:用来输入单个字符,包括回车键。

s:用来输入字符串,将字符串送到一个字符数组中,在输入时以非空格字符开始,以第一个空格字符结束。字符串以串结束标志’\\0’作为其最后一个字符。

f:用来以小数形式输入实数(包括浮点型和双精度型)。

e:用来以指数形式输入实数。

scanf的附加格式说明字符:

L、l:用于输入长整型数据(可用%ld,%lo,%lx)及double型数据(用%lf)。

h:用于输入短整型数据(可用%hd,%ho,%hx)。

域宽:指定输入数据所占宽度(列数),域宽应为正整数。

*:%后的“*”附加说明符用来表示跳过它相应的数据。

在本题中,由于变量a和b是整型变量,而c是双精度类型。很显然,选项C中的描述不正确,它用%o输出实数。

66.A

67.B

68.A考查用指针来引用字符数组元素的方法。指针pl+k相当于指针pl向后移动了k个字符的位置,指针p2同理。

69.C参考答案

70.D主要考查if判断语句,A选项if(a),如果a为真,则输出X,否则输出Y。B选项if(a==0),如果a恒等于0,则输出Y,否则输出X。C选项a(!=o),如果a不等于0,则输出X,否则输出y。D选项if(a==0),如果a恒等于0,则输出X,否则输出y。由以上结论可知,输出结果不同的为D选项。

71.B模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,所以A错误,B正确。耦合性是模块间互相连接的紧密程度的度量而内聚性是指一个模块内部各个元素间彼此结合的紧密程度,所以C与D错误。故答案为B选项。

72.B解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。本题答案为B。

73.B题目给出的程序分为两个部分:主函数main和函数fun。main函数给出了整型变量a,b的初始值,并将整型变量a,b作为fun的实参。fun函数的功能是计算s的值并输出。对于整型变量,运算符“/”的作用是求出两个数除法所得商的整数部分。s=a*(b/4),a的初始值为16,b的初始值为10,b/4的结果为2,a*2得32。

74.A

75.AB选项中函数pow(x,C)错误应该直接使用exp(x)函数。c选项中函数ah(n^x+e“x)错误,应该使用fabs()返回浮点数的绝对值。D选项中pow(x,n)参数顺序错误。

76.A

77.B

78.AB项定义格式不对,tt[2]只有两个元素,C项缺少了结构体名,而结构体名不可少,D项一样缺少了结构体名。

79.A如果a==1则执行a=b;否则a++;选项A)不符,所以选择A)。

80.C选项A中,fun(inty,doublem);中变量y和m前不需要类型说明;因为函数fun(10,12.5)没有返回值,所以选项B错误;调用函数fun时,不需要在函数前面加上void,所以选项D错误。故本题的正确答案是选项C。81.错误:t[i]=s[l];正确:t[i]=s[i];【解析】函数proc首先要实现将数组s中的元素顺序放在数组t中,即数组t中下标为i的元素在数组S中下标也为i,因此“t[i]=s[s1];”应改为“t[i]=s[i];”。82.voidproc(chararr[M][N],char*b){inti,j,k=0;for(i=0;i<M;i++)//i表示其行下标for(j=0;arr[i][j]!=\0;j++)//由于每行的个数不等,因此用a[i][j]!=\0来作为循环结束的条件b[k++]=arr[i][j];//把二维数组中的元素放到b的一维数组中,b[k]=\0;//最后把b赋\0作为字符串结束的标志)【解析】字符串数组中每一行都是一个一个完整的字符串,其结束标志为\0。因此通过字符串的结束标志来判断每一个字符串是否结束,将字符串数组中的所有字符串均赋值新的一维数组b来完成字符串的合并。2022年广东省深圳市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.

2.以下选项中不能用作C语言程序合法常量的是()。

A.123B.‘\123’C.1,234D.“\x7D”

3.有以下程序

#include<stdio.h>

main()

{intx=1,y=2,z=3;

if(x>y)

if(y<z)printf("%d",++z);

elseprintf("%d",++y);

printf("%d\n",x++);

}

程序的运行结果是

A.A.331

B.41

C.2

D.1

4.能正确表示“当x的取值在[1,10]和[100,110]范围内为真,否则为假”的表达式是()。

A.(x>=1)&&(x<=10)&&(x>=100)&&(x<=110)

B.(x>=1)‖(x<=10)‖(x>=100)‖(x<=110)

C.(x>=1)&&(x<=10)‖(x>=100)&&(x<=110)

D.(x>=1)‖(x<=10)&&(x>=100)‖(x<=110)

5.有以下程序:#include<stdio.h>main(){inta=1,b=2,c=3,d=0;if(a==1&&b++==2) if(b!=2||c--!=3) printf(“%d,%d,%d\n”,a,b,c); elseprintf(“%d,%d,%d\n”,a,b,c);elseprintf(“%d,%d,%d\n”,a,b,c);}程序的运行结果是()。

A.1,3,2B.1,3,3C.1,2,3D.3,2,1

6.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。

A.DB包括DBS和DBMSB.DBMS包括DB和DBSC.DBS包括DB和DBMSD.没有任何关系

7.有以下程序

A.741B.963C.852D.87542l

8.有以下程序#include<stdio.h>#include<string.h>main(){chara[10]=”abcd”;printf("%d,%d\n",strlen(a),sizeof(a));}程序运行后的输出结果是()。A.7,4B.4,10C.8,8D.10,10

9.下面程序的输出结果是()。

#include<stdio.h>

main()

{inta[4][5]={1,2,4,-4,5,-9,3,6,-3,2,7,8,4};

inti,j,n;

n=9;

i=n/5;

j=n-i*5-1;

printf("a[%d][%d]=%d\n",i,j,a[i][j]);

}

执行后输出结果是()。A.A.a[1][3]=6

B.a[1][3]=-3

C.a[1][3]=2

D.不确定

10.设一棵二叉树共有50个叶子结点(终端结点),则共有___个度为2的结点。

A.25B.49C.50D.51

11.下列选项中不合法的十六进制数是()。

A."0"xffB."0"X11C."0"x1gD.”0”Xabc

12.有以下程序#include<stdio.h>structtt(intx;structtt*y;)*P;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main{inti;p=a;for(i=l;i<=2;i++){printf("%d,",p->x);P=p->y;}}程序的运行结果是()。A.20,30,B.30,17,C.15,30,D.20,15,

13.下列关于C语言数据文件的叙述中正确的是A.文件由ASCII码字符序列组成,C语言只能读写文本文件

B.文件由二进制数据序列组成,C语言只能读写二进制文件

C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件

D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

14.以下有关宏替换的叙述不正确的是()。A.A.使用宏定义可以嵌套

B.宏定义语句不进行语法检查

C.双引号中出现的宏名不替换

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

15.以下关于return语句的叙述中正确的是()。

A.一个自定义函数中必须有一条return语句

B.一个白定义函数中可以根据不同情况设置多条return语句

C.定义成void类型的函数中可以有带返回值的return语句

D.没有return语句的自定义函数在执行结束时不能返回到调用处

16.第

22

阅读下面程序,则程序执行后的结果为

#include"stdio.h"

main()

{inta=4,b=6,c=7;

doubled,fun(int,int,int);

d=fun(a,b,c);

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

doublefun(inta,intb,intc)

{doubles;

s=a%b*c;

returns;}

A.27B.27.000000C.28D.28.000000

17.一个队列的入队序列是1,2,3,4,则队列的输出序列是()。

A.4,3,2,1B.l,4,3,2C.1,2,3,4D.3,2,4,1

18.有以下程序:#include<stdio.h>main(){chars[]={“012xy”;inti,n=0;for(i=0;s[i]|=0;i++)if(s[i]>=‘a’&&s[i]<=‘z’)n++;printf(“%d\n”,n);}程序的运行结果是()。

A.0B.2C.3D.5

19.下列关于return语句的叙述中正确的是()。

A.—个自定义函数中必须有一条return语句

B.—个自定义函数中可以根据不同情况设置多条return语句

C.定义成void类型的函数中可以有带返回值的return语句

D.没有return语句的自定义函数在执行结束时不能返回到调用处

20.有以下程序:#include<stdio.h>#deflneS1(z)4*z+4*(z)#defineS2(x,y)4*(x)*(y)+y*xmain(){inta=1,b=2;printf(“%d,”,S1(a+b));printf(“%d,”,S2(a,b)+S1(3));printf(“%d”,S2(3+a,b+3));}程序运行后的输出结果是()。

A.18,34,100B.24,34,92C.24,34,100D.18,34,92

二、2.填空题(20题)21.【】是从二维表列的方向进行的运算。

22.在关系模型中,若属性A是关系R的主码,属性A的取值不能为空,称为约束。

23.在一个容量为25的循环队列中,若头指针front=16,尾指针rear=9,则该循环队列中共有【】个元素。

24.以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值。请填空。

#include<stdio,h>

voidfun(int,int,int(*)[4],int*);

main()

{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;

fun(3,4,a,b);

for(i=0;i<3;i++)printf("%4d",b[i]);

prinff("\n");

}

voidfun(intm,intn,intar[][4],int*br)

{inti,j,x;

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

{x=ar[i][0];'

for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];

【】=x;

}

}

25.函数pi的功能是根据以下公式近似求得的:

pi*pi/6=1+1/(2*2)+1/(3*3)+…+1/(n*n)

请在下面的函数中填空,完成求pi的功能。

#include<math.h>

doublepi(longn)

{doubles=0.0,longi;

for(i=1;i<=n;i++)s=s+【】。

return(sqrt(6*s));

}

26.数据库的逻辑模型设计阶段的任务是将______转换成关系模式。

27.设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为【】。

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

29.结构化程序设计方法的主要原则可以概括为自顶向下、逐渐求精、【】和限制使用goto语句。

30.设有如下变量说明,则a+(int)((int)b+c)>>(int)(b-c)的值为【】。

inta=5;floatb=7.2,c=3.6;

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

charstr[]="ABCD",*p=str;

printf("%d\n",*(p+3));

32.设x、y、z均为int型变量,请写出描述“x或y中至少有一个小于z”的表达式______。

33.函数delete(s,i,n)的作用是从字符串s中删除从第i个字符开始的n个字符,请填空。

voiddelete(chars[],inti,intn)

{intj,k,length=0;

whiles(length])

【】;

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

while(k<length)

s[j++]=s[k++];

s[j]='\0';

}

34.实体—联系模型是一种常用的高级概念数据模型,而【】是实体—模型中的核心。

35.以下程序运行后的输出结果是______。

inta=5;

fun(intB)

{staticinta=10;

a+=b++;

printf("%d",A);

}

main()

{intc=20;

fun(C),

a+=C++;

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

}

36.以下函数sstrcat的功能是实现字符串的连接,即将t所指字符串复制到s所指字符串的尾部。例如:,所指字符串为abed,t所指字符串为efgh,调用函数sstrcat后s所指字符串为abcdefgh。请填空。

#inehde<stdio.h>

#include<string.h>

voidsstuat(char*9,char*t)

{intn;

n=strlen(s);

while(*(s+n)=【】){s++;t++;}

37.以下程序段的输出结果是【】。

main()

{inta=2,b=2,c=4;

a*=16+(b++)-(++C);

printf("%d",a);

}

38.下面程序的输出是【】。

main()

{intarr[10],i,k=0;

for(i=0;i,10;i++)arr[i]=i;

for(i=1;i<4;i++)k+=arr[i]+i;

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

}

39.若对长度为90的线性表进行分块查找,其中每块子表长度为9。如果在索引表查找过程中进行顺序查找,那么平均查找长度为【】。

40.设有以下结构体类型:

structst

{charname[8];

intnum;

floats[4];

}student[50];

并且结构体数组student中的元素都已有值。若要将这些元素写到硬盘文件fp中,请将以下fwrite语句补充完整:

fwrite(student,【】,1,fp);

三、1.选择题(20题)41.下面程序的运行结果是()。#include"stdio.h"main(){inti;for(i=1;i<=5;i++){if(i%2)printf("*");elseprintf("#");}}

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

42.两次运行下列的程序,如果从键盘上分别输入3和1,则输出结果是()。main(){intx;scanf("%d",&x);if(x++>2)printf("%d",x);elseprintf("%d\n",x--);}

A.4和2B.4和1C.4和0D.3和1

43.有以下函数定义:intmypr(doublea,doubleb){returna*b;}若以下选项中所用变量都已正确定义并赋值,错误的函数调用是

A.if(mypr(x,y)){……}

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

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

D.mypr(x,y);

44.若有下列说明,则()不是对strcpy库函数的正确的调用。strcpy库函数用于复制一个字符串:char*str1="abcdt",str2[10],*str3="hijklmn",*str4[2],*str5="aaaa";

A.strcpy(str2,str1)

B.strcpy(str3,str1)

C.strcpy(str4,str1)

D.strcpy(str5,str1)

45.已定义以下函数:fun(Char*p2,char*p1){while((*p2=*p1)!='\0'){p1++;p2++;}}函数的功能是()。

A.将p1所指字符串复制到p2所指内存空间

B.将p1所指字符串的地址赋给指针p2

C.对p1和p2两个指针所指字符串进行比较

D.检查p1和p2两个指针所指字符串中是否有'\0',

46.下列关于栈的描述中错误的是()。A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针

47.有以下程序voidss(char*s,chart){while{*s)if(*s=

温馨提示

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

评论

0/150

提交评论