2022-2023年内蒙古自治区赤峰市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2022-2023年内蒙古自治区赤峰市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2022-2023年内蒙古自治区赤峰市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2022-2023年内蒙古自治区赤峰市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2022-2023年内蒙古自治区赤峰市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

2022-2023年内蒙古自治区赤峰市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.在顺序表{2,5,7,10,14,15,18,23,35,41,52}中,用二分法查找关键码12需做()次关键码比较。

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

2.设x=011050,则x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

3.

有如下程序:

main()

{intn[5]={0,0,0},i,k=2;

for(i=0;i&printf("%d\n",n[k]););

}

该程序的输出结果是()。

A.不确定的值B.2C.1D.0

4.设散列表中m个存储单元,散列函数为H(key)=key%p,p是最好选择()。

A.小于等于m的最大奇数B.小于等于m的最大素数C.小于等于m的最大偶数D.小于等于m的最大合数

5.在一个链式队列中,假设f和r分别为队头和队尾指针,则插入S所指结点的运算是()。

A.f->next=s;f=s;

B.r->next=s;r=s;

C.S->next=rr=s;

D.r->next=f;f=s;

6.有以下程序:#include<stdio.h>doublef(doublex);main(){doublea=0;inti;for(i=0;i<30;i+=10)a+=f((double)i);printf(“%3.0f\n”,a);}doublef(doublex)}returnx*x+1;}程序的运行结果是()。

A.500B.401C.503D.1404

7.函数fread(buffer,size,count,fp)中buffer代表的是()。

A.—个存储区,存放要读的数据项

B.一个整数,代表要读入的数据项总数

C.一个文件指针,指向要读的文件

D.—个指针,指向读入数据要存放的地址

8.

9.对于C语言的函数,下列叙述中正确的是()。

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

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

C.函数的定义和调用都不能嵌套

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

10.

有以下程序

#include<stdio.h>

#include<string.h>

typedefstrlIct{charname[9];charsex;floatscore[2];}STU;

STUf(STUa)

{STUb={"Zhao",m,85.0,90.0);inti;

strcpy(aname,b.name);

sex:b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

}

main

{STUc="Qian",f,95.0,92.0},d;

d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);

}

程序的运行结果是()。

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92

11.有以下程序:

#include<stdio.h>

voidfun(char*t,char*s)

{while(*t!=0)t++;

while((*t++=*s++)!=0);

}

main()

{charss[10]="acc",aa[10]="bbxxyy";

fun(ss,aa);

printf("%s,%s\n",ss,aa);

}

程序运行结果是A.A.accxyy,bbxxyy

B.acc,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy

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

A.在switch语句中,不一定使用break语句

B.break语句只能用于switch语句

C.break语句必须与switch语句中的case配对使用

D.在switch语句中必须使用default

13.下列函数的功能是()。voidfun(char*a,char*b){while((*b=*a)!=‘\0’){a++;b++;}}

A.将a所指字符串赋给b所指空间

B.使指针b指向a所指字符串

C.将a所指字符串和b所指字符串进行比较

D.检查a和b所指字符串中是否有‘\0’

14.若有定义“inta=3,*p=&a,**q=&p;”,则以下叙述中错误的是()。

A.q是指针变量,*q就是变量a

B.p是指针变量,p指向变量a

C.q指向变量p,所以*q指向变量a

D.*p与**q都代表变量a

15.以下程序段中,与语句“k=a>b?(b>c?1:0):0;”功能相同的是()。

A.if((a>b)||(b>c))k=1;elsek=0;

B.if((a>b)&&(b>c))k=1;elsek=0;

C.if(a<=b)k=0;elseif(b<=c)k=1;

D.if(a>b)k=1;elseif(b>c)k=1;elsek=0;

16.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为()。

A.O(n)O(n)B.O(n)O(1)C.O(1)O(n)D.O(1)O(1)

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

18.有以下程序:#include<stdio.h>main(){charch=‘D’;while(ch>‘A’){ch--;putchar(ch);if(ch==‘A’)break;putchar(ch+1);}}程序运行后的输出结果是()。

A.CBB.BCAC.CCBBD.CDBCA

19.有以下程序:#include<stdio.h>#defineN8voidfun(int*x,inti){*x=*(x+i);)main(){inta[N]={1,2,3,4,5,6,7,8},i;fun(a,2);for(i=0;i<N/2;i++){printf(“%d”,a[i]);}printf(“\n”);}程序运行后的输出结果是()。A.1313B.2234C.3234D.1234

20.常采用的两种存储结构是()。

A.顺序存储结构和链式存储结构B.散列方法和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构

二、2.填空题(20题)21.以下程序运行时,若从键盘输入:102030<回车>,输出的结果是【】。

#include<stdio.h>

main()

{inti=0,j=0,k=0;

scanf("%d%*d%d",&i,&j,&k);

prinff("%d%d%d\n",i,j,k);

}

22.Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向______的设计方法。

23.有以下定义和语句,则sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

24.Fibonacci数列中的头两个数是1和1,从第3个数开始,每个数等于前两个数之和。下述程序计算此数列的前20个数,且每行输出5个数,请填空。

#include<stdio.h>

main()

{intf,f1=1,f2=1;

inti;

printf("%6d%6d",f1,f2);

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

{f=【】;

printf("%6d",f);

if(【】)

printf("\n");

f1=f2;

【】;

}

}

25.“printf("%d\n",strlen("\t\"023\xABC\n");”语句的输出结果是______。

26.以下程序运行结果是【】。

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:

case2:return1;}

return(fib(g-1)+fib(g-2));}

main()

{longk;

k=fib(5);

printf("k=%5ld\n",k);}

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

intx=0,y=0;

while(x<15)y++,x+=++y;

printf("%d,%d",y,x);

28.以下函数用于求出一个2×4矩阵中的最大元素值。

max_value(arr)

intarr[][4];

{

inti,j,max;

max=arr[O][0];

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

for(j=0;【】;j++)

if(【】>max)max=【】;

return(max);

}

