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.栈通常采用的两种存储结构是()。

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

2.对n个关键字的序列进行快速排序,平均情况下的空间复杂度为_______

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

3.设线性链表中结点的结构为(data,next)。若想删除结点p的直接后继,则应执行下列()操作。

A.p->next=p->next->next;

B.p=p->nextp->next=p->next->next;

C.p->next=p->next;

D.p=p->next->next;

4.有定义语句:“intx,y;”,若要通过“scanf("%d,%d,&x,&y);”语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是

A.1112<回车>B.11,12<回车>C.11,12<回车>D.11,<回车>12<回车>

5.

6.有以下程序voidf(intx,inty){intt;if(x<y){t=x;x=Y;y=t;)}main{inta=4,b=3,c=5;f(a,b);f(a,c);f(b,c);printf("%d,%d,%d\n",a,b,c);}执行后输出结果是()。A.3,4,5B.5,3,4C.5,4,3D.4,3,5

7.设有以下函数:

voidfun(intn,char*$s){……}

则下面对函数指针的定义和赋值均正确的是A.void(*pf)();pf=fun;

B.void*Pf();pf=fun;

C.void*pf();*pf=fun;

D.void(*pf)(int,char);nf=&fun;

8.函数fun的功能是在a所指的具有n个元素的数组中查找最大值并返回给调用函数,但函数不完整:intfun(int*a,intn){int*p,*s;for(p=a,s=a;p-a<=""p="">if(________)s=p;return*s;}在if语句下划线处应填入的选项是()。

A.p>sB.*p>*sC.a[p]>a[s]D.p-a>p-s

9.若有以下程序段intm=0xabc,n=0xubc;m-=n;printf("%X\n",m);执行后输出结果是

A.0X0B.0x0C.0D.0XABC

10.一个优化的程序可以生成n个元素集合的所有子集,那么该程序的时间复杂度是()

A.O(n!)B.O(nlogn)C.O(n^2)D.O(2^n)

11.对于栈操作数据的原则是()。

A.先进先出B.后进先出C.后进后出D.不分顺序

12.

13.数据管理技术发展的三个阶段中,()没有专门的软件对数据进行管理。

I.人工管理阶段

II.文件系统阶段

Ⅲ.数据库阶段A.A.仅IB.仅ⅢC.I和IID.II和Ⅲ

14.设有定义语句“int(*f)(int);”,则下列叙述中正确的是()。

A.f是基类型为int的指针变量

B.f是指向函数的指针变量,该函数具有一个int类型的形参

C.f是指向int类型一维数组的指针变量

D.f是函数名,该函数的返回值是基类型为int类型的地址

15.

16.如果有n个节点用二叉树来存储,那么二叉树的最小深度为()

A.Log2(n+1)B.Log2(n)C.Log2(n-1)D.n/2

17.第

24

下面程序段的运行结果是

char*p="abcdefgh";

p+=3;

printf("%d\n",strlen(strcpy(p,"ABCD")));

A.8B.12C.4D.7

18.已知intt=0;while(t=1){…}则以下叙述正确的是()。

A.循环控制表达式的值为0B.循环控制表达式的值为1C.循环控制表达式不合法D.以上说法都不对

19.有以下程序

#include<stdio.h>

main()

{charb,c;inti;

b=‘a’;c=‘A’;

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

{if(i%2)putchar(i+b);

elseputehar(i+c);

}printf(“\n”);

}

程序运行后的输出结果是A.ABCDEFB.AbCdEfC.aBeDeFD.abcdef

20.

二、2.填空题(20题)21.在数据的存储结构中,不仅需要存储各数据元素的信息,还要存放各元素之间______的信息。

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

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

elsei--;}

i+=11;

a+=i;

}

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

}

23.有以下程序:

voidf(inta[],inti,intj)

{intt;

if(i<j)

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

f(a,i+1,j-1);

}

}

main()

{inti,aa[5]={1,2,3,4,5};

f(aa,0,4);

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

}

执行后的输出结果是【】。

24.语句:x++;++x;x=1+x;执行后都使变量x中的值增1,请写出一条同一功能的赋值语句______。

25.设有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

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

}

程序运行后,从键盘上输入(<CR>代表回车符):DEF<CR>BADEF<CR>QTHRG<CR>,则程

序的输出结果是______。

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

main()

{charc;intn=100;

floatf=10;doublex;

x=f*=n/=(c=50);

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

}

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

#include<stdio.h>

main()

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

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

switch(i/10)

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

case10:n++;break;

default:k++;n++;

}

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

}

28.在两种基本测试方法中,()测试的原则之一是保证所测模块中每一个独立路径至少执行一次。

29.设有下列宏定义:#defineA2

#defineBA+3

则执行赋值语句;t=B*2;t为int型变量后的值是______。

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

31.以下程序运行后输入:3,abcde<回车>,则输出结果是【】。

#include<string.h>

move(char*str,intn)

{chartempinti;

temp=str[n-1);

for(i=n-1;i>0;i--)str[i]=str[i-1];

str[0]=temp

}

main()

{chars[50];ihtn,i,z;

scanf("%d,%s",&n,s);

z=strlen(s);

for(i=1;i<=n;i++)move(s,z);

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

}

32.数据管理技术发展过程经过人工管理、文件系统和数据库系统这3个阶段,其中数据独立性最高的阶段是【】。

33.若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是【】。

intb,c;floata;

scanf("%f,%d,c=%d",&a,&b,&c)

34.程序测试分为静态分析和动态测试。其中【】是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。

