2022-2023年湖南省怀化市全国计算机等级考试C语言程序设计_第1页
2022-2023年湖南省怀化市全国计算机等级考试C语言程序设计_第2页
2022-2023年湖南省怀化市全国计算机等级考试C语言程序设计_第3页
2022-2023年湖南省怀化市全国计算机等级考试C语言程序设计_第4页
2022-2023年湖南省怀化市全国计算机等级考试C语言程序设计_第5页
已阅读5页,还剩104页未读 继续免费阅读

下载本文档

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

文档简介

2022-2023年湖南省怀化市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.若有定义语句:intX=10;,则表达式x-=x+X的值为A.-20B.-10C.0D.10

2.在计算机中,算法是指()

A.加工方法B.解题方案的准确而完整的描述C.排序方法D.查询方法

3.

4.有以下程序:

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

A.02B.13C.57D.12

5.有以下程序#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;*q=*(p+5);printf("%d%d\n",*p,*q);}程序运行后的输出结果是______。

A.运行后报错B.66C.611D.510

6.

有下列程序:

main

{charp[]={a,h,c},q[]="a";

printf("%d%d\n".sizeof(P),sizeof(q));

}

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

A.44B.33C.34D.43

7.假设下图中每个正方形的边长为1,则从A到Z的最短路径条数为()A.11B.12C.13D.14

8.表达式a*(b+c)-d的后缀表达式是()。

A.abcdd+-B.abc+*d-C.abc*+d-D.-+*abcd

9.将E-R图转换到关系模式时,实体与联系都可以表示成________。

A.属性B.关系C.键D.域

10.有以下程序

#include<stdio.h>

main()

{charc1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar();c6=getchar();

putchar(c1);putchar(c2);

printf("%c%c\n",c5,c6);

}

程序运行后,若从键盘输入(从第1列开始)

123<回车>

45678<回车>

则输出结果是

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

11.以下叙述中错误的是()。

A.getehar函数用于从磁盘文件读入字符

B.gets匿数用于从终端读入字符串

C.取ns函数用于把字符串输出到文件

D.fwrite函数用于以二进制形式输出数据到文件

12.设有定义“intx[10],*p=x,i;”,若要为数组x读入数据,以下选项正确的是()。

A.for(i=0;i<10;i++)scanf(“%d”,p+i);

B.for(i=0;i<10;i++)scanf(“%d”,*p+i);

C.for(i=0;i<10;i++)scanf(“%d”,*(p+i));

D.for(i=0;i<10;i++)scanf(“%d”,x[i]);

13.允许对队列进行的操作有()。

A.对队列中的元素排序B.取出最近进队的元素C.在队头元素之前插入元素D.删除队头元素

14.

15.以下能正确定义一维数组的选项是()。

A.inta[5]=(0,1,2,3,4,5);

B.chara[]={0,1,2,3,4,5);

C.chara={'A','B','C'};

D.inta[5]="0123";

16.

17.

18.以下符号中不能作为标识符的是()。A.256B.voidC.vanfD.4Struct