29.下面的程序为6个整型变量A、B、C、D、E、F输入整数,并按从大到小的顺序输出整数及其所对应的变量名。例如,输入的数为3、2、5、7、4、6,则输出的形式为:D(7)F(6)C(5)E(4)A(3)B(2)。

#include<stdio.h>

intA,B,C,D,E,F;

struct

{

charn;

【】;

}tb1[]={{'A',&A},{'B',&B},{'C',&c},{'D',&D),{'E',&E},{'F',&F}},t;

main()

{

inti,j;

for(i=0;i<6;i++)scanf("%d",【】);

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

for(j=0;j<5-i;j++)

if(【】)

{

t=tb1[j];

tb1[j]=tb1[j+1];

tb1[j+1]=t;

}

for(i=0;i<6;i++)printf("%c(%d)",tb1[i].n,*tb1[i].p);

printf("\n");

}

30.以下程序给指针p分配三个double型动态内存单元,请填空。

#include<stdio.h>

#include<stdlib.h>

main()

{double*p;

p=(double*)malloc(【】);

p[0]=1.5;p[1]=2.5;P[2]=3.5;

printf("%f%f%f\n",p[0],p[1],p[2]);

}

31.有以下程序:

#include<stdio.h>

intsub(intn)

{return(n/10+n%10);}

main()

{intx,y;

seanf("%d",&x);y=sub(sub(sub(x)));

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

}

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

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

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);}

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

#include<string.h>

voidsstrcat(char*s,char*t)

{intn;

n=strlen(s);

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

}

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

#include<stdio.h>

main()

{inta[5]={2,4,6,8,10},*p;

p=a;p++;

printf("%d",*p);

}

35.在面向对象方法中,类的实例称为______。

36.x和y都是double型变量,x的初值为4.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为______。

37.在面向对象方法中,【】描述的是具有相似属性与操作的一组对象。

38.单元测试又称模块测试,一般采用【】测试。

39.结构化分析方法是面向______进行分析的方法。

40.以下函数的功能是【】。

floatav(a,n)

floata[];

intn;

{inti;floats;

for(i=0,s=0;i<n;i++)s=s+a[i];

returns/n;}

三、1.选择题(20题)41.下述程序的输出结果是()。#include<stdio.h>voidmain(){inta[20],*p[4];inti,k=0;for(i=0;i<20;i++)a[i]=i;for(i=0;i<4;i++)p[i]=&a[i*i+1];for(i=0;i<4;i++){k=k+*p[i];}printf("%d",k);}

A.10B.18C.6D.数组元素引用不合法,输出结果不定

42.若有说明:intn=2,*p=&n,*q=p;,则以下非法的赋值语句是

A.p=q;B.*p=*q;C.n=*q;D.p=n;

43.下面选项中不属于面向对象程序设计特征的是()。

A.继承性B.多态性C.类比性D.封闭性

44.设有数组定义:chararray[]="China";则数组array所占的空间为()

A.4个字节B.5个字节C.6个字节D.7个字节

45.有以下程序:#include<stdio.h>main(){inti=0,a=0;while(i<20){for(;;){if((i%5)==0)break;elsei--;}i+=13,a+=i;}pfintf("%d\n",A);}程序的输出结果是()。

A.62B.63C.23D.36

46.C语言中运算对象必须是整型的运算符是()。

A.%=B./C.=D.<=

47.在设计程序时,应采纳的原则之一是______。

A.程序结构应有助于读者理解B.不限制goto语句的使用C.减少或取消注解行D.程序越短越好

48.设有下列二叉树:[*]对此二叉树前序遍历的结果为A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY

49.下列叙述中,正确的是

A.用E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系

B.用E-R图只能表示实体集之间一对一的联系

C.用E-R图只能表示实体集之间一对多的联系

D.用E-R图表示的概念数据模型只能转换为关系数据模型

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

A.接口复杂的模块,其耦合程度一定低

B.耦合程度弱的模块,其内聚程度一定低

C.耦合程度弱的模块,其内聚程度一定高

D.上述3种说法都不对

51.在C语言中,不适用于局部变量的存储类说明符是()

A.autoB.registerC.staticD.extern

52.下面关于数据库三级模式结构的叙述中,正确的是()

A.内模式可以有多个,外模式和模式只有一个

B.外模式可以有多个,内模式和模式只有一个

C.内模式只有一个,模式和外模式可以有多个

D.模式只有一个,外模式和内模式可以有多个

53.数据库设计包括两个方面的设计内容,它们是()

A.概念设计和逻辑设计B.模式设计和内模式设计C.内模式设计和物理设计D.结构特性设计和行为特性设计

54.设有如下三个关系表:

下列操作中正确的是()。

A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S

55.按条件f对关系R进行选择,其关系代数表达式为

A.

B.

C.

D.

56.以下叙述中,正确的是______。

A.do…while语句构成的循环不能用其他语句构成的循环来代替

B.do…while语句构成的循环只能用break语句退出

C.用do…while语句构成的循环,在while后的表达式为非零时结束循环

D.用do…while语句构成的循环,在while后的表达式为零时结束循环

57.下列四个叙述中,错误的是_______。

A.C语言中的关键字必须小写

B.C语言中的标识符必须全部由字母组成

C.C语言不提供输入输出语句

D.C语言中的注释行可以出现在程序的任何位置

58.下列说法正确的是()。

A.一个C程序可以有多个主函数

B.一个C语言的函数中只允许有一对花括号

C.C程序的书写格式是自由的,一个语句可以写在一行上,也可以写在多行内

D.在对C程序进行编译时,可以发现注释行中的拼写错误

59.在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则

A.称为函数的直接递归调用B.称为函数的间接递归调用C.称为函数的循环调用D.C语言上不允许这样的递归调用

60.有以下程序:#include<string.h>main(){charp[]={'a','b','c'},q[10]={'a','b','c'};printf("%d%d\n",strlen(p),strlen(q));}以下叙述中正确的是()。