35.下面函数用来求出两个整数之和,并通过形参传回两数相加之和值。请填空。

intadd(intx,inty,【】,)

{【】=x+y;}

36.以下程序由终端键盘输入一个文件名,然后把从终端键盘输入的字符依次存放到该文件中,用#作为结束输入的标志,请填空。

#include<stdio.h>

main()

{FILE*fp;

charch,fname[10];

printf("Inputthenam\n");

gets(fname);

if((fp=【】==NULL)

{printf("Cannotopen\n");exit(0);}

printf("Enterdata\n");

while(ch=getchar()!='#')

fputc(【】,fp);

fclose(fp);

}

37.若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是______。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

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

unsignedfun6(unsignednum)

{unsignedk=1;

do{k*=hum%10;

num/=10;}while(num);

return(k);}

main()

{unsignedn=26;

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

39.函数fun的返回值是【】

fun(char*a,char*b)

{intnum=0,n=0;

while(*(a+num)!='\0')mm++;

while(b[n]){*(a+num)=b[n];num++;n++;}

returnnum;

}

40.数据库管理系统是位于用户与______之间的软件系统。

三、1.选择题(20题)41.数据库系统的核心是()。

A.数据模型B.数据库管理系统C.数据库D.数据库管理员

42.一个完整的C语言程序包含一个或多个函数,其中唯一不可缺少的函数是()。

A.库函数B.scanf函数C.main主函数D.printf函数

43.当说明一个结构体变量时系统分配给它的内存是()。

A.各成员所需要内存量的总和

B.结构中第一个成员所需的内存量

C.成员中占内存最大者所需的容量

D.结构中最后一个成员所需要的内存量

44.有以下程序:#include<stdio.h>main(){intx;scanf("%d",&x);if(x<=0);elseif(x!=5)printf("%d\n",x);}程序运行时,输入的值在哪个范围才会有输出结果()。

A.不等于5的整数B.大于0且不等5的整数C.大于0或等于5的整数D.小于5的整数

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

A.控制流B.加工C.数据存储D.源和潭

46.判断字符串s1是否大于字符串s2,应该使用()。

A.if(strcmp(s1,s2)<0)

B.if(s1>s2)

C.if(strcmp(s2,s1)<0)

D.if(strcmp(s1,s2))

47.标准库函数fgets(s,n,file)的功能是()。

A.从文件file中读取长度为n的字符串存入字符数组s中

B.从文件file中读取长度不超过n-1个字符的字符串放到字符数组s中

C.从文件file中读取n个字符串存入字符数组s中

D.从文件file中读取长度为n-1个字符的字符串存入字符数组s中

48.在多媒体计算机系统中,不能存储多媒体信息的是()

A.光盘B.磁盘C.磁带D.光缆

49.若有定义floata=25,b,*p=&b;,则下列对赋值语句*p=a;和p=&a;的正确解释为()。

A.两个语句都是将变量a的值赋予变量p

B.*p=a是使p指向变量a,而p=&a是将变量a的值赋予变量指针p

C.*p=a是将变量a的值赋予变量b,而p=&a是使p指向变量a

D.两个语句都是使p指向变量a

50.视图设计一般有三种设计次序,下列不属于视图设计的是()。

A.自顶向下B.由外向内C.由内向外D.自底向上

51.请选出可用作C语言用户标识符的一组()。

A.voiddefineWORD

B.a3_b3_123IF

C.For_abccase

D.2aDOsizeof

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

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

53.下列程序的输出结果是()。#include<stdio.h>intfun(intx){inta;if(x==0‖x==1)return3;elsea=x-fun(x-2);returna;}voidmain(){printf("%d",fun(7));}

A.2B.8C.9D.5

54.以下不合法的用户标识符是______。A.j2KEYB.DoubleC.4dD._8_

55.以下程序段执行后,a的值为______。int*p,a=10,b=1;p=&a;a=*p+b;

A.11B.12C.10D.编译出错

56.若变量均已正确定义并赋值,以下合法的C语言赋值语句是()。

A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:

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

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

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

C.不允许使用GOTO语句

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

58.有以下程序:main(){chark;inti;for(i=1;i<3;i++){scanf("%c",&k);switch(k){case'0':printf("another\n");case'1':printf("number\n");}}}程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是

A.anothernumber

B.anothernumberanother

C.anothernumbernumber

D.numbernumber

59.设语句inta=3;,当执行了以下语句后,变量a的值是______。a+=a-=a*a;

A.3B.0C.9D.-12

60.若有以下的说明,对初值中整数2的正确引用方式是

staticstruct

{charch;

inti;

doublex;

}a[2][3]={{{′a′,1,3,45},{′b′,2,7,98},{′c′,31,93}}};

A.a[0][1].chB.a[0][1].iC.a[0][0].iD.a[0][2].i

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

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

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

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

62.已知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);

63.以下能定义为用户标识符的是()。

A.printfB.charC._8abcD.Void

64.以下叙述中正确的是

A.自定义的函数中一定要有return语句

B.自定义的函数中不可以有多个return语句

C.自定义的函数中可以没有return语句,此时函数应被定义为void类型

D.函数的return语句一定要带有表达式

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

A)C程序中的#include和#define行均是C语句,只是语法不同

B)除赋值运算符外,逗号运算符的优先级最低

C)C程序中,j++;是赋值语句

D)C程序中,+、-、*、/、%号是算数运算符,可用于整型和实型数的运算

66.有以下程序:

#include<stdio.h>

intf(intx):

main

