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

下载本文档

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

文档简介

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

一、单选题(20题)1.有以下程序:#include<stdio.h>main(){unsignedchara=8,C;C=a>>3:printf("%d\n",c);}程序运行后的输出结果是()。A.32B.16C.1D.0

2.连通图G中有n个顶点,G的生成树是()连通子图。

A.包含G的所有顶点B.包含G的所有边C.不包含G的所有顶点D.包含G的所有顶点和所有边

3.程序中对fun函数有如下说明

void*fun();

此说明的含义是:A.fun了数无返回值

B.fun函数的返回值可以是任意的数据类型

C.fun函数的返回值是无值型的指针类型

D.指针fun指向一个函数,该函数无返回值

4.已知广义表的表头为A,表尾为(B,C),则此广义表为________

A.(A,(B,C))B.(A,B,C)C.(A,B,C)D.((A,B,C))

5.

6.算法的空间复杂度是指()。

A.算法在执行过程中所需要的计算机存储空间

B.算法所处理的数据量

C.算法程序中的语句或指令条数

D.算法在执行过程中所需要的临时工作单元数

7.有下列程序:程序执行后的输出结果是()。A.2,3,1,2B.9,9,2,9C.8,10,2,8D.9,9,1,9

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

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

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

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

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

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

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

10.若有定义“doublea=22;inti=0,k=18;”,则不符合C语言规定的赋值语句是()。

A.i=(a+k)<=(i+k);B.i=a%11;C.a=a++,i++;D.i=!a;

11.以下选项中与“if(a==l)a=b;elsea++;”语句功能不同的switch语句是()。

A.switch(a){casel:a=b;break;default:a++;}

B.switch(a==l){case0:a=b;break;casel:a++;}

C.switch(a){default:a++;break;casel:a=b;}

D.switch(a==l){casel:a=b;break;case0:a++;}

12.有以下程序:#include<stdio.h>main{intx=4,y;do{y=x;if(!y)printf(“x”);elseprintf(“y”):x--;}while(x);}程序的输出结果是()。A.xyyxB.yyyyC.yyxxD.yxyx

13.下列不属于C语言关键字的是()。A.A.default

B.register

C.enum

D.external

14.若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是()。

A.#definen5inta[2*n];

B.intn=10,a[n];

C.inta[5+5];

D.#defineN10inta[N];

15.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是()。

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

16.有以下程序段:intx=3;do{printf("%d",x-=2);)while(!(--x));其输出结果是()。A.1B.30C.1-2D.死循环

17.若有以下程序:inta=1,b=2;a=a^b;b=b^a;则执行以上语句后a和b的值分别是()。A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2,b=l

18.

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

A.改变函数形参的值,不会改变对应实参的值

B.函数可以返回地址值

C.可以给指针变量赋一个整数作为地址值

D.当在程序的开头包含文件stdi0.h时,可以给指针变量赋NULL

20.

二、2.填空题(20题)21.函数sstrcmp的功能是对两个字符串进行比较。当s所指字符串和t所指字符串相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp)。请填空。

#include<stdio.h>

intsstrcmp(char*s,char*t)

{while(*s&&*t&&*s==【】)

{s++;t++;}

return【】;

}

22.下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

23.下列程序执行后输出的结果是【】。

f(inta)