A.在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

B.由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3

C.由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3

D.由于p和q数组中都没有字符串结束符,故长度都不能确定

四、选择题(20题)61.有以下程序则输出结果是()。A.1245B.1256C.1278D.1267

62.在满足实体完整性约束的条件下()。

A.一个关系中应该有一个或多个候选关键字

B.一个关系中只能有一个候选关键字

C.一个关系中必须有多个候选关键字

D.一个关系中可以没有候选关键字

63.以下能正确定义字符串的语句是(

)。

64.用链表表示线性表的优点是()。A.A.便于随机存取B.花费的存储空间较顺序存储少

C.便于捅入和删除操作

D.数据元素的物理顺序与逻辑顺序相同

65.

66.阅读下面程序,则执行后的结果是()。

A.tomeetme

B.tmem

C.oete

D.tome

67.有以下程序:

程序运行后,若从键盘输入(从第l列开始.:

123<回车>

45678<回车>

则输出结果是()。

A.1267B.1256C.1278D.1245

68.若有定义语句:"inta[4][10],*P,*q[4];"且0≤i<4,则错误的赋值是()。

A.D=aB.q[i]=a[i]C.p=a[l]D.P=&a[2][1]

69.

70.以下程序的输出结果是()。

f(intb[],intm,intn)

{inti,s=0;

for(i=m;i<n;i=i+2)s=s+b[i];

returns;

}

voidmain()

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

x=f(a,3,7);

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

}A.A.10

B.18

C.8

D.15

71.

有以下程序:

#include<stdio.1l>

voidWriteStr(char*fn.char*str)

{FILE*fp;

fp=fopen(fn,"w");fputs(str,fp);fclose(fp);}

main

{WriteStr("tl.dat","start");

WriteStr("t1.dat","end");)

程序运行后,文件t1.dat中的内容是()。

A.startB.endC.startendD.endrt

72.

73.

74.有以下程序段:

当执行上述程序段,从键盘上输入555667777abc后,y的值为()。A.55566.0B.566.0C.7777.0D.566777.0

75.选出下列标识符中不是合法的标识符的是()。

A.hot_doB.cat1C._priD.2ab

76.浏览器中用于负责向用户显示数据的是()。

A.WWWB.IP地址C.HTMLD.DNS

77.设有定义:intx[2][3];,则以下关于二维数组X的叙述错误的是()。

A.x[0]可看做是由3个整型元素组成的一维数组

B.x[0]和x[l]是数组名,分别代表不同的地址常量

C.数组X包含6个元素

D.可以用语句x[o]=0;为数组所有元素赋初值0

78.在最坏情况下,堆排序的时间复杂度是()。

A.0(1902n)B.O(n1092n)C.o(n2)D.0(n1.5)

79.

80.有以下程序程序运行后的输出结果是()。

A.8B.4C.6D.2

五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是按以下递归公式求函数值。例如,当给n输入3时,函数值为60;当给n输入6时,函数值为480。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是将s所指字符串中ASCII值为奇数的字符删除,将剩余字符形成的新字符串放在t所指数组中。例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符A的ASCII值为奇数,字符1的ASCII值也为奇数,都应当删除,其他依此类推。最后t所指的数组中的内容应是“BDF24”。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,chart[]){}main(){ chars[100],t[100],Msg[]=“Pleaseenterstrings:”; printf(Msg); scanf(“%s”,s); fun(s,t); printf(“\nTheresuitis:%s\n”,t);}

参考答案

1.B

2.A本题考查按位与运算,按位与就是相同为1,不同为0,把x=011050化成二进制为0001001000101000,把01252化成二进制为0000001010101010,两者相与得0000001000101000。

3.D

\n本题for循环中,当i=0时,判断条件i&printf('%d\n',n[k]),此时i的值是0,输出n[k]的值也为0,0&0结果还是0,条件不成立,退出循环。所以最后输出结果为0。

\n

4.B

5.B

6.Cfor循环中,函数f的返回值累加到变量a中。第1次循环,a=0,i=0,返回值a=0*0+1=1;第2次循环,a=1,i=10,返回值a=10*10+1+1=102;第3次循环,a=102,i=20,返回值a=20*20+1+102=503;第4次循环a=503,i=30,不符合1<30,跳出循环,最后结果输出a=503。故本题答案为C选项。

7.Dfread函数用来读二进制文件,其中buffer是数据块的指针,它是内存块的首地址,输入的数据存入此内存中;size表示每个数据块的字节数;count用来指定每读一次读入的数据块个数;fp是文件指针,指向要读的文件。选项A、B、C错误。本题答案为D选项。

8.D

9.A

10.Cf函数的功能是对形参a的各个成员用结构体变量b的各个成员进行赋值后,然后返回变量a。

11.D

12.Aswitch语句中不一定使用break语句,选项A正确;break语句除了用于switch语句,还可以用于循环语句中,选项B、C错误;switch语句不一定需要使用default语句,选项D错误。本题答案为A选项。

13.A题目的fun函数内,while循环条件为“(*b=*a)!=‘\\0’”,执行时先把指针a所指向的字符赋给指针b所在的内存单元。如果该字符不是结束标识‘\\0’,执行循环体“a++;b++;”,指针a、b分别指向下一个字符单元。再判断循环条件,如果成立,继续把指针a所指向的字符赋给指针b所在的内存单元,直到遇到结束标识为止。故本题答案为A选项。

14.A由题意可知:指针变量p指向变量a,p的值是a的地址;指针变量q指向变量p,q的值是P的地址。q是指针变量,q指向p,*q是变量P,选项A错误;p是指针变量,p指向变量a,选项B正确;由于q指向P,因此*q指向a,选项C正确;*p和**q都代表变量a,选项D正确。故本题答案为A选项。

15.B条件表达式的含义是:如果表达式1成立,结果为表达式2的值,如果不成立,则为表达式3的值。在题干中,如果“a>b”且“b>c”,则k值为1;如果“a>b”且“b<c”,则k值为0;如果“a<b”,则k值为0。条件“a>b”与“b>c”中只要有一个条件不成立,k的值就为0。故本题答案为B选项。