{intn=1,m;

m=f(f(f(n)));printf("%d\n",m);

}

intf(intx)

{returnx*2;)

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

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

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

68.

69.

70.有以下程序:

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

A.1,0,7,0,B.1,2,3,4,C.1,4,5,9,D.3,4,8,10,

71.有以下程序:

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

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

72.

73.有以下程序:

#include<stdio.h>

main()

{chara[20],b[20],c[20];

scanf("%s%s",a,b);

gets(c);

printf("%S%S%s\n",a,b,c);

}

程序运行时从第一列开始输入:

Thisisacat!<回车>

则输出结果是()。

A.Thisisacat!

B.Thisisa

C.Thisisacat!

D.Thisisacat!

74.设变量已正确定义并赋值,以下正确的表达式是()。

A.X=Y+z+5,++YB.int(15.8%5)C.X=Y*5=X+ZD.X=25%5.0

75.若要求从键盘读入含有空格字符的字符串,应使用函数

76.有以下语句:Charb[B];intC;,则正确的输入语句是()。

A.

B.

C.

D.

77.

78.下列程序执行后的输出结果是()#defineMA(x)x*(x-1)main(){inta=1,b=2;printf("%d\n",MA(1+a+B));}

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

79.某系统总体结构图如下图所示:

该系统总体结构图的深度是()。

A.7B.6C.3D.2

80.有以下程序:

i

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

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

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如变量num1中的值原为2,num2中的值原为1,程序运行后,num1中的值为l,num2中的值为2。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数proc(),该函数的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.A解析:和线性表类似,栈也有两种存储方法,一是顺序栈,二是链式栈。栈的顺序存储结构是利用一组地址连续的存储单元一次存储自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素的位置,由于栈的操作是线性表操作的特例,相对而言,链式栈的操作更易于实现。注意:这3种运算方法在各种存储结构中的应用。

2.D

3.A

4.A解析:本题考核的知识点是scanf()函数的运用。seanf()函数有两个参数,第一个参数为输入格式字符串,第二个参数为输入变量地址列表,在scallf()语句中非格式字符可以作为输入时数据的间隔,输入时必须原样输入,在本题中输入格式串为%d,%d其中“,”为非格式字符,所以输入时必须原样输入。所以4个选项中选项A符合题意。

5.A

6.Da、b、C都是按值传递给函数f,函数f不能改变它们的值。所以,a、b、t的值仍然是4、3、5。

7.A解析:函数指针的定义形式是:数据类型标识符(*指针变量名)()。void(*pf)()定义了一个没有返回值的函数指针pf,在给函数指针变量赋值时,只需给出函数名而不必给出参数。所以给pf赋值时,只把函数名fun赋给pf即可。所以正确答案为选项A)。

8.B函数fun的功能是在a所指的具有n个元素的数组中查找最大值并返回。通过for循环比较,s始终指向最大值的那个元素。取指针的值,使用*P,因此比较使用*P和*s,又因为找最大值,当*s<*p时,修改指针s的指向。故本题答案为B选项。

9.C解析:C语言中的自反赋值运算符。“m-=n”相当于“m=m-n”,两个相等的数相减,其值为0。

10.D

11.B

12.B

13.A数据管理技术发展的兰个阶段中,只有人工管理阶段,没有操作系统,没有管理数据的软件,数据处理方式是批处理。在文件系统阶段,操作系统中已经有了专门数据管理软件,一般称为文件系统。在数据库系统阶段,出现了统一管理数据的专门软件系统,即数据库管理系统。

14.B此定义语句“int(*f)(int);”为指向函数的指针变量的定义方法,其中f为指向函数的指针变量,第1个int为函数返回值类型,第2个int为函数的形参类型。故本题答案为B选项。

15.D

16.A

17.C在本题中,程序段首先定义了字符型指针变量p,并使其指向一个字符串,然后将指针变量p加3,即使其指向字符串的第四个元素。然后执行输出语句,通过输出语句的输出格式我们可以知道,最后输出的是一个十进制数的整型数值,其输出列表为strlen(strcpy(P,″ABCD″))。这就要求我们了解strlen函数和strcpy函数的作用。

strcpy的调用格式是:strcpy(目的地址,源地址),其功能是把源地址的字符串复制到目的地址中,这种复制将覆盖原来的字符串。strcat函数的功能是将源地址的字符串复制到目的地址字符串的后面。

strlen的调用格式是:strlen(字符串地址),其功能是返回字符串中字符的个数。

那么程序中执行strcpy(P,″ABCD″)后指针变量p所指向的字符串为“ABCD”,该字符串中字符的个数为4,那么执行strlen后,程序最终输出的结果是4。因此本题正确的答案是C。

18.B解析:t=1是将t赋值为1,所以循环控制表达式的值为1。判断t是否等于1时,应用t==1,注意“=”与“==”的用法。

19.B解析:变量b和c中分别存放字符a和A的ASCII码,当i的值对2求余非零时输出ASCII码为i+b)的字符;当i的值对2求余为零时输出ASCII码为i+c的字符。分析程序可知本题选B。

20.C

21.前后件关系前后件关系解析:在数据存储结构中,除了要存储数据,还要存储数据的前后件关系,对于顺序存储的数据结构,前后件之间的关系,是通过存储空间的位置来实现的,而对于链式存储来说,数据元素之间的前后件关系是通过指针来实现的。