{staticc=0;

c=a+c++;

return(c);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

24.下列程序可以判断输入的年份是不是闰年。

#include

main()

{int【】,leap;

scanf("%d",&year);

if(year%4)

leap=0;

elseif(year%lO0)

【】;

elseif(year%400)

leap=0;

else

leap=1;

if(【】)

printf("%d年是闰年",year);

else

printf("%d年不是闰年\n",year);

}

25.算法的复杂度主要包括【】复杂度和空间复杂度。

26.已知字符A的ASCⅡ代码值为65,以下程序运行时若从键盘输入:B33<回车>.则输出结果是()。

#include

main()

{chara,b;

a=getchar();scanf("%d",&B);

a=a-'A'+'0';b=b*2;

printf("%c%c\n",a,B);

}

27.有以下程序:

main()

{intn=0,m=1,x=2;

if(!n)x-=1;

if(m)x-=2;

if(x)x-=3;

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

}

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

28.用以下程序计算1到100的整数的累加和。请填空。

main()

{inti,sum=【】;

i=1;

for(【】)

{sum+=j

i++;

}

printf("sum=%d\n",【】);

}

29.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。请填空。

main()

{inti,a[20],sum,count;

sum=count=0;

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

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

{if(a[i]>0)

{count++;

sum+=a[i];

}

}

printf("sum=%d,count=%d\n",sum,count);

}

30.数据库系统的主要特点为数据集成性、数据的高______和低冗余性、数据独立性和数据统一管理和控制。

31.若有定义inta=10,b=9,c=8;,接着顺序执行下列语句,变量b中的值是【】。

c=(a-=(b-5));

c=(a%11)+(b=3);

32.关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、______和自定义完整性。

33.数据库系统的三级模式分别为______模式、内部级模式与外部级模式。

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

intn='c';

switch(n++)

{default:printf("error");break;

case'a':printf("good");break;

case'c':printf("morning");

case'd':printf("class");

}

35.数据库系统中实现各种数据管理功能的核心软件称为【】。

36.阅读下面语句,则程序的执行结果是【】。

#include"stdio.h"

main()

{inta=-1,b=1,k;

if((++a<0)&&!(b--<=0))

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

elseprintf("%d,%d\n",b,a);}

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

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

voidfun(int*x,int*y)

{……}

main()

{inta=10,b=20;

【】:

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

……

}

39.栈中允许进行插入和删除的一端叫做______。

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

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

三、1.选择题(20题)41.以下的for循环______。for(x=0,y=0;(y!=123)||(x<4);x++)

A.是无限循环B.循环次数不定C.执行4次D.执行3次

42.下述程序段的输出结果是()intx=10;inty=x++;printf("%d,%d",(x++,y),y++);

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

43.fprintf函数的一般调用方式是()

A.fprintf(格式字符串,文件指针,输出表列);

B.fprintf(文件指针,格式字符串,输出表列)

C.fprintf(文件指针,格式字符串,输出表列);

D.fprintf(fp,格式字符串,输出表列);

44.对于长度为n的线性表,在最坏的情况下,下列各排序法所对应的比较次数中正确的是______。

A.冒泡排序为n/2B.冒泡排序为nC.快速排序为nD.快速排序为n(n-1)/2

45.有定义语句:chars[10];,若要从终端给s输入5个字符,错误的输入语句是

A.gets(&s[0]);

B.scanf("%s",s+1);

C.gets(s);

D.scanf("%s",s[1]);

46.以下程序的输出结果是()main(){intw=5;fun(w);printf("\n");}fun(intk){if(k>0)fun(k-1);printf("%d",k);}

A.54321B.012345C.12345D.543210

47.若有如下语句:structa{charx[10]inty;}s,*t;t=&s;则对结构体变量s中的成员y的正确引用是()

A.a.y;B.t->y;C.t.y,D.*t->y;

48.下列队列的描述中,正确的是()

A.队列属于非线性表B.队列在队尾删除数据C.队列按“先进后出”进行数据操作D.队列按“先进先出”进行数据操作

49.下列程序执行后的输出结果是

voidfunc1(inti);

voidfunc2(inti);

charst[]="hello,friend!";

voidfunc1(inti)

{printf("%c",st[i]);

if(i<3){i+=2;func2(i);}}

voidfunc2(inti)

{printf("%c",st[i]);

if(i<3){i+=2;func1(i);}}

main()

{inti=0;func1(i);printf("\n");}

A.helloB.helC.hloD.m

50.有以下程序

#include

main()

{FILE*fp;inti=20,j=30,k,n;

fp=fopen("d1.dat","w");

fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);

fclose(fp);

fp=fopen("d1.dat","r");

fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);

fclose(fp);}

程序运行后的输出结果是

A.2030B.2050C.3050D.3020

51.sizeof(char)是()。

A.一种函数调用B.一个整型表达式C.一个字符型表达式D.一个不合法的表达式

52.关系数据库的概念模型是______的集合。

A.关系模型B.关系模式C.关系子模式D.存储模式

53.以下选项中,与k=n++完全等价的表达式是A.k=n,n=n+1B.n=n+1,k=nC.k=++nD.k+=n+1

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

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

55.有以下程序:#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

56.有以下程序:#include<stdio,h>#include<string,h>struetSTU{intnam;floatTotalSeore;};voidf(strnctSTUp){structSTUs[2]={{20044,550},{20045,537}};p.num=s[1].num;p.TotalScore=s[1].TotalScore;main(){structSTUs[2]={{20041,703},{20042,580}};f(s[0]);printf("%d%3.Of\n",s[0].num,s[0].TotalSeore);}程序运行后的输出结果是()。

A.20045537B.20044550C.20042580D.20041703

57.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

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

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

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

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

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

59.在软件开发中,下面的任务不属于设计阶段的是()。

A.数据结构设计B.给出系统模块结构C.定义模块算法D.定义需求并建立系统模块

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

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

四、选择题(20题)61.

表示关系X<=Y<=Z的C语言表达式为()。

A.(X<=Y)&&(Y<=Z)

B.(X<=Y)AND(Y<=Z)

C.(X<=Y<=Z)

D.(X<一Y)&(Y<一Z)

62.已定义以下函数

63.开发大型软件时,产生困难的根本原因是()

A.大系统的复杂性B.人员知识不足C.客观世界千变万化D.时间紧、任务重

64.

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

A.为了建立一个关系,首先要构造数据的逻辑关系

B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项

C.一个关系的属性名表称为关系模式

D.一个关系可以包括多个二维表

66.以下叙述中错误的是______。A.C语言中对二进制文件的访问速度比文本文件快

B.C语言中,随机文件以二进制代码形式存储数据

C.语句FILEfp:定义了一个名为fp的文件指针

D.C语言中的文本文件以ASCII码形式存储数据

67.

有以下程序:

fun(intx,inty){return(x+y);)

main

{inta=1,b=2,c=2,sum;

sum=fun((a++,b++,a+b),c++);

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

}

执行后的结果是()。

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

68.

69.

70.当执行下面的程序时,如果输入ABC,则输出结罘是()。#include<stdio.h>#include<string.h>main(){charss[10]="1,2,3,4,5":gets(ss);strcat(ss,"6789");printf("%s\n",ss);}A.ABC6789B.ABC67C.12345ABC6D.ABC456789

71.有以下程序:

main()

{

chara[7]="a0\OaO\0";inti,j;

i=sizeof(a);j=strlen(a);

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

}

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