19.若有以下程序:main(){intk=2,i=2,m;m=(k+=i*=k);printf('%d,%d\n",m,i);}执行后的输出结果是()。

A.8,6B.8,3C.6,4D.7,4

20.有以下程序(strcat函数用于连接两个字符串):#include<stdio.h>#include<string.h>main(){chara[20]=“ABCD\0EFG\0”,b[]=“UK”;strcat(a,b);printf(“%s\n”,a);}程序的运行结果是()。

A.UKB.ABCDE\0FG\0UKC.ABCDUKD.EFGUK

二、2.填空题(20题)21.在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种;前序遍历、【】遍历和后序遍历。

22.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体“项目主管”与实体“项目”的联系属于______的联系。

23.以下程序的功能是:将输入的正整数按逆序输出。例如:若输入135,则输出531,请填空。

#include<stdio.h>

main()

{intn,s;

printf("Enteranumber:");scanf("%d",&n);

printf("Output:");

do

{s=n%10;printf("%d",s);();}

while(n!=0);

printf("\n");

}

24.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。

25.下列程序的输出结果是【】。

main()

{inti;

for(i=1;i=1;i++)

{if(i>4)

{printf("%d\n",i);

break;}

printf("%d\n",i++);}}

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

main()

{inti,m=0,n=0,k=0;

for(i=9;i<=11;i++)

switch(i/10)

{case0:m++;n++;break;

case1:n++;break;

default:k++;n++;

}

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

}

27.数据结构包括数据的逻辑结构、数据的【】以及对数据的操作运算。

28.下列程序的输出结果是【】。

#include<stdio.h>

main()

{charb[]="Helloyou";

b[5]=0;

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

}

29.若定义#definePI3.14159,则执行完下列程序后输出结果是______。

#definePI3.14159;printf("PI=%f",PI);

30.若有如下定义:

intx=2,y=3,z=4;

则表达式!(x=y)||x+z&&y-z的值是【】。

31.若运行时给变量x输入12,则以下程序的运行结果是【】;

main(){

intx,y;

scanf(""%d"",&x);

y=x>12?x+10:x-12;

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

}

32.性表的多种存储结构中,最简单的方法是【】。

33.已有定义:charc='';inta=1,b;(此处c的初值为空格字符),执行b=!c&Ra;后b的值为______。

34.若有如下程序:

#include"stdio.h"

main()

{chars[30];

strcpy(&s[0],"abc");strcpy(&s[1],"de");strcpy(&s[2],"f");

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

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

35.下列程序的功能是:求出ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,输入字符1,则输出3,请填空。#include<conio.h>#include<stdio.h>#defineM81intfun(char*ss,charC){inti=0;for(;();ss++)if(*ss==C)i++;returni;}main(){chara[M],ch;printf("\nPleaseenterastring:");gets(A);printf("\nPleaseenterachar:");ch=getchar();printf("\nThenumberofthecharis:%d\n",fun(a,ch));}

36.数据结构分为逻辑结构与存储结构,线性链表属于【】。

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

main()

{inta=1,b=10;

do

{b-=a;a++;}while(b--<0);

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

}

38.已知字符A的ACSII码值为65,以下语句的输出结果是______。

charch='B';

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

39.在对文件进行操作的过程中,若要求文件的位置回到文件的开头,应当调用的函数是【】函数。

40.以下程序通过函数指针p调用函数fun,请在填空栏内写出定义变量p的语句。

voidfun(int*x,int*y)

{……}

main()

{inta=10,b=20;

【】:

p=fun;p(&a,&b);

……

}

三、1.选择题(20题)41.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及()。A.A.数据的存储结构B.计算方法C.数据映象D.逻辑存储

42.已知函数的调用形式为fread(buf,size,count,fp),参数buf的含义是

A.一个整型变量,代表要读入的数据项总数

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

C.一个指针;指向要读入数据的存放地址

D.一个存储区,存放要读的数据项

43.有以下程序main(){inta=666,b=888;printf("%d\n",a,B);}程序运行后的输出结果是

A.错误信息B.666C.888D.666,888

44.将E-R图转换到关系模式时,实体与联系都可以表示成________。

A.属性B.关系C.键D.域

45.函数rewind的作用是

A.使文件位置指针重新返回文件的开始位置

B.将文件位置指针指向文件中所要求的特定位置

C.使文件位置指针指向文件的末尾

D.使文件位置指针自动移至下一个字符位置

46.设变量a、b、c、d和y都已正确定义并赋值。若有下列if语句

if(a<B)

if(c==D)y=0;

elsey=1;

该语句所表示的含义是()。

A.

B.

C.

D.

47.结构化程序设计主要强调的是______。

A.程序的规模B.程序的易读性C.程序的执行效率D.程序的可移植性

48.结构化程序设计的核心和基础是()。

A.结构化分析方法B.结构化设计方法C.结构化设计理论D.结构化编程方法

49.设有以下语句

charx=3,y=6,z;

z=x^y<<2;

则z的二进制值是

A.00010100B.00011011C.00011100D.00011000

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

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

51.若有以下定义和语句,则对a数组元素地址的正确引用为inta[2][3],(*p)[3];p=a;

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

52.下列能正确进行字符串赋值的是()。

A.chars[5]={"ABCDE"};

B.chars[5]={'A','B','C','D','E'};

C.char*s;s="ABCDE";

D.char*s;printf("%s",s);

53.设变量已正确定义,则以下能正确计算f=n!的程序段是______。A.f=0;for(i=1;i<n;i++)f*=i;

B.f=1;for(i=1;i<n;i++)f*=i;

C.f=1;for(i=n;i>1;i++)f*=i;

D.f=1;for(i=n;i>=2;i--)f*=i;

54.若在fopen函数中使用文件的方式是"wb+",该方式的含义是()

A.为读/写打开一个文本文件

B.为输出打开一个文本文件

C.为读/写建立一个新的文本文件

D.为读/写建立一个新的二进制文件

55.下列程序的输出结果是______。main(){unsignedshorta=65536;intb;printf("%d\n",b:a);}

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

56.有以下程序

#include<stdio.h>

#defineN5

#defineMN+1

#definef(x)(x*M)

main()

{inti1,i2;

i1=f(2);

i2=f(1+1);

printf("%d%d\n",i1,i2);

}

程序的运行结果是

A.1212B.117C.1111D.127

57.对建立良好的程序设计风格,下列描述正确的是()。

A.程序应该简单、清晰、可读性好B.符号名的命名只需要符合语法C.充分考虑程序的执行效率D.程序的注释可有可无

58.以下4个选项中,不能被看作是一条语句的是______。

A.{;}B.a=0,b=0,c=0;C.if(a>O);D.if(b==0)m=1;n=2;

59.下列选项中,不属于模块间耦合的是()

A.数据耦合B.同构耦合C.异构耦合D.公用耦合

60.下面程序的输出是______。main(){char*s="12134211";intv1=0,v2=0,v3=0,v4=0,k;for(k=0;s[k];k++)switch(s[k]){default:v4++;case'1':v1++;case'3':v3++;case'2':v2++;}printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);}

A.v1=4,v2=2,v3=1,v4=1

B.v1=4,v2=9,v3=3,v4=1

C.v1=5,v2=8,v3=6,v4=1

D.v1=8,v2=8,v3=8,v4=8

四、选择题(20题)61.

62.设有以下程序段:

要求输入字符串给结构体变量rec的title成员,错误的输入语句是()。

A.seanf(”%s”Ptrtitle);

B.scanf(”%s”,rec.title);

C.scanf(’’%s”,(*pu).title);

D.scanf(”%s”,ptr->title);

63.

64.28.以下叙述中错误的是

A.对于float类型数组,不可以直接用数组名完成对数组进行整体输入或输出

B.数组名代表的是数组所占存储区的首地址,其值是常量,是不可改变的

C.当执行程序时,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息

D.可以通过赋初值的方式确定数组元素的个数

65.

66.

67.数据库设计中,用E—R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的()。

A.需求分析阶段B.逻辑设计阶段C.概念设计阶段D.物理设计阶段

68.(62)栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是()

A.ABCED

B.DBCEA

C.CDABE

D.DCBEA

69.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是()。

A.大写字母B.连接符C.数字字符D.下划线

70.

71.

下列程序的运行结果是()。

#include<stdio.h>

main

{staticchara[]="Languagef",b[]="programe":

char*p1,*p2;intk;

p1=a;p2=b;

for(k=0;k<=8;k++)

if(*(p1+k)==*(p2+k))

printf("%c",*(p1+k)):

}

A.gaeB.angC.programD.有语法错

72.设“intx=2,y=1;”,则表达式(!x||Y--)的值是()。

A.0B.1C.2D.-1

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

main()

{inta=1;

charc=’a’;

floatf=2.0;

Printf("%d\n",(!(a==0),f1=0&&c==’A’));

}

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

74.设有如下三个关系表

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

A.T=RnSB.T=RUSC.T=R×SD.T=R/S

75.在软件开发中,需求分析阶段产生的主要文档是()。

A.软件需求规格说明书B.数据库说明书C.集成测试计划D.概要设计说明书

76.

定义结构体数组:

structstu

{intnum;

charnameE20];

}X[5]={1,"LI",2,"ZHAO",3,"WANG",4,"ZHANG",5,"LIU");

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

printf("%d%c",x[i].num,x[i].name[2]);

以上程序段的输出结果为()。

A.2A3N4A5UB.112A3H4IC.1A2N3A4UD.2H3A4H5I

77.以下关于return语句的叙述中正确的是()。A.一个自定义函数中可以根据不同情况设置多条return语句

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

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

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

78.

79.以下程序中,函数sort的功能是对a数组中的数据进行由大到小的排序。

voidsort(inta[],intn)

{inti,j,t;

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

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

if(a[i]<a[j])

{t=a[i];a[i]=a[j];a[j]=t;}

}

main()

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

sort(&aa[3],5);

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

printf("\n");

}