22.3232解析:while(表达式)的功能是:首先计算表达式的值.若为真,则执行循环体语句,执行完毕,再计算表达式的值.若仍为真,则重复执行循环体语句,直到表达式的值为假,结束while语句的执行,继续执行while语句后面的语句;i=0时满足循环条件,也满足if的条件,执行语句得i=11,a=11,第2次循环不满足if的条件,执行i--,i=10,执行i+=11;a+=i后,得i=21,a=32,不满足i<20,循环结束。

23.154321,5,4,3,2解析:第一次调用函数f后aa[0]=5、aa[4]=1;第二次调用函数f后aa[1]=4、aa[4]=2;第三次调用函数f后aa[3]=3。正确答案为1,5,4,3,2。

24.x+=1x+=1解析:本题考查“++”,“--”运算符。“++”、“--”只能作用于变量,不能用于表达式或常量;前缀形式是在使用变量之前先将其值增1或减1,后缀形式是先使用变量原来的值,使用完后再使其增1或减1。

25.QTHRGQTHRG解析:函数strcmp(t,s)用来比较t和s所指字符串的大小,若t>s,则函数值大于0;若t=s,则函数值等于0:若t<s,则函数值小于0。函数strcpy(t,s)的功能是,把字符数组s所指字符串的内容复制到字符数组t所指存储空间中。本题中,t[10]='CDEF'。第一次循环,s[10]='BADEF',if语句的控制条件strcmp(t,s)<0不成立,接着执行第二次循环,s='QTHRG',if语句的控制条件strcmp(t,s)<0成立,执行下列的语句,将字符数组s所指字符串的内容复制到字符数组t所指存储空间中,然后输出字符数组t。

26.220.000000220.000000解析:注意区分运算符的优先级。先是给c赋值,然后计算x=f*=n/=50,得x=f*=2,最后有x=20。x输出是按浮点数的形式输出的,小数点后的0不能少。

27.132132解析:在程序中,i从9开始循环,当i=9时,执行case0后的语句m++;n++;此时m=1,n=1,然后执行break,跳出循环;当i=10时,执行detault后的语句k++;n++;此时k=1,n=2;当i=11时,再执行default后的语句,k=2,n=3。此时,m=1,n=3,k=2。输出结果为132。

28.白盒白盒解析:按功能划分测试可分为白盒测试和黑盒测试。白盒测试的原则是保证所测试模块中每一独立路径至少执行一次;保证所测试模块所有判断的每一分支至少执行一次:保证所测试模块每一循环都在边界条件和一般条件下至少各执行一次;验证所有内部数据结构的有效性。

29.88解析:本题考查带参数的宏定义及相关运算.运算过程为:t=B*2=A+3*2=2+3*2=8。

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

31.cdeabcdeab解析:本题中函数move的实参到形参是按地址传递,故形参的改变会影响实参。根据题目可知在main函数中,n=3、s[0]=\'a\'、s[1]=\'b\'、s[2]=\'c\'、s[3]=\'d\'、s[4]=\'e\',数组元素s[5]~s[49]全部为\'\\0\',故z=strlen(s)=5。

第1次调用函数move时,形参str='abcd'、n=5,执行完函数move后str[4]=str[3]=\'d\'、str[3]=str[2]=\'c\'、str[2]=str[1]=\'b\'、str[1]=str[0]=\'a\'、str[0]=str[4]=\'e\'。即s[0]=\'e\'、s[1]=\'a\'s[2]、s[2]=\'b\'、s[3]=\'c\'、s[4]=\'d\'。

第2次调用函数move时,形参str='eabcd、n=5,执行完函数move后str[4]=str[3]=\'c\'、str[3]=str[2]=\'b\'、str[2]=str[1]=\'a\'、str[1]=str[0]=\'e\'、str[0]=str[4]=\'d\'。即s[0]=\'d\'、s[1]c\'e\'、s[2]=\'a\'、s[3]=\'b\'、s[4]=\'c\'。

第3次调用函数move时,形参str='deabc'、n=5,执行完函数move后str[4]=str[3]=\'b\'、str[3]=str[2]=\'a\'、str[2]=str[1]=\'e\'、str[1]=str[0]=\'d\'、str[0]=str[4]=\'c\'。即s[0]=\'c\'、s[1]=\'d\'、s[2]=\'e\'、s[3]=\'a\'、s[4]=\'b\'。

所以printf函数的输出结果为:cdeab。

32.数据库系统数据库系统解析:在数据库系统管理阶段,通过系统提供的映像功能,数据具有两方面的独立性:一是物理独立性,二是逻辑独立性。数据独立性最高的阶段是数据库系统阶段;

33.5.04c=35.0,4,c=3解析:scanf(掐式控制,地址列表),如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时应输入与这些字符相同的字符。所以此题中输入数据的形式是5.04,c=3。

34.静态分析静态分析解析:程序测试分为静态分析和动态测试。其中,静态分析是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。

35.int*p*p或p[0]int*p\r\n*p或p[0]

36.fopen(fname"w")chfopen(fname,'w')\r\nch解析:数组fname用来存放终端输入的一个文件的文件名;文件使用方式'w'是为写而打开文本文件。若文件不存在,系统将用在fopen调用中以指定的文件名建立一个新文件;若存在,则覆盖原有内容;fputs(ch,fp)的功能是将字符ch写到文件指针fp所指的文件中去。

37.*(p+5)或p[5]*(p+5)或p[5]

38.1212解析:do…while循环的一个比较显著的特点是:先执行一次循环体然后再判断循环的条件是否满足,若满足则接着进入下一次循环,否则就退出循环。注意:3种循环结构的比较。