A)22B)76

C)75D)62

72.设intx=7,则~x的值是()。

A.-8B.7C.-1D.1

73.在下列结论中,只有一个是错误的,它是()。

A.C语言允许函数的递归调用

B.C语言中的continue语句,可以通过改变程序的结构而省略

C.有些递归程序是不能用非递归算法实现的

D.C语言中不允许在函数中再定义函数

74.

75.以下程序的主函数中调用了在其面前定义的fun函数#include<stdio.h>...main(){doublea[15],k;k=fun(a);...}则以下选项中错误的fun函数首部是()。、A.doublefun(doublea[l5])

B.doublefun(double*a)

C.doublefun(doublea[])

D.doublefun(doublea)

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

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

77.下列说法不正确的是

A.数据库减少了数据冗余B.数据库实现了数据的共享

C.数据库避免了一切数据的重复D.数据库具有较高的数据独立性

78.

79.以下程序段中,不能正确给字符串赋值(编译时系统会提示错误)的是:()

80.有以下程序:

当执行程序时,按下列方式输入数据(从第l列开始,<;CR>;代表回车,注意:回车也是一个字符]12<;CR>;34<;CR>;则输出结果是()。

A.12B.123C.1234D.12343

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:计算并输出下列级数的前N项之和SN,直到SN+1大于q为止。q的值通过形参传人。SN=2/1+3/2+4/3+(N+1)/N例如,若q的值为57,则函数值为59.593612。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,不得使用c语言提供的字符串函数。

例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:

****ABCDEFG。

注意:部分源程序在文件PROGl.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

参考答案

1.C题中定义了无符号数,c=a>>3;是指右移3位,然后输出。结果为C。

2.A

3.D解析:返回指针的函数定义为:返回值类型,函数名(\u3000\u3000),而指向函数的指针定义为:返回值类型(*变量名)(\u3000\u3000)。本题中函数fun返回一个无类型的指针。

4.B

5.D

6.A算法的空间复杂度是指算法在执行过程中所需要的内存空间。所以选择A项。

7.D程序定义了一个整型数组a,它包含5个整型元素,分别是1,2,3,4,5。数组名a代表数组的首地址,另外还定义整型指针P,将a传给函数f。在函数f中,首先将指针s向右移动一个整型变量的长度,此时s指向元素2(a[1])。S[1](a[2]);表示元素3,自增6后s[1](a[2])的值为9。表达式“+=7”;表示将*(s--)指向的元素自增7,即S[0](a[1])的值为9,s向左移动一个整型变量的长度,此时s指向元素1(a[0]),最后将s返回并赋给p。经过函数f的调用可知:P指向数组a的第1个元素,a[1]和a[2]值为9。综上,输出结果为:9,9,1,9。本题答案为D选项。

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

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

10.B运算符“%”为二元运算符,具有左结合性,参与运算的量均为整型。B选项中的变量a是double型,不符合规定。故本题答案为B选项。

11.B题中当a的值为l时,关系表达式a==l的值为真,即1,因此程序将跳转到easel执行a++操作,与题干程序刚好相反。

12.B本题考查do-while语句和if…else语句。do-while语句的功能是先执行循环体再判断条件,所以,先判断if语句的条件,y=-4,!y为逻辑0,条件不成立,执行下面的else语句,输出y,然后将x的值减1,x=3,条件不成立,执行下面的else语句,输出Y,然后将X的值减1,x=2,满足while循环条件,继续循环。第三次循环:先判断if语句的条件,y=2,!y为逻辑0,条件不成立,执行下面的else语句,输出y,然后将X的值减1,x=l,满足while循环条件,继续循环。第四次循环:先判断if语句的条件,y=-1,!y为逻辑0,条件不成立,执行下面的else语句,输出Y,然后将x的值减1,x=0,不满足while循环条件,结束循环。所以B正确。

13.Dregister声明寄存器变量enum声明枚举类型default开关语句中的“其他”分支

14.B一维数组定义的一般形式为:类型说明符数组名[常量表达式]。注意定义数组时,元素个数不能是变量。故本题答案为B选项。

15.B

16.C本题考查do-while循环,先执行d0输出的x的值为1,接着执行while语句,此时--x的值为0,x也为0,而非0为1,循环成立,接着执行do输出X值为-2,执行--x后,表达式为-2,而!(--x)为0,退出循环。

17.B本题考查按位异或的用法。按位异或运算的规则是:两个运算数的相应二进制位相同,则结果为0,相异则结果为1。b=2的二进制为00000010,a=1的二进制为00000001,a=a^b一00000011,转化为十进制后为3,b=b^a=00000010^00000011=00000001,即1。

18.D

19.C指针变量的值只能是存储单元地址,而不能是一个整数,故选项C错误。

20.D

21.*t或t[0]*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]*t或t[0]\r\n*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]解析:函数sstrcmp()有两个字符型指针变量,用来指向两个字符串。比较两个字符串的大小方法是:从第一个字符开始依次向后比较,若对应的字符相等则接着比较下一个字符,一直到两个字符串中对应字符不等,或者有一个为\\0,此时字符的ASCII码大的字符串就大。故循环条件是*s和*t不为\\0,且*s和*t相同,第一处应填“*t”或其他等价形式。根据题意可知第二处应填*s-*t或其等价形式。