程序运行后的输出结果是

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

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

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

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

80.若有定义:inta,h;通过语句:scanf(”%d;%d”,&a,&B.;,能把整数3赋给变量a,5赋给变量b的输入数据是()。

A.35B.3,5C.3;5D.35

五、程序改错题(1题)81.给定程序中,函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符:按排列的顺序交叉合并到C所指数组中,过长的剩余字符接在C所指的数组的尾部。例如,当a.所指字符串中的内容为“abcdef9”,b所指字符串中的内容为“1234”时,c所指数组中的内容应“a4b3c2dlef9”;而当a所指字符串中的内容为“1234”,b所指字符串的内容为“abcdef9”时,c所指数组中的内容应该为“lg2f3e4dcba”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。此程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数该函数的功能是使数组下三角元素中的值乘以n。注意:部分源程序给出如下。请勿改动函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>#defineN5voidfun(inta[][N],intn){}main(){inta[N][N],n,i,j;printf(“*****Thearray*****\n”);for(i=0;i<n;i++)<p=""></n;i++)<>{for(j=0;j<=""p="">{a[i][j]=rand()%10;printf(“%4d”,a[i][j]);}printf(“\n”);}n=rand()%4;printf(“n=%4d\n”,n);fun(a,n);printf(“*****TheResult*****\n”);for(i=0;i<=""p="">{for(j=0;j<=""p="">printf(“%4d”,a[i][j]);printf(“\n”);}}

参考答案

1.B解析:x-=x+x可化为:x=x-(x+x),由于x初始值为10,所以计算后,x=10-20=-10,因此选B)。

2.B在计算机中,算法被定义为对一个问题求解步骤的一种描述,是求解问题的方法,它是指令的有限序列,其中每条指令表示一个或者多个操作。算法具有有穷性、确定性、可行性、输入和输出五大特点。

在本题中,选项A、C、D的说法明显偏离了算法的定义,因此正确答案选B。

3.D

4.D本题考查逻辑运算符的”短路”现象,由于k的值为0,表达式首先去求k++的值,因为表达式k++的值为0,系统完全可以确定逻辑表达式的运算结果总是为0,因此将跳过n++>2,不再对它进行求值,即k的值加1,n的值不变。

5.A解析:本题考核的知识点是通过指针引用数组的元素的方法.本题中首先定义了一个一维数组a并初始化,由于定义该数组的时候省略了长度,因此该数组的长度为初始化时候赋初值的个数即为12。数组名a代表数组的首地址,所以*p=a+5语句使得p指向数组的第6个元素,而在程序中定义了一个指针q并让它指向空,实际上程序并没有在内存中为指针q开辟存储空间,这样给q赋值不允许的,故该程序运行后报错。所以,4个选项中选项A符合题意。

6.C

\n语句charp[]={a,b,c);定义了一个一维字符数组p[],并用3个字符a,b,c进行了初始化;而语句q[]='abe'表示定义了一个一维字符数组,并用一个字符串常量'abc'进行了初始化。在C语言中,系统在每个字符串常量的最后自动加入一个字符\0作为字符串的结束符。所以函数sizeof(q)=4,而sizeof(p)=3,因而选项C为正确答案。

\n

\n

\n

7.C

8.B

9.B解析:关系数据库逻辑设计的主要工作是将\ue008E-R\ue009图转换成指定RDBMS中的关系模式。首先,从E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R图中属性也可以转换成关系的属性,实体集也可以转换成关系。

10.D解析:putchar(c1)输出1,putchar(c2)输出2,printf('%c%c\\n',c5,c6)输出45。

11.A本题考查的是文件操作。题中“fopen(fn,”w”)”的作用是打开fn所指向的文件,使用文件方式为“写入”;

“每uts(str,fp)”的作用是将字符str的值输出到fb所指向的文件中去。在程序中,两次使用“写入”的方式打开同一个文件,在第二次打开时,文件指针指向文件头,所以此次写入的数据覆盖了文件原有的数据,故本题中tl.dat的内容为end。故本题答案为A)。

12.AC语言中scanf函数的声明为“scanf(“<格式化字符串>”,<地址表>);”,可知scanf的第2个参数是地址。因此,从4个答案中可以判断,只有选项A是p[i]的地址,其他的均是变量本身。故本题答案为A选项。

13.D

14.D

15.B数组1标从0开始,A选项中所赋值的个数超过了数组的长度;C选项中定义a为字符型变量,而不是数组,赋值错误;D选项中,整型数组不能赋字符串。

16.A

17.C

18.B