16.C

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

18.Dputchar函数的功能是输出一个字符,由whlie判断条件和ch初始值可知,只要“ch≠‘A’”,执行两次putchar函数,否则跳出循环。第1次输出“CD”,第2次输出“BC”,第3次输出“A”后跳出循环。故本题答案为D选项。

19.C本题考查了宏定义与局部变量的区别,宏定义的作用范围为整个程序,而变量的作用范围只在定义它的函数体的部分,因此,主函数中定义的i与fun中的i互不相干。

20.AA。【解析】线性表的存储通常分为两种存储结构:顺序存储结构和链式存储结构。

\n

21.1030010300解析:在scanf格式控制符中有一个“*”附加说明符,表示跳过它指定的列数。程序中'%d%*d%d'表示首先将10赋给i,然后遇%。d读入整数但不赋给任何变量,最后将读人的整数30赋给变量j,变量k并没有重新赋值,仍为初始值0。所以输出的结果为10300。

22.数据结构数据结构

23.10410\r\n4解析:结构体变量所占内存长度是各成员占的内存长度之和。每个成员分别占有其自己的内存单元。int占2个字节,float占4个字节,共用体变量所占的内存长度等于最长的成员的长度。所以,sizeof(a.share)的值是4,sizeof(a)的值是2+2+2+4=10。

24.f1+f2i%5==0f2=ff1+f2\r\ni%5==0\r\nf2=f解析:f用来保存前两个数之和,并作为第三个数,计算后把第二个数(f2)赋给f1,第三个数(f)赋给f2,再执行for循环。

25.66解析:strlen()函数的作用是计算字符串的长度并作为函数的返回值,这里的长度不包括串尾的结束标志\'\\0\'。

\'\\t\'f是转义字符,代表横向跳若干格:'\\'是转义字符,代表双引号;\'\\023\'只代表一个字符,而不管转义字符后面有几个字符;’仅AB,是以两位十六进制数AB表示的ASCII码字符,只代表一个字符;\'\\n\'是转义字符,代表回车换行。

5个字符常量各代表一个字符,再加上字母C,所以返回的长度是6。

26.k=5k=5解析:本题主要考查了函数的递归调用方法。g=0或g=1或g=2是递归的终止条件,然后用回代的方法从一个已知值推出下一个值,直到计算出最终结果。

27.8208,20解析:本题考查while循环和++运算符的运用。x=0符合条件x<15,则执行y++,x+=++y后,y=1,x=0+2=2后y=2,符合条件继续循环,y=3,x=x+4=6后y=4,再循环y=5,x=x+6=6+6=12后,y=6,继续循环y=7,x=x+8=12+8-20,此时y=8。

28.j<4arr[i][j]arr[i][j]j<4\r\narr[i][j]\r\narr[i][j]解析:2*4矩阵实际上就是一个二维数组,结合本题应为arr[2][4],所以在第一个循环中应当填写“4”;第二个横线处是要判断当前的数组元素值是否大于max,所以应填写arr[i][j];第三个横线处是要将当前大于max的数组元素的值赋给变量max,所以应当填写“arr[i][j]”。

29.int*ptb1[i].p*tb1[j].p<*tb1[j+1].p

30.3*sizeof(double)或243*sizeof(double)或24解析:观察程序可知,本题要求用malloc函数分配三个double型的动态内存单元。

31.1010解析:函数sub递归调用的返回值被作为再次调用sub函数的实参传给函数sub的形参,共进行3次递归调用。第1次调用sub(1234)的返回值为1234/10+1234%10=127;第2次调用sub(127)的返回值为127/10+127%10=19;第3次调用sub(19)的返回值为19/10+19%10=10。所以程序的输出为10。

32.1212解析:本题通过第一个for循坪将数组arr[0]-arr[9]分别赋值为0-9,通过第二个for循环的三次循环累加,求出结果为12,具体分析如下:

i=1:k=0+arr[1]+1即k=2;

i=2:k=2+arr[2]+2即k=6;

i=3:k=6+arr[3]+3即k=12;

33.*t*t解析:函数中首先让n=stxlen(s)所以while循环的循环条件表达式中*(s+n)指向字符串s的结束标志'0',处,而该处应该等于字符串t的第1个字符,另外循环体中让s和t指向下一个字符,即s+n和t同时被移动到下一个位置,所以该处应该填*t,即t所指内容.当t指向字符串结束标志'\\0'的时候,整个循环条件表达式的值也为0(“假”)了,循环结束.正好满足将t所指字符串复制到s所指的字符串的尾部。

34.指针P指向数组a的首地址,执行语句p++;后p指向数组a的第2个元素的地址,即a[1]的地址,因此*p=a[1]=4。\r\n\r\n

35.对象对象解析:类描述的是具有相似性质的一组对象。例如,每本具体的书是一个对象,而这些具体的书都有共同的性质,它们都属于更一般的概念“书”这一类对象。一个具体对象称为类的实例。

36.1616解析:函数运算不改变数据类型,所以结果也是double型,fabs(x)是对x取绝对值,pow(y,fabs(x))是y的labs(x)次幂,即2.04。0=16.000000(注意;结果为double型)。

37.类类解析:在面向对象方法中,类描述的是具有相似属性与操作的一组对象。

38.白盒法白盒法

39.数据流数据流解析:结构化分析方法的实质是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。

40.求出数组元素平均值求出数组元素平均值解析:函数有一个数组形参a和一个整型形参n。函数首先用循环求数组a的前n个元素和,然后将和除以n。即求数组元素的平均值。

41.B解析:第一个for循环,给数组a的20个元素分别赋值0~19;第二个for循环,给数组p赋值,p[0]=a[1]=1,p[1]=a[2]=2,p[2]=a[5]=5,p[3]=a[10]=10;第三个for循环,将数组p中元素的值进行累加,k=1+2+5+10=18。