22.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本题要求将字符串str中的字符用冒泡排序算法从大到小排列,其实现过程是将相邻两个字符进行比较,如果当前字符小于下—个字符,则通过中间变量temp将字符两两交换,所以第一空应填:str[i],第二空应填:str[i+1]。最终打印输出得到的字符串str,所以第三空应填:'%s',str。

23.77解析:在程序执行时,static变量仅初始化一次,下次使用时将使用上次保存的值。

24.yearleap=1leap

25.时间时间解析:算法的复杂度主要指时间复杂度和空间复杂度。所谓算法的时间复杂度,是指执行算法所需要的计算工作量;算法的空间复杂度,一般是指执行这个算法所需要的内存空间。

26.1B

27.-4-4解析:本题中,n=0,可以判断(!n)为真,执行x=x-1=2-1=1;m=1,可以判断(m)为真,执行x=x-2=1-2=-1;进而可以判断(x)为真,执行x=x-3=-1-3=-4。所以,最后输出为-4

28.0i<=100;sum

29.&a[i]&a[i]解析:主要考查函数scanf的用法.应填数组a的元素的地址。

30.共享性共享性解析:数据库系统中的数据能被不同的应用程序使用,实现了数据的高度共享,从而降低了数据的冗余,这也是数据库的主要目的。

31.33解析:这里:b-5=4,a-=4之后a的值为6,并把它赋给c。此时b的值并未被改变。在第2个表达式中,也只有赋值表达式b=3改变了b的值。所以两行语句执行完毕,b的值应该为3。

32.参照完整性参照完整性

33.概念(或概念级)概念(或概念级)

34.morningclassmorningclass解析:本题考查了两个知识点:①“++,--”运算后缀形式是先使用变量原来的值,使用完后再使其增1或减1;②在switch语句中,当n='c'时,执行“case'c'”,输出morning;因为此句中没有break语句,因此接着执行“case'd':”,输出class,最终输出结果为morningclass。

35.数据库管理系统数据库管理系统(DBMS)

36.101,0解析:与运算两边的语句必须同时为真时,结果才为真。当执行完if((++a<0)&&!(b--<=0))时,a,b的值已经发生了变化。

37.存储结构

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

39.栈顶栈顶解析:栈是限定在表的一端进行插入和删除操作的线性表。在表中,允许插入和删除的一端叫做“栈顶”,不允许插入和删除的一端叫做“栈底”。

40.*(p+5)

41.A解析:本题考查for循环的结束条件。注意虽然x的值在增加,但y的值不增加,表达式(y!=123)||(x<4)的值永远是1,所以会成为无限循环。

42.A

43.C

44.D解析:存最坏情况下,快速排序退化为冒泡排序,冒泡排序法的基本过程参见本题的理论链接。冒泡排序的每个元素都要与它前面的元素相比较,因此比较次数为(n-1)+(n-2)+…+1=n(n-1)/2。

45.D解析:在格式输入中,要求给出的是编译的地址,而D)答案中给出的s[1]是一个值的表达式。

46.B

47.B解析:本题中的a是结构体名,s是结构体a的变量,t是结构体a的指针。通过变量直接访问结构体成员应该使用“.”运算符,而通过指针间接访问结构体成员应该使用“->”运算符。故本题的正确答案为B。

48.DD)【解析】队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。队列的操作数是依据先进先出的原则进行的。因此队列亦称作先进先出的线性表,或后进后出的线性表。

49.C解析:考查函数的调用。函数调用的一般形式为:

函数名(实参列表)

首先调用函数func1(0),输出st[0]=h。i值变为2,并调用函数func2(2),输出st[2]=l。i值此时变为4,又调用函数func1(4),输出st[4]=0。此时i值大于等于3,执行完毕,因此,输出结果为hlo。函数调用的一般格式以及函数的返回值。

50.A解析:本题中,最主要的是掌握几个有关文件函数的应用。

函数名:fopen

功能:打开一个文件

调用方式FILE*fp;

fp=fopen(文件名,使用文件方式);

函数名:fprintf

功能:传送格式化输出到一个文件中

调用方式:fprintf(文件指针,格式字符串,输出表列);

函数名:fclose

功能:关闭一个文件

调用方式:fclose(文件指针);

函数名:fscanf

功能:从磁盘文件执行格式化输入

调用方式:fscanf(文件指针,格式字符串,输入列表)。

51.B解析:sizeof(char)是一个C语言的关键字,它不是函数调用。sizeof的功能是计算出运算对象在计算机的内存中所占用的字节数量,该表达式的返回值是一个整数,而不是一个字符型表达式。

52.B解析:本题考核关系数据库的概念模型。数据库的概念模型体现了数据之间的关系,它是各种数据之间相互关系的集合。关系数据库的概念模型是关系模式的集合。关系子模式是指关系数据库模式中用户所见到的那部分数据模式描述。

53.A解析:在本题中k=n++,为后缀运算。根据其运算规则,首先n先加一,但n++表达式的值依然n原来的值,即k的值没有改变。选项A中先给k赋值为n,然后n再加1,k值没有变化,所以这个表达式和本题中表达式等价:选项B中先n加1,然后将n加1后的值赋给k,k变化了比原来的值大1,所以这个表达式和本题中表达式不等价:选项C中先计算表达式左边的表达式++=N的值,执行++n后,左边的表达式的值为n的值加1,然后将n+1后的值赋给k,所以这个表达式和本题中的表达式不等价;选项D中表达式展开为k=k+(n+1),k的值发生了变化,所以这个表达式和本题中的表达式不等价。所以4个选项中A正确。