19.C解析:本题考查的知识点是运算符的优先级.在复合赋值语句中,应该由右向左依次赋值,在表达式中,右端由i*=k得i=2*2为4,k=k+i,即k值为6,m=k故m=6.所以4个选项中C正确。

20.C字符数组a中包含两个‘\\0’。遇到第1个‘\\0’时就表示字符串a结束。字符串处理函数strcat(字符数组a,字符数组b),功能是连接两个字符串,把字符串b连接到字符串a的后面,结果放在字符数组a中。连接时将字符串a后的‘\\0’取消,只在新串最后保留一个‘\\0’。本题相当于将“ABCD”和“IJK”连接。故本题答案为C选项。

21.中序中序解析:在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、中序遍历和后序遍历.前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。中序遍历指在访问根结点、遍历左了树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树:并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历右子树,然后访问根结点,最后遍历左子树;并且遍历左、右子树时,仍然光遍历右子树,然后访问根结点,最后遍历左子树。

22.1对多(或1:N)1对多(或1:N)

23.n/=10n/=10解析:正整数按逆序输出,即从低位到高位顺序取出该正整数个数位的值输出。“s=n%10”为除10取余,第一次循环取出该正整数小数位,为顺序移位,该空应为n/=10。

24.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。

25.1351\r\n3\r\n5解析:本题考查了for循环语句的使用,break语句用在本题中是结束for循环直接跳出循环体外。当i=1时,因为if语句条件不满足,所以直接执行printf('%d\\n',i++);输出1,同时i自加1;执行第二次for循环时,i:3;同样的if语句条件不满足,所以直接执行printf('%d\\n',i++);输出3,同时i自加1执行第三次for循环时,i=5,讧语句条件满足,所以执行printf('%d\\n',i)输出5,然后break语句跳出了for循环。

26.130130解析:本题主函数中用了一个for循环,循环了3次:当i=9时,i/10=0,执行switch语句中case0分支,m和n的值各增1,变为1和1,然后遇到break语句,退出switch语句;当i=10和11时,i/10都等于1,执行switch语句中的case1分支,两次使n增1,变为3,退出switch语句。故该空格处应该填130。

27.存储结构数据结构包括3个方面,即数据的逻辑结构、数据的存储结构及对数据的操作运算。

28.HelloHello解析:语句b[5]=0;相当于语句b[5]='\\0';且'\\0'为字符串结束标志,输出时遇到'\\0'就停止输出。

29.PI=3.14159PI=3.14159解析:本题先定义了一个宏名PI,以后在程序中出现PI都用3.14159替代,但是C语言规定:双引号中的宏名是不进行替换的。

30.11解析:运算符的优先级次序由高到底是!,算术运算符,&&,||。先运算!(x=y),由于x=3非零,则表达式!(x=y)的值为0。再运算x+z,x+z=3+4=7,非零则运算y-z,y-z=3-4=-1,非零则表达式x+z&&y-z的值为1。0||1=0,则表达式!(x=y)||x+z&&y-z的值是1。

31.00解析:三目运算符的形式为(表达式1)?(表达式2):(表达式3)。当(表达式1)值为真时,返回(表达式2)的值;为假时,返回(表达式3)的值。题中因为x>12为假,所以结果为x-12,即为0。

32.顺序存储顺序存储

33.11解析:字符空格的ASCII码不为0,所以本题中表达式!c的值为0,b=0&&1的结果显然为0。

34.adf

35.*ss!='\0'*ss!='\\0'解析:本题考查的是指针的应用。题目要求求出字符串ss中指定字符的个数。分析整个程序,空缺处是检验指针ss是否指向了字符串的末尾,如没有,即执行下面语句,判断指针ss指向的字符是否字符c,若是,i自加1;所以空缺处填入*ss!='\\0',作为循环终止的条件。

36.存储结构

37.282,8解析:do…while语句的功能是:首先执行循环体语句,然后检测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环。这里程序初始时a=1,b=10,经过操作b-=a;a++后b=9,a=2,判断条件b--<O不成立,退出循环,但b的值被减1,因此结果为:a=2,b=8。

38.B66B66解析:printf函数的功能是按照指定的格式,在标准输出设备上输出数据,它有两种参数:格式控制参数和输出项参数。本题中,printf('%c%d\\n',ch,ch)表示以字符格式和十进制整数格式输出ch,B的ACSII码值为66,即在计算机中B的十进制整数格式是66。所以,输出为B66。

39.rewind()或fseek()rewind()或fseek()

40.void(*p)();void(*p)();解析:要定义p为指向函数的指针变量,需写成void(*p)();,注意*p两侧的括弧不可以省略,表示P先与*结合,是指针变量,再与后面的()结合,表示此指针变量指向函数,这个函数无返回值(同fun()函数)。

41.A解析:数据结构作为计算机的一门学科,主要研究和讨论以下三个方面的问题:①数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;②在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;③对各种数据结构进行的运算。

42.C解析:这是一道考查fread函数的题。buf是一个指针,fread是读入数据的存放地址;fwrite是输出数据的地址(以上指的是起始地址)。

43.B解析:程序中的printf()函数的输出格式部分只说明了一个%d,而输出成员列表却有两个成员a和b,在这里将只输出第一个成员a值为666,所以,4个选项中选项B符合题意。

44.B解析:关系数据库逻辑设计的主要工作是将\ue008E-R\ue009图转换成指定RDBMS中的关系模式。首先,从E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R图中属性也可以转换成关系的属性,实体集也可以转换成关系。

45.A解析:函数rewind的功能是将文件指针重新指向一个流的开头。用法如下:

intrewind(FILE*stream);并且无返值。

46.C解析:语句if(c==d)y=0;elsey=1;是if(a<b)语句的一个子句。所以整个C语句表达式的意思是:在a<b的情况下,如果c=d则y=0,否则y=1。所以,选项C)为正确答案。