42.D解析:本题中首先定义了一整型变量n并赋初值为2,接着定义了一个整型指针变量p并让它指向n,接着又定义了一指向指针的指针变量q。选项A中给指针变量p赋值q,故这个赋值语句正确。选项B中*p=*q就是将*q的值赋给指针变量p所指向的变量n,故这个赋值语句不是非法的赋值语句。选项C中是将*q的值赋给变量n,故这个表达式不是非法的赋值语句。选项D中p为一指针变量,应该将一地址赋给它,而在此选项的表达式中将变量n而不是n的地址赋给它,故这个表达式不合法。

43.C解析:面向对象程序设计的特征有以下几点:分类性、继承性、封装性、多态性、模块性等。

44.C解析:在给数组赋值时,可以用一个字符串作为初值,这种方法直观、方便,而且符合人们的习惯。数组array的长度不是5,而是6,这点必须要注意。因为字符串常量的最后由系统加上一个'\\0',因此,上面的初始化与下面的等价:

Chararray[]={'C','h','i','n','a','\\0'};

45.D

46.A解析:C++语言规定:取余运算符的运算对象必须是整型,复合运算符“%=”中包含%运算,它的运算对象也必须是整型。

47.A解析:程序设计的风格主要强调程序的简单、清晰和可理解性,以便读者理解。因此选项A是正确答案。程序滥用goto语句将使程序流程无规律,可读性差;添加的注解行有利于对程序的理解,不应减少或取消;程序的长短要依照实际需要而定,并不是越短越好。因此选项B、C、D都是错误的。

48.B解析:所谓二叉树的前序遍历(DLR)是指在访问根结点、遍历左子树与遍历右子树这3者中,首先访问根结点,然后遍历左子树,最后遍历右子树,并且,在遍历左右子树时,上述规则同样适用,即“根-左-右”。故该二叉树的前序遍历结果为“ATBZXCYP”。注意:对于本题,若使用后序遍历和中序遍历的结果分别为"ZBTYCPXA"和"TZBACYXP"。

49.A解析:两个实体之间的联系实际上是实体集间的函数关系,这种函数关系可以有下面几种,即一对一的联系、一对多(或多对一)的联系和多对多的联系;概念模型便于向各种模型转换。由于概念模型不依赖于具体的数据库管理系统,因此,容易向关系模型、网状模型和层次模型等各种模型转换。

50.C解析:影响模块之间耦合的主要因素有两个:模块之间的连接形式,模块接口的复杂性。一般来说,接口复杂的模块,其耦合程度要比接口简单的的模块强,所以选项A的说法错误;耦合程度弱的模块,其内聚程度一定高,选项B错误;选项C正确。

51.D

52.BB)【解析】数据库的三级模式结构是指数据库系统

\n的外模式、模式和内模式。一个数据库可以有多个外模式,但只有一个模式和一个内模式。

53.A解析:模式设计和内模式设计是概念设计的两种方法。物理设计是根据特定的计算机系统,对数据的存储结构和存取方法进行设计,从而实现从逻辑结构到物理结构的转换。从系统开发的角度来看,结构特性设计和行为特性-设计是数据库应用系统所具有的两个特性。结构特性的设计,设计各级数据库模式(静态特性):行为特性的设计,改变实体及其特性,决定数据库系统的功能(动态特性)。

54.C解析:本题考查数据库的关系代数运算。R表中只有一个域名A,有两个记录(也叫元组),分别是m和n;S表中有两个域名,分别是B和C,其所对应的记录分别为1和3。注意观察表T,它是由R的第一个记录依次与S的所有记录组合,然后再由R的第二个记录与S的所有记录组合,形成的一个新表。上述运算恰恰符合关系代数的笛卡儿积运算规则。关系代数中,笛卡儿积运算用“×”来表示。因此,上述运算可以表示为T=R×S。因此,本题的正确答案为C。

55.C解析:选择运算是一个一元运算,关系R通过选择运算(并由该运算给出所选择的逻辑条件)后仍为一个关系。这个关系是由R中那些满足逻辑条件的元组所组成。如果关系的逻辑条件为f,则R满足f的选择运算可以写成;бf(R)。

56.D

57.B解析:C语言规定标识符只能由字母、数字和下划线3种字符组成,且第—个字符必须为字母或下划线。

58.C解析:本题涉及C语言基本的3个知识点:①C语言规定一个程序只允许有一个主函数,一个函数内可以允许有多个花括号;②C语言的标识符是由字母、数字、下划线组成的,可以是大写字母,而且标识符区分字母的大小写;③C程序的注释部分仅仅是方便程序员阅读,提高程序的可读性和可移植性,它并不参与程序的编译,所以编译器也就不会发现注释行中的错误。

59.B解析:本题考核的知识点是函数递归调用的基本概念。在C语言中所谓函数的递归是在指在调用一个函数的过程中,又出现了直接或间接地调用该函数本身,直接调用该函数本身的称为函数递归,而间接调用该函数称为函数的间接递归调用.显然题目中所说得函数调用为函数的间接递归调用。所以,4个选项中选项B符合题意。

60.A解析:在给p和q数组赋初值时,系统会自动添加字符串结束符,从题目中可以看出数组p和q都有3个字符,所以长度均为3。

61.A本题考查的是输入输出函数。sCanf()是格式化输入函数;getChar()函数从键盘缓冲区读一个字符;putChar()输出一个字符;printf()函数是格式化输出函数。在题目中,程序执行到sCanf()函数时,会暂停等待用户输A4个字符,按题意输)k123<回车>后,字符l-3被分别赋值到Cl-C3中,而C4会得到一个换行符’\\\\n’。然后执行第1个getChar()函数,由于前面的sCanf()函数读完了缓冲区中的所有字符,所以此时程序又会暂停等待用户输入,按题意输入45678<回车>后,缓冲区第一个字符4赋值到。5,第二个字符5赋值给C6,所以本题应该选择A)。

62.A【答案】:A

【知识点】:实体完整性与候选关键字