54.A解析:主函数中首先定义了4个字符变量a、b、cd,然后通过scanf()函数输入a、b、c、d输入中a和b是按字符格式c输入的,c和d是按整型符号d输入的。在看下面的printf()函数中,要求a、b、c、d都按字符输出,故a和b原样输出为6、5,c和d将把与其ASCII码对应的字符输出,65和66的ASCII码对应字符A和B,故最后的输出为6,5,A,B。所以,4个选项中选项A符合愿意。

55.D解析:在题目中,程序执行到scanf()函数时,会暂停等待用户输入4个字符,按题意输入123<回车>后,字符1~3被分别输入到c1~c3中,而c4会得到一个换行符'\\n'。然后执行第1个getchar()函数,由于前面的scanf()函数读完了缓冲区中的所有字符,所以此时程序会又暂停等待用户输入,按题意输入45678<回车>后,缓冲区第1个字符'4'被读入并赋给c5,第2个getchar()函数会读入缓冲区第2个字符'5'。所以最后依次输出c1、c2、c5、c6的值后,屏幕上的结果是1245。故应该选择D。

56.D解析:函数f中定义了结构体类型的变量P作为形参,在main函数中,将结构体变量s[0]中的值传给了形参变量P,在函数f中,虽然改变了p中的内容,但其改变对main函数中s[0]的值不产生影响,所以main函数中输出s[0]的数据仍然是main函数中初始化时的数据。

57.D解析:中序遍历的递归算法定义:①遍历左子树;②访问根结点;③遍历右子树。前序遍历的递归算法定义:①访问根结点;②遍历左子树;③遍历右子树。后序遍历的递归算法定义:①遍历左子树;②遍历右子树;③访问根结点。根据前序遍历的结果可知,a是根结点。由中序遍历的结果dgbaechf可知,d、g、b是左子树的结点,e、c、h、f是右子树的结点。再由前序遍历的结果bdg可知,b是a左边子树的根,由cefh可知,c是a右边子树的根。再由中序遍历的结果dgb可知,d、g是b左边子树的结点,b右边子树无结点。再由前序遍历结果dg可知,d为b左子树的根,g是以d为根的子树的右结点。至此,a的左子树已完全弄清楚了。同样的道理,可以弄清楚以c为根的子树的结点位置。所以可知后序遍历的结果是D。

58.C解析:在C语言中,除字符数组外,一个数组不能通过数组名对数姐进行整体引用,因此选项A是对的。数组名中存放的是一个地址常量,它代表整个数组的首地址,因此选项B是对的。C语言程序在运行过程中,系统不自动检验数组元素的下标是否越界,因此选项C是错误的。C语官规定可以通过赋初值来定义数组的大小,这时数组说明符的一对方括号中可以不指定数组的大小,因此选项D也是正确的。所以,4个选项中选项C符合题意。

59.D解析:软件设计一般分为总体设计和详细设计两个阶段。总体设计的任务是确定软件的总体结构、子系统和模块的划分,确定模块间的接口和评价模块划分质量,并进行数据分析;详细设计的任务是确定每一模块实现的定义,包括数据结构、算法和接口。

60.A解析:符号名的命名不仅要符合语法,而且符号名的命名应具有一定实际含义,以便于对程序功能的理解。所以,选项B错误。程序设计风格强调“清晰第一,效率第二”,而不是效率第一。所以,选项C错误。程序中的注释部分虽然不是程序的功能,计算机在执行程序时也不会执行它,但在程序中加入正确的注释能够帮助读者理解程序,注释是提高程序可读性的重要手段。所以,选项D错误。本题的正确答案为A。

61.A

\n题中X<=Y<=Z的意思为X<=Y并且Y<=Z,在c语言中,要表示“且”的关系,应用“与”逻辑运算符,即“&&”,故选择A选项。

\n

62.A本题考查的是指针的概念。在C语言中,指针是一种特殊的变量,它存放的值是一个内存地址。所以一个指针变量涉及三个值:指针变量所指内容的值、指针变量中存放的值、指针变量的地址值。它们可以分别用表达式*P、P、&p来表示。题目rpfun()函数的返回表达式是*p,所以选项C)、D)不为所选,而应该是形参p所指内容的值,因为P为int型指针,所以该值是一个整数。故应该选择A)。

63.A开发大型软件时,产生困难的原因有很多,如需求难以捕捉、员工水平有限、工作安排不太合理、进度控制难以把握、系统开发时间有限等元素,但这些都不是根本的原因,根本的原因是大系统的复杂性。

64.C

65.C解析:在格式化模型中,要事先根据应用的需要,确定数据之间的逻辑关系,即先对数据进行结构化。在关系模型中,不需要事先构造数据的逻辑关系,只要将数据按照一定的关系存入计算机,也就是建立关系。所以选项A错误。对于一个表示关系的二维表,其最基本的要求是表中元组的每一个分量必须是不可分的数据项,即不允许表中再有表。所以,选项B、D说法是错误的。一个关系的属性名表称为关系模式,也就是二维表的表框架,相当于记录型。因此,选项C说法正确。

66.C解析:FILE是由系统定义的一个结构体类型,并用该类型来定义若干个FILE类型的变量,以便存放若干个文件。所以用FILE定义的变量必须是数组或指针,所以选项C中的“FILE\u3000\u3000fp;”改为“FILE*fp;”就对了。