47.B解析:采用结构化编程方法的好处主要在于:一是便于控制、降低程序的复杂性,因此便于编写程序。二是程序清晰易读,可理解性好。因此,结构化程序设计主要强调的是程序的易读性,而不是程序的规模、程序的执行效率和程序的可移植性。

48.CC。【解析】结构化程序设计的核心和基础是结构化设计理论,其中包括:结构化分析方法、结构化设计方法和结构化编程方法。

49.B本题主要考查位运算。“按位异或”运算(^)是双目运算符,其功能是把参与运算的两数各对应的二进制位相异或,它在操作时,两对应位相同结果为0,不同则为1。“左移”运算(<<)的功能是把“<<”左边的运算数的各二进制位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。左移时,若左端移出的部分不包含有效二进制数1,则每左移一位,相当于移位对象乘以2。

本题中,有三个字符型的变量x,y,z,其中x和y的值分别为3和6。先转换为二进制数分别为00000011和00000110。本题中需要注意的是逻辑左移运算符的优先级比按位异或运算符的优先级高,因此,先将y进行运算逻辑左移2位操作,得到的结果为00011000,然后进行按位异或运算,得到最后的结果是00011011。本题正确的答案选B。

50.C(10)C)解析:DB即数据库(Database),是统一管理的相关数据的集合;DBMS即数据库管理系统(DatabaseManagementSystem),是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法;DBS即数据库系统(DatabaseSystem)由如下5部分组成,数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。

51.C解析:本题考查了通过行指针来引用二维数组元素的方法。选项C中p[1]指向了数组a的第二行,p[1]+1则指向了第二行的第二个数据元素,其他几个选项都不正确。

52.C解析:字符串存储要有结束符“\\0”且要占用一个空间,选项A)、B的空间不够:printf用来输出字符,不能输入字符串.

53.D解析:n!=n*(n-1)*……*2*1,由于选项A中f的初值为0,所以循环n次后,f值依然为0,故选项A错误:选项B中循环的终止条件是“i<n”,即只执行i-1次循环,得到的f值为(n-1)*……*2*1的值,故选项B错误;选项C中,当n>1时,由于初值“i=n”是符合条件“i>1”的,且增量为+1,故循环中永远不会出现不满足条件“i>1”的值,所以出现死循环。

54.D

55.A

56.B解析:根据宏替换的替换规则,我们可知,f(2)=2*N+1=2*5+1=11,f(1+1)=1+1*N+1=1+1*5+1=7。

57.A解析:“清晰第一,效率第二”,在考虑到程序的执行效率的同时,一定要保证程序清晰、可读;对符号名的命名,除了要符合语法要求外,还要具有一定的含义;程序的注释可以帮助程序员理解程序,不是可有可无的。

58.D解析:选项D中有两条语句。

59.C解析:模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。按照耦合程度从弱到强,可以将其分成5级,分别是:数据耦合、同构耦合、控制耦合、公用耦合和内容耦合。选项C),没有这种耦合方式。注意:评价模块独立性的主要标准,以及对它们的定义和分类。

60.C解析:当switch后面括弧内的表达式的值与某一个case后面的常量的表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。

61.D

62.A符号“_>”是指针特用的,符号“.”用于指定元素的成员。ptr是指针,只能用符号“一>”,因此选项A错误。+P是指定元素(Fee)可以使用“.”运算,因此选项D正确。选项B,Fee.title代表数组title,同理选项C正确。答案为A选项。

63.B

64.C选项A“对于float类型数组,不可以直接用数组名完成对数组进行整体输入或输出”,是正确的。C语言中规定,只有字符型的数组才可以用数组名完成对数组进行整体输入或输出,主要是因为没有字符串型的变量,通常用一个字符数组来存放字符串。采用字符串方式后,便可用数组名对数组进行整体输入和输出。

选项B“数组名代表的是数组所占存储区的首地址,其值是常量,是不可改变的”,是正确的。数组名本身是没有方括号和下标的,它实际上是表示数组起始的地址,该地址在数组初始化时由系统分配。

选项C“当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出‘下标越界’的出错信息”,是错误的。在某些编程语言中,下标的取值是不允许超出数组定义中所设的界限的。但是在C和C++中,编译器不对下标的范围进行检查。不检查下标范围的目的有两个,一个是提高运行效率,不检查下标,程序编译耗费时间少。另一个是能够方便指针的使用,数组名并没有包含该数组长度的信息,只包含地址信息,可以看成是一个指针,若检查下标,将限制数组名的使用功能。

选项D“可以通过赋初值的方式确定数组元素的个数”是正确的。C语言规定,如果对数组中所有的元素赋初值,可以省略定义元素的个数。

65.D

66.A

67.CC。【解析】E—R(Entity—Relationship)图为实体一联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。

68.D

69.B解析:在C语言中,用户标识符命令规则规定:变量名只能由字母、数字或下划线3种字符组成,且第一个字符必须为字母或下划线。在C语言中,大写字母和小写字母被认为是两个不同的字符。据此规定A)、D)、C)三个选项是正确的,而B)选项是连字符,不在C语言规定的命名变量标识符的范围内。

70.D

71.A

\n本题考查指针用法,if语句的功能是判断两个数组中的字符是否相同,如果相同则输出。

\n

72.B因X为2,所以!X时表达式值为0,因Y为1,y--表达式的值为1然后自减1,y为0,所以!x||y--时表达式的值为1。

73.A输入函数的输出项从整体看是一个逗号表达式,对于逗号表达式,我们只需求出最后一个表达式的值即可,首先f赋值为0,c==’A’,不成立,因为c=’a’,所以结果为假,即0,因此结果输出的就是0.

74.C\n对于两个关系的合并操作可以用笛卡尔积表示。设有n元关系R和in元关系s,它们分别有P和q个元组,则R与S的笛卡儿积记为R×S它是一个m+n元关系,元组个数是P×q由题意可得,关系T是由关系R与关系s进行笛卡尔积运算得到的。