39.字符串a和b的长度之和字符串a和b的长度之和解析:本题首先通过第一个while循环计算字符串a的长度,再通过第二个循环,将字符串a和b相连,最后返回连接后的总长度。

40.操作系统操作系统解析:数据库管理系统是帮助用户创建和管理数据库的应用程序的集合。因此,数据库管理系统需要操作系统的支持,为用户提供服务。

41.B解析:数据库管理系统是数据库系统的核心,是负责数据库的建立、使用和维护的软件。数据库管理系统建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过数据库管理系统。另外,数据库管理系统还承担着数据库的安全保护工作,按照数据库管理员所规定的要求,保证数据库的完整性和安全性。

42.C解析:一个完整的C程序有且仅有一个主函数(main()函数),主函数可以调用其他各种函数,但其他函数不能调用主函数,C程序从主函数开始执行,并在主函数中结束整个程序的运行。故选项C正确。

43.A解析:本题主要考查结构体的内存使用:对结构体而言,结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立。

44.B解析:题目中,虽然else和第二个if不在同一行上,但等价于在同一行上,因此,程序的意思是当x大于0且不等于5时将其打印出来。

45.A解析:数据流图包括4个方面,即加工(转换)(输入数据经加工变换产生输出)、数据流(沿箭头方向传送数据的通道,一般在旁边标注数据流名)、存储文件(数据源)(表示处理过程中存放各种数据的文件)、源和潭(表示系统和环境的接口,属系统之外的实体)。不包括选项中的控制流。

46.C解析:本题考查字符串比较函数strcmp()。调用形式:strcmp(s1,s2),其中s1、s2分别是字符串存储区的首地址。函数功能:比较字符串str1和str2,当str1<str2时,返回值为负数;当str1=str2时,返回0;当str1>str2,返回值为正数(注意:不能使用关系运算符比较两个字符串的大小)。

47.B解析:字符串输入函数fgets()的调用形式为:fgets(s,n,fp)。fgets函数参数说明:“s”可以是一个字符数组名,也可以是指向字符串的指针;“n”为要读取的最多的字符个数;“fp”是指向该文件的文件型指针。fgets函数的功能是:从fp所指向的文件中读取长度不超过n-1个字符的字符串,并将该字符串放到字符数组s中;读入字符串后会自动在字符串末尾加入“'\\0'”结束符,表示字符串结束。

48.D解析:光缆是多媒体信息的传输通道,不能存储多媒体信息。

49.C解析:“p”是指针变量,指向一个地址:“*p”,为p指针所指向地址的内容。

50.B解析:视图设计一般有三种设计次序,它们分别是自顶向下、自底向上和由内向外,可以单独使用也可混合使用。

51.B解析:C语言规定,标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。A)中的void与C语言的关键字重名,不合法;C)中的case和C语言的关键字重名,不合法;D)中的2a是数字开头,而且sizeof与C语言的关键字重名,不合法。

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

53.A解析:本题考查函数的递归调用。

在函数递归调用时,fun(7):a=7-fun(5)→fun(5):a=5-fun(3)→fun3:a=3-fun(1)→fun(1):a=3,反推回去fun(3):a=3-3=0→fun(5):a=5-0=5→fun(7):a=7-5=2,最后的计算结果为2。

54.C解析:C语言规定标识符只能由字母、数字和下划线三种符号组成,而且第—个字符必须是字母或下划线。大写字母和小写字母被认为是两个不同的字符,用户在定义标识符时应做到“见名知意”,且不允许使用关键字作标识符。

55.A解析:p是指向整型变量的整型指针,并赋值为指向a,*p表示指针p所指向单元的内容,即为a,等于10,a=*p+b=10+1=11。

56.AB选项中运算符“%”的运算对象为整数。C选项中不能将变量赋给表达式“x+n”。D选项中不能将表达式“4+1”赋给常量5。故本题答案为A选项。

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

58.C解析:switch语句的执行过程是:在switch后面的表达式的值和case后面常量表达式的值吻合时,就执行后面的语句.如果在该语句的后面没有break语句,则继续执行下一个case,直到遇到break语句或switch多分支的结束,在switch语句中,break语句的作用是使流程跳出switch结构,终止Switch语句的执行.本题中在for循环中嵌套了swish语句,每循环一次通过scanf()函数从键盘上输入一个k值,然后执行switch语句。for循环共循环了2次,当i=1时,从键盘上输入0,使得k的值为0,执行switch语句中case:0后面的语句,输出another,接着执行case:0下面的语句输出number,退出switch语句,当i=2时,从键盘上输入1,使得k的值为1,执行switch语句中case1后面的语句,输出number,退出switch语句.当i=3时退出循环.故最后的输出为another、number和number,所以,4个选项中选项C符合题意。

59.B

60.B解析:考查结构体数组对结构体成员的引用。结构体数组中对结构体成员的引用要先引用到数组元素,然后像对待普通的结构体变量一样来对待结构体数组元素。

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

62.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输出实数。

63.B用户自定义标识符不能与关键字相同。但可以与库函数名相同,只是一般不建议用户这么做。

64.C本题考查自定义函数的类型。函数执行过程中通过return语句返回的值的类型称为该函数的类型。当一个函数不需要通过return语句返回一个值时,称为无返回值函数或无类型函数,此时需要使用保留字void作为类型名。对于类型为非void的函数,函数体中至少必须带有一条return语句,并且每条return语句必须带有一个表达式,当执行到任一条return语句时,将计算出它的表达式的值,结束整个函数的调用过程,把这个值作为所求的函数值带回到调用位置,参与相应的运算。对于类型为void的函数,它不需要返回任何函数值,所以,在函数体中既可以使用return语句,也可以不使用,对于使用的每条return语句不允许也不需要带有表达式,当执行到任一条return语句时,或执行到函数体最后结束的位置时,将结束函数的调用过程,返回到调用位置向下继续执行。