67.C

\n表达式a++,b++,a+b是一个逗号表达式,在逗号表达式中,从左向右进行各个表达式的运算,最后一个表达式的值就是逗号表达式的结果,所以表达式a++,b++,a+b的值为5,所以fun函数中的形参x的值为5;表达式c++先把变量C的值传给形参y,然后c的值加1,所以y的值为3,因此函数fun((a++,b++,a+b),c++)的返回值为8。

\n

68.B\r\n

69.B

70.A当执行gets(ss)后,ss数组中的元素为ABC,再执行strcat(ss,"6789"),strcat的作用,是把6789连接到了ss数组后面,执行完后SS数组为ABC6789,故选择A选项。

71.C数组a中有5个元素a,0,0,a,0占7个字节的内容。最后一个\\0为结束符。

72.A本题主要考查按位求反运算和C语言正负数的表示,“O”代表正数,“1”代表负数;x=7的二进制为00111,第一个0代表正数,~x为11000,第一个l代表负数,值为8。

73.CC语言不仅可以递归调用,还可以对自己进行递归调用,但是,不允许在函数中再次定义函数,c语言中的coutinue语句,可以通过改变其结构来实现。

74.D

75.A由题可知fun的参数为变量,而a[15]为常量,所以答案为A。

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

77.C数据库是存储在一起的相关数据的集合,具有以下特点。

(1)实现数据共享。数据共享包含所有的用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。

(2)减少数据的冗余度。同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件,减少了大量重复的数据和数据冗余,维护了数据的一致性。

(3)数据的独立性。数据的独立性包括数据库的逻辑结构和应用程序相互独立,也包括数据物理结构的变化不影响数据的逻辑结构。

(4)数据实现集中控制。在文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同的处理中,其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。

(5)数据一致性和可维护性,以确保数据的安全性和可靠性。主要包括:①安全性控制。以防止数据丢失、错误更新和越权使用。②完整性控制。保证数据的正确性、有效性和相容性。③并发控制。使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用。④故障的发现和恢复。由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。

(6)故障恢复。由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数据库系统能尽快恢复数据库系统运行时出现的故障,可能是物理上或是逻辑上的错误。比如对系统的误操作造成的数据错误等。

数据库是不可能避免一切数据都没有重复的,并且有些情况下需要有重复的数据,比如数据库恢复技术需要一定的数据冗余度。

78.C

79.C字符串赋初值对于字符数组只能在定义时进行。因此选项A的赋初值是正确的。因为数组名是一个固定指针,不能再让其指向其他内存单元。选项C的赋初值是错误的。但选项D是用strcpy函数将字符串“abcdefg”复制到S数组的内存中,是正确的。选项B的tel=”abcdefg”,是利用字符串的长度决定数组长度(串长加1)并同时赋初值。对于字符指针,可以在定义时就指向别的内存单元,*s=t,也是正确的。所以只有C项不正确。

80.D按照从键盘输入的数据可以_判断字符l给了变量a,字符2给了变量b,字符<CR>即回车给了变量c,字符3给了变量d。所以打印输出的结果为D选项。

81.(1)错误:doubleproc(doubleq)

正确:doubleproc(intq)

(2)错误:sum=sum+(n+1)/n;

正确:sum=sum+(double)(n+1)/n;

(3)错误:returnsum;

正确:returnt;

【解析】由主函数中函数调用的实参可知,函数proc()的形参为int型,因此,“doubleproc(doubleq)”应改为“doubleproc(intq)”;变量sum为double型变量,因此表达式(n+1)/n要进行强制类型转换,因此,“sum=sum+(n+1)/n;”应改为“sum=sum+(double)(n+1)/n;”,由函数proc()可知,变量sum中存放的是SN+1项,而变量t表示SN项,因此,“returnsum;”应改为“returnt;”。

82.

程序设计题解析:

【考点分析】

本题考查:指针型变量定义;while循环语句;if语句条件表达式;字符串结束标识‘\\0’。

【解题思路】

函数fun的功能:除了字符串前导的*号之外,将串中其他。号全部删除。解答本题,(1)定义一个临时指针P,初始指向原串首地址;(2)利用循环语句把字符串前导*号拷贝到原串;(3)继续移动指针,把串中和串尾的非*号字符拷贝到原串;(4)为修改后的字符串赋结束字符’\\0’。

【解题宝典】

要删除字符串中的指定字符,通常采用保留非指定字符的方法。可以将非指定字符保留在原串,即将需要保留的字符从原串的起始位置重新赋值;也可以保留到新串,即新建一个字符串,存放要保留的字符。2021-2022年山西省朔州市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.有以下程序:#include<stdio.h>main(){unsignedchara=8,C;C=a>>3:printf("%d\n",c);}程序运行后的输出结果是()。A.32B.16C.1D.0

2.连通图G中有n个顶点,G的生成树是()连通子图。

A.包含G的所有顶点B.包含G的所有边C.不包含G的所有顶点D.包含G的所有顶点和所有边

3.程序中对fun函数有如下说明

void*fun();

此说明的含义是:A.fun了数无返回值

B.fun函数的返回值可以是任意的数据类型

C.fun函数的返回值是无值型的指针类型

D.指针fun指向一个函数,该函数无返回值