\n

75.A软件需求规格说明书是需求分析阶段最后的成果,它是作为需求分析的一部分而制定的可交付文档。概要设计说明书、数据库说明书、集成测试计划都是概要设计阶段需要编写的文档。

76.A

\n本题主要考查结构体数组的使用。x[i].num为结构体x[i]中的hum成员,x[i].num[2]是结构体x[i]中name成员的第3个元素。程序执行循环过程时:第1次循环,i=1,输出x[i].num,x[1].name[2]的值;第2次循环,i=2,输出x[2].num,x[2].name[2]的值,即3N;第3次循环,i=3,输出X[3].hum,x[3].name[2]的值,即4A;第4次循环,i=4,输出x[4].num,x[4].name[2]的值,即5U。

\n

77.A一个函数可以有多个return语句,所以选择A)。

78.A

79.C本题题目给出了函数sort的功能是对a数组中的数据进行由大到小的排序。在函数sort中,带有两个形参,其中一个为要操作的数组a,在函数体中,通过双重循环对a数组元素进行排序。

在主函数中,定义了一个数字aa,并赋了初值,然后调用函数sort,其两个参数分别为&aa[3]和5,其中&aa[3]表示从数组aa的第四个元素作为首地址,即使形参数组a的首地址等于实参数组aa第四个元素的地址,从数组aa的第四个元素开始操作,即a[0]=aa[3]=4,a[1]=aa[4]=5,…,a[4]=aa[7]=8。

题目告诉我们,sort的功能是对a数组中的数据进行由大到小的排序。那么对4,5,6,7,8排序的结果是8,7,6,5,4。调用函数结束后,数组aa中的值是1,2,3,8,7,6,5,4,9,10。然后程序通过一个循环输出该数组中的元素。因此,最后程序的输出结果为1,2,3,8,7,6,5,4,9,10。

80.C输入数据的格式必须与seanf()的格式控制串完全匹配,所以输入时必须在3和5之间输入“;”。

81.