65.C#define行为非C语句,所以没有“;”号,%的运算对象只能为整型,逗号运算符的优先级最低。

66.D本题考查函数返回值作参数,最初n=1,f(n)=f(1)=2,将f(n)的结果代入第二个f(n)中,即f(f(n))=f(2)=4,所以f(f(f(f(n))))=f(4)=8。

67.A涵数返回的结构体为在涵数里赋值的结构体,所以选择A)。

68.D

69.C

70.A该程序首先在定义变量时,对二维数组a[][N]进行赋值操作;调用函数fun,函数fun的功能是将二维数组中的a[0儿0]、a[1][1]、a[2][2]和a[3][3]赋值给一维数组,最后将一维数组元素l,0,7,0,输出。

71.C字符数组的元素数量在定义时已经确定,与其存储的内容无关,本题中语句chara[7]定义了由7个字符元素组成的字符数组,其sizeof(a)=7。字符数组常常存储字符串,但其存储的字符串长度与数组长度没有直接关联。c语言规定,字符串从首字符开始,以第一个值为ASCIl码0的字符结尾,其中的非0字符数量就是字符串的长度。在本题

72.D

73.D答案为D,空格表示结束,则c里面的内容为'acat!',前面没有空格。

74.A?B)与D)选项中取模运算符%的左右两个操作数均应为整数,所以B)、D)错误。C)选项中不能将x+z的值赋给表达式y*5,所以C)错误。

75.A本题考查的知识点是输入函数。C语言提供了许多输入函数,其中有:getChar(输入字符)、sCanf(格式输入)和gets(输入字符串)等。题目要求输入的是字符串,所以可以排除getChar,而且要求输入的字符串中包含空格,而sCanf函数默认将输入的空格字符作为分隔符,所以空格不会被输入,故可排除sCanf。gdtCl的作用是从文件中输入一个字符,故也不可取。getsi函数可以输入一整行作为一个字符串,其中也包括空格字符,故应该选择A)。

76.Dscanf函数常用的格式控制中”s”代表输入的是字符串,”d”代表输入带符号的十进制整型数,根据语句charb[8];intc;可确定正确的输入语句是D)选项。

77.B

78.D解析:本题中的宏调用MA(1+a+b)展开后的结果是1+a+b*(1+a+b-1)=1+1+2*(1+1+2-1)=2+2*3=8。所以输出的结果是8,选项D正确。

79.C根据总体结构图可以看出该树的深度为3,比如:XY系统——功能2——功能2.1,就是最深的度数的一个表现。

80.C本题考查结构体数组的相关操作,dt为结构体数组,那么指针P指向了结构体数组的一个元素,所以P一>x为1,P一>Y为2,结果为2,3。选项C正确。

81.(1)错误:t=x;x=y;

正确:t=*x;*x=y;

(2)错误:return(y);

正确:return(t);

【解析】由函数proc()可知,变量x为整型指针,而变量t为整型变量.不能直接赋值。因此,“t=x;x=y;”应改为“t=*x;*x=y;”。题目要求实现两个数的交换,因此函数proc()应返回变量X的值,变量x的值存放在变量t中。因此,“return(y);”应改为“return(t);”。

82.

【解析】要得到成绩高于等于平均分的学生数据,首先要得到所有学生的平均分,然后把每个学生的成绩与平均分相比较。把符合条件的学生数据放在数组b中,学生个数通过形参中的指针变量返回,平均分数由函数值返回。

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

一、单选题(20题)1.栈通常采用的两种存储结构是()。

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

2.对n个关键字的序列进行快速排序,平均情况下的空间复杂度为_______

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

3.设线性链表中结点的结构为(data,next)。若想删除结点p的直接后继,则应执行下列()操作。

A.p->next=p->next->next;

B.p=p->nextp->next=p->next->next;

C.p->next=p->next;

D.p=p->next->next;