4.已知广义表的表头为A,表尾为(B,C),则此广义表为________

A.(A,(B,C))B.(A,B,C)C.(A,B,C)D.((A,B,C))

5.

6.算法的空间复杂度是指()。

A.算法在执行过程中所需要的计算机存储空间

B.算法所处理的数据量

C.算法程序中的语句或指令条数

D.算法在执行过程中所需要的临时工作单元数

7.有下列程序:程序执行后的输出结果是()。A.2,3,1,2B.9,9,2,9C.8,10,2,8D.9,9,1,9

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

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

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

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

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

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

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

10.若有定义“doublea=22;inti=0,k=18;”,则不符合C语言规定的赋值语句是()。

A.i=(a+k)<=(i+k);B.i=a%11;C.a=a++,i++;D.i=!a;

11.以下选项中与“if(a==l)a=b;elsea++;”语句功能不同的switch语句是()。

A.switch(a){casel:a=b;break;default:a++;}

B.switch(a==l){case0:a=b;break;casel:a++;}

C.switch(a){default:a++;break;casel:a=b;}

D.switch(a==l){casel:a=b;break;case0:a++;}

12.有以下程序:#include<stdio.h>main{intx=4,y;do{y=x;if(!y)printf(“x”);elseprintf(“y”):x--;}while(x);}程序的输出结果是()。A.xyyxB.yyyyC.yyxxD.yxyx

13.下列不属于C语言关键字的是()。A.A.default

B.register

C.enum

D.external

14.若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是()。

A.#definen5inta[2*n];

B.intn=10,a[n];

C.inta[5+5];

D.#defineN10inta[N];

15.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是()。

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

16.有以下程序段:intx=3;do{printf("%d",x-=2);)while(!(--x));其输出结果是()。A.1B.30C.1-2D.死循环

17.若有以下程序:inta=1,b=2;a=a^b;b=b^a;则执行以上语句后a和b的值分别是()。A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2,b=l

18.

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

A.改变函数形参的值,不会改变对应实参的值

B.函数可以返回地址值

C.可以给指针变量赋一个整数作为地址值

D.当在程序的开头包含文件stdi0.h时,可以给指针变量赋NULL

20.

二、2.填空题(20题)21.函数sstrcmp的功能是对两个字符串进行比较。当s所指字符串和t所指字符串相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp)。请填空。

#include<stdio.h>

intsstrcmp(char*s,char*t)

{while(*s&&*t&&*s==【】)

{s++;t++;}

return【】;

}

22.下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

23.下列程序执行后输出的结果是【】。

f(inta)

{staticc=0;

c=a+c++;

return(c);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

24.下列程序可以判断输入的年份是不是闰年。

#include

main()

{int【】,leap;

scanf("%d",&year);

if(year%4)

leap=0;

elseif(year%lO0)

【】;

elseif(year%400)

leap=0;

else

leap=1;

if(【】)

printf("%d年是闰年",year);

else

printf("%d年不是闰年\n",year);

}

25.算法的复杂度主要包括【】复杂度和空间复杂度。

26.已知字符A的ASCⅡ代码值为65,以下程序运行时若从键盘输入:B33<回车>.则输出结果是()。

#include

main()

{chara,b;

a=getchar();scanf("%d",&B);

a=a-'A'+'0';b=b*2;

printf("%c%c\n",a,B);

}

27.有以下程序:

main()

{intn=0,m=1,x=2;

if(!n)x-=1;

if(m)x-=2;

if(x)x-=3;

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

}

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

28.用以下程序计算1到100的整数的累加和。请填空。

main()

{inti,sum=【】;

i=1;

for(【】)

{sum+=j

i++;

}

printf("sum=%d\n",【】);

}

29.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。请填空。

main()

{inti,a[20],sum,count;

sum=count=0;

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

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

{if(a[i]>0)

{count++;

sum+=a[i];

}

}

printf("sum=%d,count=%d\n",sum,count);

}

30.数据库系统的主要特点为数据集成性、数据的高______和低冗余性、数据独立性和数据统一管理和控制。

31.若有定义inta=10,b=9,c=8;,接着顺序执行下列语句,变量b中的值是【】。

c=(a-=(b-5));

c=(a%11)+(b=3);

32.关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、______和自定义完整性。

33.数据库系统的三级模式分别为______模式、内部级模式与外部级模式。

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

intn='c';

switch(n++)

{default:printf("error");break;

case'a':printf("good");break;

case'c':printf("morning");

case'd':printf("class");

}

35.数据库系统中实现各种数据管理功能的核心软件称为【】。

36.阅读下面语句,则程序的执行结果是【】。

#include"stdio.h"

main()

{inta=-1,b=1,k;

if((++a<0)&&!(b--<=0))

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

elseprintf("%d,%d\n",b,a);}

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

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

voidfun(int*x,int*y)

{……}

main()

{inta=10,b=20;

【】:

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

……

}

39.栈中允许进行插入和删除的一端叫做______。

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

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

三、1.选择题(20题)41.以下的for循环______。for(x=0,y=0;(y!=123)||(x<4);x++)

A.是无限循环B.循环次数不定C.执行4次D.执行3次

42.下述程序段的输出结果是()intx=10;inty=x++;printf("%d,%d",(x++,y),y++);

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

43.fprintf函数的一般调用方式是()

A.fprintf(格式字符串,文件指针,输出表列);

B.fprintf(文件指针,格式字符串,输出表列)

C.fprintf(文件指针,格式字符串,输出表列);

D.fprintf(fp,格式字符串,输出表列);

44.对于长度为n的线性表,在最坏的情况下,下列各排序法所对应的比较次数中正确的是______。

A.冒泡排序为n/2B.冒泡排序为nC.快速排序为nD.快速排序为n(n-1)/2

45.有定义语句:chars[10];,若要从终端给s输入5个字符,错误的输入语句是

A.gets(&s[0]);

B.scanf("%s",s+1);

C.gets(s);

D.scanf("%s",s[1]);

46.以下程序的输出结果是()main(){intw=5;fun(w);printf("\n");}fun(intk){if(k>0)fun(k-1);printf("%d",k);}

A.54321B.012345C.12345D.543210

47.若有如下语句:structa{charx[10]inty;}s,*t;t=&s;则对结构体变量s中的成员y的正确引用是()

A.a.y;B.t->y;C.t.y,D.*t->y;

48.下列队列的描述中,正确的是()

A.队列属于非线性表B.队列在队尾删除数据C.队列按“先进后出”进行数据操作D.队列按“先进先出”进行数据操作

49.下列程序执行后的输出结果是

voidfunc1(inti);

voidfunc2(inti);

charst[]="hello,friend!";

voidfunc1(inti)

{printf("%c",st[i]);

if(i<3){i+=2;func2(i);}}

voidfunc2(inti)

{printf("%c",st[i]);

if(i<3){i+=2;func1(i);}}

main()

{inti=0;func1(i);printf("\n");}

A.helloB.helC.hloD.m

50.有以下程序

#include

main()

{FILE*fp;inti=20,j=30,k,n;

fp=fopen("d1.dat","w");

fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);

fclose(fp);

fp=fopen("d1.dat","r");

fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);