【解析】:在满足数据完整性约束的条件下,一个关系可以有一个或多个候选关键字,但至少有一个候选关键字,故选A。

63.A字符串末尾一定要有结束标记,双引号括起来的默认添加了结束标记,所以选择A)。

64.C数据的存储结构有顺序存储结构和链式存储结构两种。不同存储结构的数据处理效率不同。由于链表采用链式存储结构,元素的物理顺序并不连续,对于插入和删除无需移动元素,很方便,当查找元素时就需要逐.个元素查找,因此查找的时间相对更长。

65.C

66.B存放字符串的字符数组的名字就是这个字符串的首地址。本题的功能是对字符串”tomeetme”进行选择式输出,从第一个字母开始,每输出一个字符即跳过一个。

67.Dputchar(c1)输出l,putchar(c2)输出2,

68.A\n数组名是一个存放一个数组首地址的值,是一个地址常量。而p=a不是合法的,因为p和a的基本类型不同。

\n

69.C

70.A函数的功能是对数组某一区域内的元素隔个求和;a[3]=4,所以从4开始进行隔个求和,a[7]=8,即对4到8的元素隔个求和,4+6=10。

71.B

\n用'w'方式打开文件,意思是如果文件名相同则覆盖原来的文件,所以当再次输入时覆盖了第一次的内容,B选项正确。\n

72.B

73.B

74.B本题考查通过scanf函数输入数据时的格式控制问题。变量J的格式控制为”%2d”,即只接收输人数据的前两位,从第三位开始直到空格之间的输入都会被保存到变量Y中,因为Y为浮点型数据,所以输出结果为选项B。

75.D

76.C

77.Dx[0]是不能赋值的。

78.B若有n个元素的序列,将元素接腰序组成一棵完全二叉树,当且仅当满足下列条件时称为堆。大根堆是指所有结点的值大于或等于左右子结点的值;小掇堆是指所有结点的值小于或等于左右子结点的值。在调整建堆的过程中,总是将根结点值与左、右子树的根结点进行比较,若不满足堆的条件,则将左、右子树根结点值中的大者与根结点值进行交换。堆排序最坏情况需要0(nl092n)次比较,所以时间复杂度是0(nl092n),B选项正确。

79.B

80.Aa左移2位后值为8,所以答案选择A)。

81.(1)错误:fun(intn);

正确:fun(intn)

(2)错误:if(n=1)

正确:if(n==1)

【解析】根据C语言的语法规则,函数定义之后是不加分号的。由整个程序看,函数fun()是函数定义。因此“fun(intn);”应改为“fun(intn)”;表达式n-1表示的是将1赋给变量n,显’然是不对的。这里应该判断变量n是否等于l,因此“if(n=1)”应改为“if(n==1)”。

82.voidfun(char*s,chart[]){ inti,j=0,n; n=strlen(s);/*遍历整个数组*/ for(i=0;i<=""p="">/*如果元素的ASCII值为偶数*/ if(s[i]%2==0) {/*将元素保存到t中*/ t[j]=s[i]; j++; } t[j]=-‘\0’;}要删除ASCII值为奇数的字符,也就是要保留ASCII值为偶数的字符,将ASCII值为偶数的字符保存到新字符串。所以本题的算法是对原字符串从头到尾进行扫描,找出ASCII值为偶数的字符并依次存入数组。2022-2023年内蒙古自治区赤峰市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.在顺序表{2,5,7,10,14,15,18,23,35,41,52}中,用二分法查找关键码12需做()次关键码比较。

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

2.设x=011050,则x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

3.

有如下程序:

main()

{intn[5]={0,0,0},i,k=2;

for(i=0;i&printf("%d\n",n[k]););

}

该程序的输出结果是()。

A.不确定的值B.2C.1D.0

4.设散列表中m个存储单元,散列函数为H(key)=key%p,p是最好选择()。

A.小于等于m的最大奇数B.小于等于m的最大素数C.小于等于m的最大偶数D.小于等于m的最大合数

5.在一个链式队列中,假设f和r分别为队头和队尾指针,则插入S所指结点的运算是()。

A.f->next=s;f=s;

B.r->next=s;r=s;

C.S->next=rr=s;

D.r->next=f;f=s;

6.有以下程序:#include<stdio.h>doublef(doublex);main(){doublea=0;inti;for(i=0;i<30;i+=10)a+=f((double)i);printf(“%3.0f\n”,a);}doublef(doublex)}returnx*x+1;}程序的运行结果是()。

A.500B.401C.503D.1404

7.函数fread(buffer,size,count,fp)中buffer代表的是()。

A.—个存储区,存放要读的数据项

B.一个整数,代表要读入的数据项总数

C.一个文件指针,指向要读的文件

D.—个指针,指向读入数据要存放的地址

8.

9.对于C语言的函数,下列叙述中正确的是()。

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

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

C.函数的定义和调用都不能嵌套

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

10.

有以下程序

#include<stdio.h>

#include<string.h>

typedefstrlIct{charname[9];charsex;floatscore[2];}STU;

STUf(STUa)

{STUb={"Zhao",m,85.0,90.0);inti;

strcpy(aname,b.name);

sex:b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

}

main

{STUc="Qian",f,95.0,92.0},d;

d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);

}

程序的运行结果是()。

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92

11.有以下程序:

#include<stdio.h>

voidfun(char*t,char*s)

{while(*t!=0)t++;

while((*t++=*s++)!=0);

}

main()

{charss[10]="acc",aa[10]="bbxxyy";

fun(ss,aa);

printf("%s,%s\n",ss,aa);

}

程序运行结果是A.A.accxyy,bbxxyy

B.acc,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy

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

A.在switch语句中,不一定使用break语句

B.break语句只能用于switch语句

C.break语句必须与switch语句中的case配对使用

D.在switch语句中必须使用default

13.下列函数的功能是()。voidfun(char*a,char*b){while((*b=*a)!=‘\0’){a++;b++;}}