4.有定义语句:“intx,y;”,若要通过“scanf("%d,%d,&x,&y);”语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是

A.1112<回车>B.11,12<回车>C.11,12<回车>D.11,<回车>12<回车>

5.

6.有以下程序voidf(intx,inty){intt;if(x<y){t=x;x=Y;y=t;)}main{inta=4,b=3,c=5;f(a,b);f(a,c);f(b,c);printf("%d,%d,%d\n",a,b,c);}执行后输出结果是()。A.3,4,5B.5,3,4C.5,4,3D.4,3,5

7.设有以下函数:

voidfun(intn,char*$s){……}

则下面对函数指针的定义和赋值均正确的是A.void(*pf)();pf=fun;

B.void*Pf();pf=fun;

C.void*pf();*pf=fun;

D.void(*pf)(int,char);nf=&fun;

8.函数fun的功能是在a所指的具有n个元素的数组中查找最大值并返回给调用函数,但函数不完整:intfun(int*a,intn){int*p,*s;for(p=a,s=a;p-a<=""p="">if(________)s=p;return*s;}在if语句下划线处应填入的选项是()。

A.p>sB.*p>*sC.a[p]>a[s]D.p-a>p-s

9.若有以下程序段intm=0xabc,n=0xubc;m-=n;printf("%X\n",m);执行后输出结果是

A.0X0B.0x0C.0D.0XABC

10.一个优化的程序可以生成n个元素集合的所有子集,那么该程序的时间复杂度是()

A.O(n!)B.O(nlogn)C.O(n^2)D.O(2^n)

11.对于栈操作数据的原则是()。

A.先进先出B.后进先出C.后进后出D.不分顺序

12.

13.数据管理技术发展的三个阶段中,()没有专门的软件对数据进行管理。

I.人工管理阶段

II.文件系统阶段

Ⅲ.数据库阶段A.A.仅IB.仅ⅢC.I和IID.II和Ⅲ

14.设有定义语句“int(*f)(int);”,则下列叙述中正确的是()。

A.f是基类型为int的指针变量

B.f是指向函数的指针变量,该函数具有一个int类型的形参

C.f是指向int类型一维数组的指针变量

D.f是函数名,该函数的返回值是基类型为int类型的地址

15.

16.如果有n个节点用二叉树来存储,那么二叉树的最小深度为()

A.Log2(n+1)B.Log2(n)C.Log2(n-1)D.n/2

17.第

24

下面程序段的运行结果是

char*p="abcdefgh";

p+=3;

printf("%d\n",strlen(strcpy(p,"ABCD")));

A.8B.12C.4D.7

18.已知intt=0;while(t=1){…}则以下叙述正确的是()。

A.循环控制表达式的值为0B.循环控制表达式的值为1C.循环控制表达式不合法D.以上说法都不对

19.有以下程序

#include<stdio.h>

main()

{charb,c;inti;

b=‘a’;c=‘A’;

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

{if(i%2)putchar(i+b);

elseputehar(i+c);

}printf(“\n”);

}

程序运行后的输出结果是A.ABCDEFB.AbCdEfC.aBeDeFD.abcdef

20.

二、2.填空题(20题)21.在数据的存储结构中,不仅需要存储各数据元素的信息,还要存放各元素之间______的信息。

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

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

elsei--;}

i+=11;

a+=i;

}

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

}

23.有以下程序:

voidf(inta[],inti,intj)

{intt;

if(i<j)

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

f(a,i+1,j-1);

}

}

main()

{inti,aa[5]={1,2,3,4,5};

f(aa,0,4);

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

}

执行后的输出结果是【】。

24.语句:x++;++x;x=1+x;执行后都使变量x中的值增1,请写出一条同一功能的赋值语句______。

25.设有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

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

}

程序运行后,从键盘上输入(<CR>代表回车符):DEF<CR>BADEF<CR>QTHRG<CR>,则程

序的输出结果是______。

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

main()

{charc;intn=100;

floatf=10;doublex;

x=f*=n/=(c=50);

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

}

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

#include<stdio.h>

main()

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

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

switch(i/10)

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

case10:n++;break;

default:k++;n++;

}

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

}

28.在两种基本测试方法中,()测试的原则之一是保证所测模块中每一个独立路径至少执行一次。

29.设有下列宏定义:#defineA2

#defineBA+3

则执行赋值语句;t=B*2;t为int型变量后的值是______。

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

31.以下程序运行后输入:3,abcde<回车>,则输出结果是【】。

#include<string.h>

move(char*str,intn)

{chartempinti;

temp=str[n-1);

for(i=n-1;i>0;i--)str[i]=str[i-1];

str[0]=temp

}

main()

{chars[50];ihtn,i,z;

scanf("%d,%s",&n,s);

z=strlen(s);

for(i=1;i<=n;i++)move(s,z);

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

}

32.数据管理技术发展过程经过人工管理、文件系统和数据库系统这3个阶段,其中数据独立性最高的阶段是【】。

33.若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是【】。

intb,c;floata;

scanf("%f,%d,c=%d",&a,&b,&c)

34.程序测试分为静态分析和动态测试。其中【】是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。

35.下面函数用来求出两个整数之和,并通过形参传回两数相加之和值。请填空。

intadd(intx,inty,【】,)

{【】=x+y;}

36.以下程序由终端键盘输入一个文件名,然后把从终端键盘输入的字符依次存放到该文件中,用#作为结束输入的标志,请填空。

#include<stdio.h>

main()