fclose(fp);}

程序运行后的输出结果是

A.2030B.2050C.3050D.3020

51.sizeof(char)是()。

A.一种函数调用B.一个整型表达式C.一个字符型表达式D.一个不合法的表达式

52.关系数据库的概念模型是______的集合。

A.关系模型B.关系模式C.关系子模式D.存储模式

53.以下选项中,与k=n++完全等价的表达式是A.k=n,n=n+1B.n=n+1,k=nC.k=++nD.k+=n+1

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

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

55.有以下程序:#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

56.有以下程序:#include<stdio,h>#include<string,h>struetSTU{intnam;floatTotalSeore;};voidf(strnctSTUp){structSTUs[2]={{20044,550},{20045,537}};p.num=s[1].num;p.TotalScore=s[1].TotalScore;main(){structSTUs[2]={{20041,703},{20042,580}};f(s[0]);printf("%d%3.Of\n",s[0].num,s[0].TotalSeore);}程序运行后的输出结果是()。

A.20045537B.20044550C.20042580D.20041703

57.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

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

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

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

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

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

59.在软件开发中,下面的任务不属于设计阶段的是()。

A.数据结构设计B.给出系统模块结构C.定义模块算法D.定义需求并建立系统模块

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

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

四、选择题(20题)61.

表示关系X<=Y<=Z的C语言表达式为()。

A.(X<=Y)&&(Y<=Z)

B.(X<=Y)AND(Y<=Z)

C.(X<=Y<=Z)

D.(X<一Y)&(Y<一Z)

62.已定义以下函数

63.开发大型软件时,产生困难的根本原因是()

A.大系统的复杂性B.人员知识不足C.客观世界千变万化D.时间紧、任务重

64.

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

A.为了建立一个关系,首先要构造数据的逻辑关系

B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项

C.一个关系的属性名表称为关系模式

D.一个关系可以包括多个二维表

66.以下叙述中错误的是______。A.C语言中对二进制文件的访问速度比文本文件快

B.C语言中,随机文件以二进制代码形式存储数据

C.语句FILEfp:定义了一个名为fp的文件指针

D.C语言中的文本文件以ASCII码形式存储数据

67.

有以下程序:

fun(intx,inty){return(x+y);)

main

{inta=1,b=2,c=2,sum;

sum=fun((a++,b++,a+b),c++);

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

}

执行后的结果是()。

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

68.

69.

70.当执行下面的程序时,如果输入ABC,则输出结罘是()。#include<stdio.h>#include<string.h>main(){charss[10]="1,2,3,4,5":gets(ss);strcat(ss,"6789");printf("%s\n",ss);}A.ABC6789B.ABC67C.12345ABC6D.ABC456789

71.有以下程序:

main()

{

chara[7]="a0\OaO\0";inti,j;

i=sizeof(a);j=strlen(a);

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

}

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

A)22B)76

C)75D)62

72.设intx=7,则~x的值是()。

A.-8B.7C.-1D.1

73.在下列结论中,只有一个是错误的,它是()。

A.C语言允许函数的递归调用

B.C语言中的continue语句,可以通过改变程序的结构而省略

C.有些递归程序是不能用非递归算法实现的

D.C语言中不允许在函数中再定义函数

74.

75.以下程序的主函数中调用了在其面前定义的fun函数#include<stdio.h>...main(){doublea[15],k;k=fun(a);...}则以下选项中错误的fun函数首部是()。、A.doublefun(doublea[l5])

B.doublefun(double*a)

C.doublefu

温馨提示

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

评论

0/150

提交评论