A.将a所指字符串赋给b所指空间

B.使指针b指向a所指字符串

C.将a所指字符串和b所指字符串进行比较

D.检查a和b所指字符串中是否有‘\0’

14.若有定义“inta=3,*p=&a,**q=&p;”,则以下叙述中错误的是()。

A.q是指针变量,*q就是变量a

B.p是指针变量,p指向变量a

C.q指向变量p,所以*q指向变量a

D.*p与**q都代表变量a

15.以下程序段中,与语句“k=a>b?(b>c?1:0):0;”功能相同的是()。

A.if((a>b)||(b>c))k=1;elsek=0;

B.if((a>b)&&(b>c))k=1;elsek=0;

C.if(a<=b)k=0;elseif(b<=c)k=1;

D.if(a>b)k=1;elseif(b>c)k=1;elsek=0;

16.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为()。

A.O(n)O(n)B.O(n)O(1)C.O(1)O(n)D.O(1)O(1)

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

18.有以下程序:#include<stdio.h>main(){charch=‘D’;while(ch>‘A’){ch--;putchar(ch);if(ch==‘A’)break;putchar(ch+1);}}程序运行后的输出结果是()。

A.CBB.BCAC.CCBBD.CDBCA

19.有以下程序:#include<stdio.h>#defineN8voidfun(int*x,inti){*x=*(x+i);)main(){inta[N]={1,2,3,4,5,6,7,8},i;fun(a,2);for(i=0;i<N/2;i++){printf(“%d”,a[i]);}printf(“\n”);}程序运行后的输出结果是()。A.1313B.2234C.3234D.1234

20.常采用的两种存储结构是()。

A.顺序存储结构和链式存储结构B.散列方法和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构

二、2.填空题(20题)21.以下程序运行时,若从键盘输入:102030<回车>,输出的结果是【】。

#include<stdio.h>

main()

{inti=0,j=0,k=0;

scanf("%d%*d%d",&i,&j,&k);

prinff("%d%d%d\n",i,j,k);

}

22.Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向______的设计方法。

23.有以下定义和语句,则sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

24.Fibonacci数列中的头两个数是1和1,从第3个数开始,每个数等于前两个数之和。下述程序计算此数列的前20个数,且每行输出5个数,请填空。

#include<stdio.h>

main()

{intf,f1=1,f2=1;

inti;

printf("%6d%6d",f1,f2);

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

{f=【】;

printf("%6d",f);

if(【】)

printf("\n");

f1=f2;

【】;

}

}

25.“printf("%d\n",strlen("\t\"023\xABC\n");”语句的输出结果是______。

26.以下程序运行结果是【】。

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:

case2:return1;}

return(fib(g-1)+fib(g-2));}

main()

{longk;

k=fib(5);

printf("k=%5ld\n",k);}

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

intx=0,y=0;

while(x<15)y++,x+=++y;

printf("%d,%d",y,x);

28.以下函数用于求出一个2×4矩阵中的最大元素值。

max_value(arr)

intarr[][4];

{

inti,j,max;

max=arr[O][0];

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

for(j=0;【】;j++)

if(【】>max)max=【】;

return(max);

}

29.下面的程序为6个整型变量A、B、C、D、E、F输入整数,并按从大到小的顺序输出整数及其所对应的变量名。例如,输入的数为3、2、5、7、4、6,则输出的形式为:D(7)F(6)C(5)E(4)A(3)B(2)。

#include<stdio.h>

intA,B,C,D,E,F;

struct

{

charn;

【】;

}tb1[]={{'A',&A},{'B',&B},{'C',&c},{'D',&D),{'E',&E},{'F',&F}},t;

main()

{

inti,j;

for(i=0;i<6;i++)scanf("%d",【】);

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

for(j=0;j<5-i;j++)

if(【】)

{

t=tb1[j];

tb1[j]=tb1[j+1];

tb1[j+1]=t;

}

for(i=0;i<6;i++)printf("%c(%d)",tb1[i].n,*tb1[i].p);

printf("\n");

}

30.以下程序给指针p分配三个double型动态内存单元,请填空。

#include<stdio.h>

#include<stdlib.h>

main()

{double*p;

p=(double*)malloc(【】);

p[0]=1.5;p[1]=2.5;P[2]=3.5;

printf("%f%f%f\n",p[0],p[1],p[2]);

}

31.有以下程序:

#include<stdio.h>

intsub(intn)

{return(n/10+n%10);}

main()

{intx,y;

seanf("%d",&x);y=sub(sub(sub(x)));

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

}

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

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

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);}

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

#include<string.h>

voidsstrcat(char*s,char*t)

{intn;

n=strlen(s);

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

}

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

#include<stdio.h>

main()

{inta[5]={2,4,6,8,10},*p;

p=a;p++;

printf("%d",*p);

}

35.在面向对象方法中,类的实例称为______。

36.x和y都是double型变量,x的初值为4.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为______。

37.在面向对象方法中,【】描述的是具有相似属性与操作的一组对象。

38.单元测试又称模块测试,一般采用【】测试。

39.结构化分析方法是面向______进行分析的方法。

40.以下函数的功能是【】。

floatav(a,n)

floata[];

intn;

{inti;floats;

for(i=0,s=0;i<n;i++)s=s+a[i];

returns/n;}

三、1.选择题(20题)41.下述程序的输出结果是()。#include<stdio.h>voidmain(){inta[20],*p[4];inti,k=0;for(i=0;i<20;i++)a[i]=i;for(i=0;i<4;i++)p[i]=&a[i*i+1];for(i=0;i<4;i++){k=k+*p[i];}printf("%d",k);}

A.10B.18C.6D.数组元素引用不合法,输出结果不定

42.若有说明:intn=2,*p=&n,*q=p;,则以下非法的赋值语句是

A.p=q;B.*p=*q;C.n=*q;D.p=n;

43.下面选项中不属于面向对象程序设计特征的是()。

A.继承性B.多态性C.类比性D.封闭性

44.设有数组定义:chararray[]="China";则数组array所占的空间为()