82.voidfun(inta[][n],intn){inti,j;for(i=0;i<=""p="">for(j=0;j<=i;j++)/*矩形的下三角时,积相乘*/a[i][j]=a[i][j]*n;}首先从数组中找出要乘以n的元素。这其实就是找出将被挑出的元素在原数组中的分布规律的过程。通过观察得出,要被处理的元素下标的范围是从每行中第1个元素开始,直到列数等于该行行数为止。即数组下三角元素的列下标(j)小于等于(<=)行下标(j)。找到这个规律后,依次从数组中取得符合要求的元素,然后乘以n。2022-2023年湖南省怀化市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.若有定义语句:intX=10;,则表达式x-=x+X的值为A.-20B.-10C.0D.10

2.在计算机中,算法是指()

A.加工方法B.解题方案的准确而完整的描述C.排序方法D.查询方法

3.

4.有以下程序:

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

A.02B.13C.57D.12

5.有以下程序#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;*q=*(p+5);printf("%d%d\n",*p,*q);}程序运行后的输出结果是______。

A.运行后报错B.66C.611D.510

6.

有下列程序:

main

{charp[]={a,h,c},q[]="a";

printf("%d%d\n".sizeof(P),sizeof(q));

}

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

A.44B.33C.34D.43

7.假设下图中每个正方形的边长为1,则从A到Z的最短路径条数为()A.11B.12C.13D.14

8.表达式a*(b+c)-d的后缀表达式是()。

A.abcdd+-B.abc+*d-C.abc*+d-D.-+*abcd

9.将E-R图转换到关系模式时,实体与联系都可以表示成________。

A.属性B.关系C.键D.域

10.有以下程序

#include<stdio.h>

main()

{charc1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar();c6=getchar();

putchar(c1);putchar(c2);

printf("%c%c\n",c5,c6);

}

程序运行后,若从键盘输入(从第1列开始)

123<回车>

45678<回车>

则输出结果是

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

11.以下叙述中错误的是()。

A.getehar函数用于从磁盘文件读入字符

B.gets匿数用于从终端读入字符串

C.取ns函数用于把字符串输出到文件

D.fwrite函数用于以二进制形式输出数据到文件

12.设有定义“intx[10],*p=x,i;”,若要为数组x读入数据,以下选项正确的是()。

A.for(i=0;i<10;i++)scanf(“%d”,p+i);

B.for(i=0;i<10;i++)scanf(“%d”,*p+i);

C.for(i=0;i<10;i++)scanf(“%d”,*(p+i));

D.for(i=0;i<10;i++)scanf(“%d”,x[i]);

13.允许对队列进行的操作有()。

A.对队列中的元素排序B.取出最近进队的元素C.在队头元素之前插入元素D.删除队头元素

14.

15.以下能正确定义一维数组的选项是()。

A.inta[5]=(0,1,2,3,4,5);

B.chara[]={0,1,2,3,4,5);

C.chara={'A','B','C'};

D.inta[5]="0123";

16.

17.

18.以下符号中不能作为标识符的是()。A.256B.voidC.vanfD.4Struct

19.若有以下程序:main(){intk=2,i=2,m;m=(k+=i*=k);printf('%d,%d\n",m,i);}执行后的输出结果是()。

A.8,6B.8,3C.6,4D.7,4

20.有以下程序(strcat函数用于连接两个字符串):#include<stdio.h>#include<string.h>main(){chara[20]=“ABCD\0EFG\0”,b[]=“UK”;strcat(a,b);printf(“%s\n”,a);}程序的运行结果是()。

A.UKB.ABCDE\0FG\0UKC.ABCDUKD.EFGUK

二、2.填空题(20题)21.在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种;前序遍历、【】遍历和后序遍历。

22.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体“项目主管”与实体“项目”的联系属于______的联系。

23.以下程序的功能是:将输入的正整数按逆序输出。例如:若输入135,则输出531,请填空。

#include<stdio.h>

main()

{intn,s;

printf("Enteranumber:");scanf("%d",&n);

printf("Output:");

do

{s=n%10;printf("%d",s);();}

while(n!=0);

printf("\n");

}

24.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。

25.下列程序的输出结果是【】。

main()

{inti;

for(i=1;i=1;i++)

{if(i>4)

{printf("%d\n",i);

break;}

printf("%d\n",i++);}}

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

main()

{inti,m=0,n=0,k=0;

for(i=9;i<=11;i++)

switch(i/10)

{case0:m++;n++;break;

case1:n++;break;

default:k++;n++;

}

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

}

27.数据结构包括数据的逻辑结构、数据的【】以及对数据的操作运算。

28.下列程序的输出结果是【】。

#include<stdio.h>

main()

{charb[]="Helloyou";

b[5]=0;

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

}

29.若定义#definePI3.14159,则执行完下列程序后输出结果是______。

#definePI3.14159;printf("PI=%f",PI);

30.若有如下定义:

intx=2,y=3,z=4;

则表达式!(x=y)||x+z&&y-z的值是【】。

31.若运行时给变量x输入12,则以下程序的运行结果是【】;

main(){

intx,y;

scanf(""%d"",&x);

y=x>12?x+10:x-12;

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

}

32.性表的多种存储结构中,最简单的方法是【】。

33.已有定义:charc='';inta=1,b;(此处c的初值为空格字符),执行b=!c&Ra;后b的值为______。

34.若有如下程序:

#include"stdio.h"

main()

{chars[30];

strcpy(&s[0],"abc");strcpy(&s[1],"de");strcpy(&s[2],"f");

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

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

35.下列程序的功能是:求出ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,输入字符1,则输出3,请填空。#include<conio.h>#include<stdio.h>#defineM81intfun(char*ss,charC){inti=0;for(;();ss++)if(*ss==C)i++;returni;}main(){chara[M],ch;printf("\nPleaseenterastring:");gets(A);printf("\nPleaseenterachar:");ch=getchar();printf("\nThenumberofthecharis:%d\n",fun(a,ch));}

36.数据结构分为逻辑结构与存储结构,线性链表属于【】。

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

main()

{inta=1,b=10;

do

{b-=a;a++;}while(b--<0);

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

}

38.已知字符A的ACSII码值为65,以下语句的输出结果是______。

charch='B';

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

39.在对文件进行操作的过程中,若要求文件的位置回到文件的开头,应当调用的函数是【】函数。

40.以下程序通过函数指针p调用函数fun,请在填空栏内写出定义变量p的语句。

voidfun(int*x,int*y)

{……}

main()

{inta=10,b=20;

【】:

p=fun;p(&a,&b);

……

}

三、1.选择题(20题)41.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及()。A.A.数据的存储结构B.计算方法C.数据映象D.逻辑存储

42.已知函数的调用形式为fread(buf,size,count,fp),参数buf的含义是

A.一个整型变量,代表要读入的数据项总数

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

C.一个指针;指向要读入数据的存放地址

D.一个存储区,存放要读的数据项

43.有以下程序main(){inta=666,b=888;printf("%d\n",a,B);}程序运行后的输出结果是

A.错误信息B.666C.888D.666,888

44.将E-R图转换到关系模式时,实体与联系都可以表示成________。

A.属性B.关系C.键D.域

45.函数rewind的作用是

A.使文件位置指针重新返回文件的开始位置

B.将文件位置指针指向文件中所要求的特定位置

C.使文件位置指针指向文件的末尾

D.使文件位置指针自动移至下一个字符位置

46.设变量a、b、c、d和y都已正确定义并赋值。若有下列if语句

if(a<B)

if(c==D)y=0;

elsey=1;

该语句所表示的含义是()。

A.

B.

C.

D.

47.结构化程序设计主要强调的是______。

A.程序的规模B.程序的易读性C.程序的执行效率D.程序的可移植性

48.结构化程序设计的核心和基础是()。

A.结构化分析方法B.结构化设计方法C.结构化设计理论D.结构化编程方法

49.设有以下语句

charx=3,y=6,z;

z=x^y<<2;

则z的二进制值是

A.00010100B.00011011C.00011100D.00011000

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

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

51.若有以下定义和语句,则对a数组元素地址的正确引用为inta[2][3],(*p)[3];p=a;

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

52.下列能正确进行字符串赋值的是()。

A.chars[5]={"ABCDE"};

B.chars[5]={'A','B','C','D','E'};

C.char*s;s="ABCDE";

D.char*s;printf("%s",s);

53.设变量已正确定义,则以下能正确计算f=n!的程序段是______。A.f=0;for(i=1;i<n;i++)f*=i;

B.f=1;for(i=1;i<n;i++)f*=i;

C.f=1;for(i=n;i>1;i++)f*=i;

D.f=1;for(i=n;i>=2;i--)f*=i;

54.若在fopen函数中使用文件的方式是"wb+",该方式的含义是()

A.为读/写打开一个文本文件

B.为输出打开一个文本文件

C.为读/写建立一个新的文本文件

D.为读/写建立一个新的二进制文件

55.下列程序的输出结果是______。main(){unsignedshorta=65536;intb;printf("%d\n",b:a);}

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

56.有以下程序

#include<stdio.h>

#defineN5

#defineMN+1

#definef(x)(x*M)

main()

{inti1,i2;

i1=f(2);

i2=f(1+1);

printf("%d%d\n",i1,i2);

}

程序的运行结果是

A.1212B.117C.1111D.127

57.对建立良好的程序设计风格,下列描述正确的是()。

A.程序应该简单、清晰、可读性好B.符号名的命名只需要符合语法C.充分考虑程序的执行效率D.程序的注释可有可无

58.以下4个选项中,不能被看作是一条语句的是______。

A.{;}B.a=0,b=0,c=0;C.if(a>O);D.if(b==0)m=1;n=2;

59.下列选项中,不属于模块间耦合的是()

A.数据耦合B.同构耦合C.异构耦合D.公用耦合

60.下面程序的输出是______。main(){char*s="12134211";intv1=0,v2=0,v3=0,v4=0,k;for(k=0;s[k];k++)switch(s[k]){default:v4++;case'1':v1++;case'3':v3++;case'2':v2++;}printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);}

A.v1=4,v2=2,v3=1,v4=1

B.v1=4,v2=9,v3=3,v4=1

C.v1=5,v2=8,v3=6,v4=1

D.v1=8,v2=8,v3=8,v4=8

四、选择题(20题)61.

62.设有以下程序段:

要求输入字符串给结构体变量rec的title成员,错误的输入语句是()。

A.seanf(”%s”Ptrtitle);

B.scanf(”%s”,rec.title);

C.scanf(’’%s”,(*pu).title);

D.scanf(”%s”,ptr->title);

63.

64.28.以下叙述中错误的是

A.对于float类型数组,不可以直接用数组名完成对数组进行整体输入或输出

B.数组名代表的是数组所占存储区的首地址,其值是常量,是不可改变的

C.当执行程序时,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息

D.可以通过赋初值的方式确定数组元素的个数

65.

66.

67.数据库设计中,用E—R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的()。

A.需求分析阶段B.逻辑设计阶段C.概念设计阶段D.物理设计阶段

68.(62)栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是()

A.ABCED

B.DBCEA

C.CDABE

D.DCBEA

69.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是()。

A.大写字母B.连接符C.数字字符D.下划线

70.

71.

下列程序的运行结果是()。

#include<stdio.h>

main

{staticchara[]="Languagef",b[]="programe":

char*p1,*p2;intk;

p1=a;p2=b;

for(k=0;k<=8;k++)

if(*(p1+k)==*(p2+k))

printf("%c",*(p1+k)):

}

A.gaeB.angC.programD.有语法错

72.设“intx=2,y=1;”,则表达式(!x||Y--)的值是()。

A.0B.1C.2D.-1

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

main()

{inta=1;

charc=’a’;

floatf=2.0;

Printf("%d\n",(!(a==0),f1=0&&c==’A’));

}

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

74.设有如下三个关系表

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

A.T=RnSB.T=RUSC.T=R×SD.T=R/S

75.在软件开发中,需求分析阶段产生的主要文档是()。

A.软件需求规格说明书B.数据库说明书C.集成测试计划D.概要设计说明书

76.

定义结构体数组:

structstu

{intnum;

charnameE20];

}X[5]={1,"LI",2,"ZHAO",3,"WANG",4,"ZHANG",5,"LIU");

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

printf("%d%c",x[i].num,x[i].name[2]);

以上程序段的输出结果为()。

A.2A3N4A5UB.112A3H4IC.1A2N3A4UD.2H3A4H5I

77.以下关于return语句的叙述中正确的是()。A.一个自定义函数中可以根据不同情况设置多条return语句

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

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

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

78.

79.以下程序中,函数sort的功能是对a数组中的数据进行由大到小的排序。

voidsort(inta[],intn)

{inti,j,t;

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

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

if(a[i]<a[j])

{t=a[i];a[i]=a[j];a[j]=t;}

}

main()

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

sort(&aa[3],5);

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

printf("\n");

}

程序运行后的输出结果是

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

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

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

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

80.若有定义:inta,h;通过语句:scanf(”%d;%d”,&a,&B.;,能把整数3赋给变量a,5赋给变量b的输入数据是()。

A.35B.3,5C.3;5D.35

五、程序改错题(1题)81.给定程序中,函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符:按排列的顺序交叉合并到C所指数组中,过长的剩余字符接在C所指的数组的尾部。例如,当a.所指字符串中的内容为“abcdef9”,b所指字符串中的内容为“1234”时,c所指数组中的内容应“a4b3c2dlef9”;而当a所指字符串中的内容为“1234”,b所指字符串的内容为“abcdef9”时,c所指数组中的内容应该为“lg2f3e4dcba”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。此程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数该函数的功能是使数组下三角元素中的值乘以n。注意:部分源程序给出如下。请勿改动函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>#defineN5voidfun(inta[][N],intn){}main(){inta[N][N],n,i,j;printf(“*****Thearray*****\n”);for(i=0;i<n;i++)<p=""></n;i++)<>{for(j=0;j<=""p="">{a[i][j]=rand()%10;printf(“%4d”,a[i][j]);}printf(“\n”);}n=rand()%4;printf(“n=%4d\n”,n);fun(a,n);printf(“*****TheResult*****\n”);for(i=0;i<=""p="">{for(j=0;j<=""p="">printf(“%4d”,a[i][j]);printf(“\n”);}}

参考答案

1.B解析:x-=x+x可化为:x=x-(x+x),由于x初始值为10,所以计算后,x=10-20=-10,因此选B)。

2.B在计算机中,算法被定义为对一个问题求解步骤的一种描述,是求解问题的方法,它是指令的有限序列,其中每条指令表示一个或者多个操作。算法具有有穷性、确定性、可行性、输入和输出五大特点。

在本题中,选项A、C、D的说法明显偏离了算法的定义,因此正确答案选B。

3.D

4.D本题考查逻辑运算符的”短路”现象,由于k的值为0,表达式首先去求k++的值,因为表达式k++的值为0,系统完全可以确定逻辑表达式的运算结果总是为0,因此将跳过n++>2,不再对它进行求值,即k的值加1,n的值不变。

5.A解析:本题考核的知识点是通过指针引用数组的元素的方法.本题中首先定义了一个一维数组a并初

温馨提示

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

评论

0/150

提交评论