{FILE*fp;

charch,fname[10];

printf("Inputthenam\n");

gets(fname);

if((fp=【】==NULL)

{printf("Cannotopen\n");exit(0);}

printf("Enterdata\n");

while(ch=getchar()!='#')

fputc(【】,fp);

fclose(fp);

}

37.若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是______。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

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

unsignedfun6(unsignednum)

{unsignedk=1;

do{k*=hum%10;

num/=10;}while(num);

return(k);}

main()

{unsignedn=26;

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

39.函数fun的返回值是【】

fun(char*a,char*b)

{intnum=0,n=0;

while(*(a+num)!='\0')mm++;

while(b[n]){*(a+num)=b[n];num++;n++;}

returnnum;

}

40.数据库管理系统是位于用户与______之间的软件系统。

三、1.选择题(20题)41.数据库系统的核心是()。

A.数据模型B.数据库管理系统C.数据库D.数据库管理员

42.一个完整的C语言程序包含一个或多个函数,其中唯一不可缺少的函数是()。

A.库函数B.scanf函数C.main主函数D.printf函数

43.当说明一个结构体变量时系统分配给它的内存是()。

A.各成员所需要内存量的总和

B.结构中第一个成员所需的内存量

C.成员中占内存最大者所需的容量

D.结构中最后一个成员所需要的内存量

44.有以下程序:#include<stdio.h>main(){intx;scanf("%d",&x);if(x<=0);elseif(x!=5)printf("%d\n",x);}程序运行时,输入的值在哪个范围才会有输出结果()。

A.不等于5的整数B.大于0且不等5的整数C.大于0或等于5的整数D.小于5的整数

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

A.控制流B.加工C.数据存储D.源和潭

46.判断字符串s1是否大于字符串s2,应该使用()。

A.if(strcmp(s1,s2)<0)

B.if(s1>s2)

C.if(strcmp(s2,s1)<0)

D.if(strcmp(s1,s2))

47.标准库函数fgets(s,n,file)的功能是()。

A.从文件file中读取长度为n的字符串存入字符数组s中

B.从文件file中读取长度不超过n-1个字符的字符串放到字符数组s中

C.从文件file中读取n个字符串存入字符数组s中

D.从文件file中读取长度为n-1个字符的字符串存入字符数组s中

48.在多媒体计算机系统中,不能存储多媒体信息的是()

A.光盘B.磁盘C.磁带D.光缆

49.若有定义floata=25,b,*p=&b;,则下列对赋值语句*p=a;和p=&a;的正确解释为()。

A.两个语句都是将变量a的值赋予变量p

B.*p=a是使p指向变量a,而p=&a是将变量a的值赋予变量指针p

C.*p=a是将变量a的值赋予变量b,而p=&a是使p指向变量a

D.两个语句都是使p指向变量a

50.视图设计一般有三种设计次序,下列不属于视图设计的是()。

A.自顶向下B.由外向内C.由内向外D.自底向上

51.请选出可用作C语言用户标识符的一组()。

A.voiddefineWORD

B.a3_b3_123IF

C.For_abccase

D.2aDOsizeof

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

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

53.下列程序的输出结果是()。#include<stdio.h>intfun(intx){inta;if(x==0‖x==1)return3;elsea=x-fun(x-2);returna;}voidmain(){printf("%d",fun(7));}

A.2B.8C.9D.5

54.以下不合法的用户标识符是______。A.j2KEYB.DoubleC.4dD._8_

55.以下程序段执行后,a的值为______。int*p,a=10,b=1;p=&a;a=*p+b;

A.11B.12C.10D.编译出错

56.若变量均已正确定义并赋值,以下合法的C语言赋值语句是()。

A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:

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

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

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

C.不允许使用GOTO语句

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

58.有以下程序:main(){chark;inti;for(i=1;i<3;i++){scanf("%c",&k);switch(k){case'0':printf("another\n");case'1':printf("number\n");}}}程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是

A.anothernumber

B.anothernumberanother

C.anothernumbernumber

D.numbernumber

59.设语句inta=3;,当执行了以下语句后,变量a的值是______。a+=a-=a*a;

A.3B.0C.9D.-12

60.若有以下的说明,对初值中整数2的正确引用方式是

staticstruct

{charch;

inti;

doublex;

}a[2][3]={{{′a′,1,3,45},{′b′,2,7,98},{′c′,31,93}}};

A.a[0][1].chB.a[0][1].iC.a[0][0].iD.a[0][2].i

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

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

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

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

62.已知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);

63.以下能定义为用户标识符的是()。

A.printfB.charC._8abcD.Void

64.以下叙述中正确的是

A.自定义的函数中一定要有return语句

B.自定义的函数中不可以有多个return语句

C.自定义的函数中可以没有return语句,此时函数应被定义为void类型

D.函数的return语句一定要带有表达式

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

A)C程序中的#include和#define行均是C语句,只是语法不同

B)除赋值运算符外,逗号运算符的优先级最低

C)C程序中,j++;是赋值语句

D)C程序中,+、-、*、/、%号是算数运算符,可用于整型和实型数的运算

66.有以下程序:

#include<stdio.h>

intf(intx):

main

{intn=1,m;

m=f(f(f(n)));printf("%d\n",m);

}

intf(intx)

{returnx*2;)

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

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

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

68.

69.

70.有以下程序:

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

A.1,0,7,0,B.1,2,3,4,C.1,4,5,9,D.3,4,8,10,

71.有以下程序:

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

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

72.

73.有以下程序:

#include<stdio.h>

main()

{chara[20],b[20],c[20];

scanf("%s%s",a,b);

gets(c);

printf("%S%S%s\n",a,b,c);

}

程序运行时从第一列开始输入:

Thisisacat!<回车>

则输出结果是()。

A.Thisisacat!

B.Thisisa

C.Thisisacat!

D.Thisisacat!

74.设变量已正确定义并赋值,以下正确的表达式是()。

A.X=Y+z+5,++YB.int(15.8%5)C.X=Y*5=X+ZD.X=25%5.0

75.若要求从键盘读入含有空格字符的字符串,应使用函数

76.有以下语句:Charb[B];intC;,则正确的输入语句是()。

A.

B.

C.

D.

77.

78.下列程序执行后的输出结果是()#defineMA(x)x*(x-1)main(){inta=1,b=2;printf("%d\n",MA(1+a+B));}

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

79.某系统总体结构图如下图所示:

该系统总体结构图的深度是()。

A.7B.6C.3D.2

80.有以下程序:

i

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

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

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如变量num1中的值原为2,num2中的值原为1,程序运行后,num1中的值为l,num2中的值为2。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数proc(),该函数的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.A解析:和线性表类似,栈也有两种存储方法,一是顺序栈,二是链式栈。栈的顺序存储结构是利用一组地址连续的存储单元一次存储自栈

温馨提示

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

评论

0/150

提交评论