A.4个字节B.5个字节C.6个字节D.7个字节

45.有以下程序:#include<stdio.h>main(){inti=0,a=0;while(i<20){for(;;){if((i%5)==0)break;elsei--;}i+=13,a+=i;}pfintf("%d\n",A);}程序的输出结果是()。

A.62B.63C.23D.36

46.C语言中运算对象必须是整型的运算符是()。

A.%=B./C.=D.<=

47.在设计程序时,应采纳的原则之一是______。

A.程序结构应有助于读者理解B.不限制goto语句的使用C.减少或取消注解行D.程序越短越好

48.设有下列二叉树:[*]对此二叉树前序遍历的结果为A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY

49.下列叙述中,正确的是

A.用E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系

B.用E-R图只能表示实体集之间一对一的联系

C.用E-R图只能表示实体集之间一对多的联系

D.用E-R图表示的概念数据模型只能转换为关系数据模型

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

A.接口复杂的模块,其耦合程度一定低

B.耦合程度弱的模块,其内聚程度一定低

C.耦合程度弱的模块,其内聚程度一定高

D.上述3种说法都不对

51.在C语言中,不适用于局部变量的存储类说明符是()

A.autoB.registerC.staticD.extern

52.下面关于数据库三级模式结构的叙述中,正确的是()

A.内模式可以有多个,外模式和模式只有一个

B.外模式可以有多个,内模式和模式只有一个

C.内模式只有一个,模式和外模式可以有多个

D.模式只有一个,外模式和内模式可以有多个

53.数据库设计包括两个方面的设计内容,它们是()

A.概念设计和逻辑设计B.模式设计和内模式设计C.内模式设计和物理设计D.结构特性设计和行为特性设计

54.设有如下三个关系表:

下列操作中正确的是()。

A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S

55.按条件f对关系R进行选择,其关系代数表达式为

A.

B.

C.

D.

56.以下叙述中,正确的是______。

A.do…while语句构成的循环不能用其他语句构成的循环来代替

B.do…while语句构成的循环只能用break语句退出

C.用do…while语句构成的循环,在while后的表达式为非零时结束循环

D.用do…while语句构成的循环,在while后的表达式为零时结束循环

57.下列四个叙述中,错误的是_______。

A.C语言中的关键字必须小写

B.C语言中的标识符必须全部由字母组成

C.C语言不提供输入输出语句

D.C语言中的注释行可以出现在程序的任何位置

58.下列说法正确的是()。

A.一个C程序可以有多个主函数

B.一个C语言的函数中只允许有一对花括号

C.C程序的书写格式是自由的,一个语句可以写在一行上,也可以写在多行内

D.在对C程序进行编译时,可以发现注释行中的拼写错误

59.在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则

A.称为函数的直接递归调用B.称为函数的间接递归调用C.称为函数的循环调用D.C语言上不允许这样的递归调用

60.有以下程序:#include<string.h>main(){charp[]={'a','b','c'},q[10]={'a','b','c'};printf("%d%d\n",strlen(p),strlen(q));}以下叙述中正确的是()。

A.在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

B.由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3

C.由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3

D.由于p和q数组中都没有字符串结束符,故长度都不能确定

四、选择题(20题)61.有以下程序则输出结果是()。A.1245B.1256C.1278D.1267

62.在满足实体完整性约束的条件下()。

A.一个关系中应该有一个或多个候选关键字

B.一个关系中只能有一个候选关键字

C.一个关系中必须有多个候选关键字

D.一个关系中可以没有候选关键字

63.以下能正确定义字符串的语句是(

)。

64.用链表表示线性表的优点是()。A.A.便于随机存取B.花费的存储空间较顺序存储少

C.便于捅入和删除操作

D.数据元素的物理顺序与逻辑顺序相同

65.

66.阅读下面程序,则执行后的结果是()。

A.tomeetme

B.tmem

C.oete

D.tome

67.有以下程序:

程序运行后,若从键盘输入(从第l列开始.:

123<回车>

45678<回车>

则输出结果是()。

A.1267B.1256C.1278D.1245

68.若有定义语句:"inta[4][10],*P,*q[4];"且0≤i<4,则错误的赋值是()。

A.D=aB.q[i]=a[i]C.p=a[l]D.P=&a[2][1]

69.

70.以下程序的输出结果是()。

f(intb[],intm,intn)

{inti,s=0;

for(i=m;i<n;i=i+2)s=s+b[i];

returns;

}

voidmain()

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

x=f(a,3,7);

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

}A.A.10

B.18

C.8

D.15

71.

有以下程序:

#include<stdio.1l>

voidWriteStr(char*fn.char*str)

{FILE*fp;

fp=fopen(fn,"w");fputs(str,fp);fclose(fp);}

main

{WriteStr("tl.dat","start");

WriteStr("t1.dat","end");)

程序运行后,文件t1.dat中的内容是()。

A.startB.endC.startendD.endrt

72.

73.

74.有以下程序段:

当执行上述程序段,从键盘上输入555667777abc后,y的值为()。A.55566.0B.566.0C.7777.0D.566777.0

75.选出下列标识符中不是合法的标识符的是()。

A.hot_doB.cat1C._priD.2ab

76.浏览器中用于负责向用户显示数据的是()。

A.WWWB.IP地址C.HTMLD.DNS

77.设有定义:intx[2][3];,则以下关于二维数组X的叙述错误的是()。

A.x[0]可看做是由3个整型元素组成的一维数组

B.x[0]和x[l]是数组名,分别代表不同的地址常量

C.数组X包含6个元素

D.可以用语句x[o]=0;为数组所有元素赋初值0

78.在最坏情况下,堆排序的时间复杂度是()。

A.0(1902n)B.O(n1092n)C.o(n2)D.0(n1.5)

79.

80.有以下程序程序运行后的输出结果是()。

A.8B.4C.6D.2

五、程序改错题(1题)81.下列给定程

温馨提示

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

评论

0/150

提交评论