2021-2022年海南省海口市全国计算机等级考试C语言程序设计预测试题(含答案)_第1页
2021-2022年海南省海口市全国计算机等级考试C语言程序设计预测试题(含答案)_第2页
2021-2022年海南省海口市全国计算机等级考试C语言程序设计预测试题(含答案)_第3页
2021-2022年海南省海口市全国计算机等级考试C语言程序设计预测试题(含答案)_第4页
2021-2022年海南省海口市全国计算机等级考试C语言程序设计预测试题(含答案)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年海南省海口市全国计算机等级考试C语言程序设计预测试题(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.

2.

3.以下不能输出字符A的语句是(注:字符A的ASCII值为65,字符a的ASCII值为97)()。

A.printf(“%c\n”,‘a’-32);

B.printf(“%d\n”,‘A’);

C.printf(“%c\n”,65);

D.printf(“%c\n”,‘B’-1);

4.C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是()。

A.预定义标识符(如库函数中的函数名)可用做用户标识符,但失去原有含义

B.用户标识符可以由字母和数字任意顺序组成

C.在标识符中大写字母和小写字母被认为是相同的字符

D.关键字可用做用户标识符,但失去原有含义

5.有以下程序:#include<stdi0.h>#defineS(x)(x)"x"2main(){intk一5,j=2;Drintf("%printf,",S(k+j));printf("%printf\n",S((k—j)));}程序运行后的输出结果是()。A.98,18B.39,11C.39,18D.98,11

6.软件调试的目的是A.发现错误B.改正错误C.改善软件的性能D.验证软件的正确性

7.C语言可执行程序的开始执行点是()。

A.包含文件中的第一个函数B.程序中第一个函数C.程序中的main()函数D.程序中第一条语句

8.若变量a、i已正确定义,且i已正确赋值,合法的语句是()。

A.a==lB.++iC.a=a++=5D.a=int(i)

9.若有定义“intx[10],*pt=x;”,则对x数组元素的引用正确的是()。

A.pt+3B.*&x[10]C.*(pt+10)D.*(x+3)

10.给定数列(541,132,984,746,518,181,946,314,205,827)按照从小到大的顺序排列,采用直接选择大值开始排序时,第一趟扫描结果是()

A.(541,132,827,746,518,181,946,314,205,984)

B.(205,132,314,181,518,746,946,984,541,827)

C.(132,541,746,984,181,518,314,946,205,827)

D.(132,541,746,518,181,946,314,205,827,984)

11.C语言中不合法的字符串常量是

A.\121B.'Y'C.\n\nD.ABCD\x6d

12.C语言函数中未指定存储类的变量,其隐含类别是()

A.autoB.staticC.registerD.void

13.有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][20]={“One*World”,“One*Dream!”},*p=str[1];printf(“%d,”,strlen(p));printf(“%s\n”,p);}程序运行后的输出结果是()。

A.10,One*Dream!

B.9,One*Dream!

C.9,One*World

D.10,One*World

14.下列叙述中错误的是()。

A.C语言程序对预处理命令行的处理是在程序执行过程中进行的

B.预处理命令行的最后不能以分号表示结束

C.“#defmeMAX”是合法的宏定义命令行

D.在程序中,凡是以“#”开始的语句行都是预处理命令行

15.有以下程序:程序运行后的输出结果是()。A.13442B.13431C.01234D.02431

16.以下针对相应语句的注释中,说法错误的是()。

A.int*pt[2];/*pt是一个指针数组名*/

B.int(*pt)[2];/*pt是一维数组名*/

C.int(*pt)();/*pt是指向函数的指针*/

D.int*pt();/*pt是一个函数名*/

17.设有以下语句:inta=1,b=2,c;c=a^(b<<2);执行后,c的值为()。A.6B.7C.8D.9

18.堆的形状是一棵_______。

A.二叉排序树B.满二叉树C.完全二叉树D.平衡二叉树

19.在下面的一维数组定义中,哪一个有语法错误()。A.inta[]={1,2,3};B.inta[10]={0};C.inta[];D.inta[5];

20.若有以下程序: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

二、2.填空题(20题)21.下列程序中的数组a包括10个整数元素,分别将前项和后项之和存入数组b,并按每行4个元素输出数组bo请填空。

#include<stdio.h>

main()

{inta[10],b[10],i;

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

scanf("%d",&a[i]);

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

______;

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

{if(i%4==0)printf("\n");

printf("%3d",b[i]);

}

}

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

23.在数据的存储结构中,不仅需要存储各数据元素的信息,还要存放各元素之间______的信息。

24.函数sub的功能是根据下面近似分式求π的值。

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

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

#include"math.h"

doublesub(longm)

{doublesum=0.0,t;longn;

for(n=1;n<=m;n++)sum+=【】;

t=sqrt(6*sum);

return(t);

}

25.以下程序的功能是输出如下形式的方阵:

13141516

9101112

5678

1234

请填空。

#include<stdio.h>

main()

{inti,j,x;

for(j=4;j【】;j--)

{for(i=1;i<=4;i++)

[x=(j-1)*4+【】;

printf("%4d",x);

}

printf("\n");

}

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

main()

{inta=10;

a=(3*5,a+4);printf("a=%d\n",a);

}

27.设有定义:intn,*k=&n;以下语句将利用指针变量k读写变量n中的内容,请将语句补充家整。

seanf("%d",【】);

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

28.当调用函数时,实参是一个数组名,则向函数传递的是【】。

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

main()

{

chara[]="Language",b[]="Programe";

char,p1,*p2;

intk;

p1=a,p2=b;

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

if*(p1+k)==*(p2+k))printf("%c",*(p1+k));

}

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

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

}

31.以下程序可把输入的十进制数以十六进制数的形式输出,请填空。

#inelude<stdio.h>

main()

{eharb[17]={"0123456789ABCDEF"};

intc[64],d,i=0,base=16;

longn;

printf("Enteranumber:\n");

seanf("%ld",&n);

do{c[i]=【】;i++;n=n/base;}

while(n!=0);

printf("Transmitenewbase:\n");

for(--i;i>=0;--i)

{d=c[i];printf("%c",b【】);}

printf("\n");

}

32.下列程序的功能:对输入的一行字符中的数字字符的字面值累加,输出此累加和,请填空。

#include<stdio.h>

#include<ctype.h>

main()

{charc;

inta,s=0;

while(______)

if(isdigit(c))

{a=c-'0';s+=a;}

printf("s=%d",s);

}

33.关系数据库管理系统能实现的专门关系运算包括选择、连接和【】。

34.常用的软件结构设计工具是结构图(SC),也称程序结构图。其中,用矩形表示______,用带空心圆的箭头表示传递的是数据。

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

#defineP(A)printf("%d,",(int)(A))

#definePRINT(A)P(A);printf("theend")

main()

{inti,a=0;

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

PRINT(a+i);

printf("\n");

}

36.下面程序中函数fun的功能是:找出一维数组元素中的最大值和它所在的下标,并将最大值和其下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。请填空。

#include<stdlib.h>

#include<sldio.h>

voidfun(inta[],intn,int*max,int*d)

{inti;

*max=a[0];*d=0;

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

if(*max<【】)

{*max=a[i];*d=i;}

}

main()

{inti,x[20],max,index,n=10;

randomize();

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

{x[i]=rand()%50;printf("%4d",x[i]);}

printf("\n");

fun(x,n,&max.&index);

printf("Max=%5d,Index=%4d\n",max,index);

}

37.以下函数的功能是计算s=1+1/2!+1/3!+…+1/n!,请填空。

doublerun(intn)

{doubles=0.0,fac=1.0;

inti,k=1;

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

{【】;

fac=fac/k;

s=s+fac;

}

}

38.设有定义:intn,*k=&n;以下语句将利用指针变量k读写变量n中的内容,请将语句补充完整。

scanf("%d",【】);

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

39.数据结构分为逻辑结构和存储结构,循环队列属于______结构。

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

#include<string.h>

main()

{chara[]={'\1','\2','\3','\4','\0'};

printf("%d%d\n",sizeof(a),strlen(a));

}

三、1.选择题(20题)41.下面函数调用语句含有实参的个数为func((exp1,exp2),(exp3,exp4,exp5));

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

42.下列关于栈的叙述正确的是()

A.栈是非线性结构B.栈是一种树状结构C.栈具有先进先出的特征D.栈具有后进先出的特征

43.下列选项中合法的赋值语句是()。

A.a-b=34B.a=34,b=34C.i-1;D.m=(int)(x+y);

44.设有以下说明语句structex{intX;floaty;charz;}example;则下面的叙述中不正确的是

A.struct结构体类型的关键字

B.example是结构体类型名

C.x,y,z都是结构体成员名

D.structex是结构体类型名

45.设有以下说明语句,则变量a______。chara='\72';

A.包含1个字符B.包含2个字符C.包含3个字符D.该说明不合法

46.有程序#include<stdio.h>main(){inta,b,c=246;a=c/100%9;b=(-)&&(-1);printf("%d,%d\n%,a,b);}输出结果是()

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

47.请阅读以下程序:main(){inta=5,b=0,c=0;if(a=b+c)printf(”"***\n");elseprintf("$$$\n");}以上程序

A.有语法错不能通过编译B.可以通过编译但不能通过连接C.输出***D.输出$$$

48.若有以下定义,则能使值为3的表达式是intk=7,x=12;

A.x%=(k%=5)B.x%=(k-k%5)C.x%=k-k%5D.(x%=k)-(k%=5)

49.下列二维数组的说明中,不正确的是()。

A.floata[][4]={0,1,8,5,9};

B.inta[3][4]

C.#defineN5floata[N][3]

D.inta[2][9.5];

50.链表不具有的特点是()

A.不必事先估计存储空间B.可随机访问任一元素C.插入删除不需要移动元素D.所需空间与线性表长度成正比

51.以下程序的输出结果是______。main(){charst[20]="hello'、0\t\\";printf("%d%d\n",strlen(st),sizeof(st));}

A.99B.520C.1320D.2020

52.下面不属于软件设计原则的是()。

A.抽象B.模块化C.自底向上D.信息隐蔽

53.已知i、j、k为int型变量,若要从键盘输入2、3、4<CR>,使i、j、k的值分别为2、3、4,下列正确的输入语句是()。

A.scanf("%3d,%3d,%3d",&i,&j,&k);

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

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

D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);

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

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

55.在关系数据库中,用来表示实体之间联系的是

A.树形结构B.网状结构C.线性表D.二维表

56.下列说法不正确的是

A.int*fun();----fun是一个返回int指针的函数

B.int(*fun)();---fun是一个返回int指针的函数

C.int(*array[5])();----array是一个有5个元素的数组,每一个元素都是一个函数指针,指向一个返回int的函数

D.int(*fun(int))(int);----fun是带有一个int参数的函数,返回值是一个函数指针,这个指针指向带有一个int参数并返回int的函数

57.若有如下程序:#include"stdio.h"voidmain(){FILE*fp;fp=fopen("test","wb")fprintf(fp,"%d%.1f,%c%c",5,238.41,'B','h');fclose(fp);}则程序运行后向文件输出的结果是()

A.5238.41BhB.5238.4,BhC.5,238.4,B,hD.5238.41Bh

58.以下程序的输出结果是main(){charch[3][5];{“AAAA”,“BBB”,“CC”};printf(“\”%s“n”,ch[1]);}

A.“AAAA”B.“BBB”C.“BBBCC”D.“CC”

59.下列选项中,不属于模块间耦合的是()。A.数据耦合B.标记耦合C.异构耦合D.公共耦合

60.微型计算机的性能主要取决于()

A.内存B.中央处理器C.硬盘D.显示卡

四、选择题(20题)61.

62.

63.

64.

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

main

{intm=5;

if(m++>5)printf("%d\n",m):

elseprintf("%d\n",m--);

}

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

65.

66.

67.有以下程序(a123.txt在当前盘符下已经存在)

#include"stdio.h"

voidmain()

{FILE*fp;

inta[10],*p=a;

fp=fopen("a123.txt","w");

while(strlen(gets(p))>0)

{fputs(a,fp);

fputs("\n",fp);

}

fclose(fp);

}

程序实现的功能是

A.从键盘输入若干行字符,按行号倒序写入文本文件a123.txt中

B.从键盘输入若干行字符,取前两行写入文本文件a123.txt中

C.从键盘输入若干行字符,第一行写入文本文件a123.txt中

D.从键盘输入若干行字符,依次写入文本文件a123.txt中

68.

69.在学生管理的关系数据库中,存取一个学生信息的数据单位是()。

A.文件B.数据库C.字段D.记录

70.有三个关系R、S和T如下:

则由关系R和s得到关系T的操作是()。

A.自然连接B.并C.交D.差

71.现有以下结构体说明和变量定义,如图所示,指针P、q、r分别指定一个链表中连续的3个结点。

structnode

{hardata;

structnode*next;)*P,*q,*r;

现要将q和r所指结点交换前后位置,同时要保持链表的结构,下列不能完成此操作的语句是()。A.q-:>next=r->next;p--:>next=r;rm:>next=q;

B.q-:>next=r;q->next=r->next;r->next=q;

C.q-:>next=r->next;r->next=q;p->next=r;

D.q-:>next=q;p->next=r;q->next=r->next;

72.

73.有以下程序段:

以下选项中表达式的值为11的是()。

A.

B.

C.

D.

74.

75.

76.

77.下列数据结构中,能够按照“先进后出”原则存取数据的是()。

A.循环队列B.栈C.队列D.二叉树

78.

79.

80.

五、程序改错题(1题)81.下列给定程序中,函数ptoc的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本方法是:先对字符串中的头两个元素进行排序,然后把第3个字符插入前两个字符中,插入后前3个字符依然有序;再把第4个字符插入前三个字符中,待排序的字符串已

在主函数中赋予。

请修改程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include<strin9.h>

#include<stdi0.h>

#defineM80

voidproc(char*arr)

{inti,j,n;charch;

n=strlen(arr):

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

//****found****

{c=arr[i];

j=i-1;

while((j>=o)&&(ch<arr[j]))

{

arr[j+1]=arr[j];

j--;

}

arr[j+1]=ch;

}

}

voidmain

{

chara[M]="QWERTYUIOPASDFGHJKLMNBVCXZ";

printf("Theoriginalstring:%s\n",a);

proc(a);

printf("Thestringaftersortin9:

%s\n\n",a);

}

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

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

****ABCDEFG。

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

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

参考答案

1.D

2.A

3.BB选项输出的格式为%d,即整型格式,所以输出字符‘A’的ASCII值65,而不是字母A。因为大写字母比其对应的小写字母的ASCII值小32,所以A选项正确。字符‘A’的ASCII值是65,以%c格式输出可以输出字母A,所以C选项正确。因为字符‘A’的ASCII值比字符‘B’的小1,所以D选项正确。故本题答案为B选项。

4.A用户标识符不能以数字开头,C语言中标识符是区分大小写的,关键字不能用做用户标识符。

5.BS(k+j)=(k+j)*k+j*2=(5+2)*5+2*2=39,同理S(k-1)=(k+j)*k+j*2=\r\n(5-2)*5-2*2=11,所以答案选择B。

6.B本题考查软件工程调试。调试与测试是两个不同的过程,有着根本的区别:调试是一个随机的、不可重复的过程,它用于隔离和确认问题发生的原因,然后修改软件来纠正问题;测试是一个有计划的,可以重复的过程,它的目的是为了发现软件中的问题。因此,软件调试的目的是为了改正软什中的错误。本题的正确答案是选项\u3000B。

7.C解析:每个C程序有且只有一个主函数main(),且程序必须从main函数开始执行,并在main()函数中结束。

8.B选项A为表达式,因此不正确,选项C中a++本身就是表达式,无需再赋值,选项D中,在强制类型转换时,类型名应用括号括起来,故选择8选项。

9.D选项A中,“pt+3”使指针变量Pt移动3个单元,指向第4个元素,不能正确引用。运算符“*”与“&”放在一起,其作用相互抵消,且下标10超出了数组下标范围,所以B选项错误。“*(pt+i)”表示引用指针pt所指元素后的第i个元素,引用数组第11个元素,C选项错误。故本题答案为D选项。

10.A

11.B解析:字符串常量是由双引号括起来的一串字符,其中的双引号不可缺少。由此可知,选项A)、C)、D)都是含法的字符串常量,而选B)是一个字符常量。

12.A

13.A函数“strlen(char*s)”;计算字符串s的长度,不包括‘\\0’在内。p指向数组的第2个元素,因此“Strien(P)=10”,并输出“one*Dream!”。故本题答案为A选项。

14.A预处理是在程序编译之前进行的,所以A选项错误。故本题答案为A选项。

15.Bmain函数中定义包含5个元素的数组m,每个元素都是NODE类型。指针p指向数组第1个元素,指针q指向数组最后一个元素。while循环使用p、q从首尾向中间遍历,遍历的同时为各个元素赋值。所以第1轮循环,i的值为0,先执行的值为++i,后执行i++的值也为1,m[0].k和m[4].k的值都为1;接着第2轮循环,i的值为2,先执行的值为3,后执行i++的值也为3,m[l].k和m[3].k的值都为3;第3轮循环,p和q指向的都是m[2]元素,指针相同,循环结束,此时i的值为4,即m[2].k赋值为4。综上,程序输出:13431。本题答案为B选项。

16.B选项A定义了一个数组pt,它包含两个整型指针元素,所以pt是一个指针数组名,正确;选项B定义了一个数组指针Pt,pt指向一个数组,该数组包含两个整型元素,错误;选项C定义了一个函数,pt是函数指针,指向的函数没有参数,返回类型为整型,正确;选项D定义了一个函数,函数名为pt,函数返回整型指针类型,正确。故本题答案为B选项。

17.D本题考查两个知识点,按位异或左移把b左移2位化成二进制c=a(b<<2)=a^(000010<<2)=a^001000=0000001^O01000=9,故选择D。

18.C

19.C

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

21.b[i]=a[i]+a[i+1]b[i]=a[i]+a[i+1]解析:将数组a中元素a[i]与a[i+1]值相加后的值赋予数组b中元素b[i],即可实现将一个数组的前项和后项之和存入另一数组。

22.存储结构

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

24.1.0/(n*n)1.0/(n*n)解析:sam中累加的值是1+1/(2*2)+1/(3*3)+…+1//(n*n),如果写为1/(n*n),则会因为1和n都为整型,结果则为实型,将1变为1.0,结果则为实型。

25.>=1或>0i>=1或>0\r\ni解析:程序的外层for循环控制输出数据的行数,故第一处填“>=1”或“>0”;内层循环控制每行输出的个数。在内层for循环中,语句x=(j-1)*4+______;用于控制输出方阵中的具体数据,由于这些数据与其所在的行、列(j,i)具有x=(j-1)*4+i的关系,故第二处填i。

26.a=14a=14解析:逗号表达式的值是以逗号分隔的最后一个表达式的值。所以题目中的语句a=(3*5,a+4);就等价于a=a+4;。故本题输出结果是a=14。

27.k[7]*kk[7]*k解析:scanf()函数有两个参数,第—个参数是格式控制部分(格式控制部分是字符串,主要由“%”号和格式字符组成)第二个参数是一地址列表(地址列表是由多个地址组成,可以是变量的地址,也可以是字符串的首地址)。而第一个空格处位于scanf()函数的第二个参数处,所以,第一个空应该填地址k。printf()函数有两个参数,第一个参数是输出格式字符串(输出格式字符串是由控制输出格式的字符和非格式字符组成的,通常是字符常量。非格式字符作为输出数据的间隔,输出时原样输出)第二个参数为一输出表达式表(输出表达式表是由若干个需要计算和输出的表达式组成的,表达式之间用逗号分隔开)。而第二个空位于printf()函数的第二个参数处,所以应该填*K。

28.数组的首地址数组的首地址解析:在函数中,可以通过指针变量来引用调用函数中对应的数组元素,此操作是通过传递数组的首地址来实现的。

29.gaegae解析:本题定义了两个字符串数组a[],b[],字符型指针变量p1和p2,且分别指向字符串数组a和b,抽打for循环,当if(*(p1+k)==*(p2+k))条件为真,执行输出*(p1+k)对应的字符。即当k=0时,*(p1+k)对应的字符串数组a中的字符L,*(p2+k)对应的字符串数组b中字符P,因此if(*(p1+k)==*(p2+k))条件为假,不执行printf语句,依此类推,将字符串数组a和b中对应位置上的字符——比较,如果对应位置上的字符相同,则输出该字符。

30.132132解析:本题考核的知识点是for循环与switch语句的综合运用。主函数中用了一个for循环,for循环里嵌套了一个switch语句,for循环了三次,当i=9时,i/10=0,执行switch语句中case0分支,m和n的值各加1,变为1和1,然后遇到breake语句,退出switch语句;当i=10,i/10=1,执行switch语句中default分支,使k和n的值各加1,变为1和1,退出switch语句:当i=11时,i/10=1,执行switch语句中default分支,k和n的值各加1变,为2和3,退出switch语句,循环结束。故该空格处应该填132。

31.n%base[d]n%base[d]解析:程序中的字符数组b存储了十六进制16个数字的字符,整型数组c用于存储转换的十六进制数的各位数值。将整数n转换成它的各位十六进制数值,需采用除以16取余的方法,即求n除以16的余,得到它的十六进制的末位数,接着将n除以16,在n不等于0的情况下循环,顺序求出n的十六进制的倒数第一、第二、第三位数等。程序中变量base已预置16,所以在第一处填n%base。当n的十六进制数的倒数第一、第二、第三位等依次存放于数组c中后,就从最高位至最低位,参照数组c[i]的内容d(以其内容为下标),取十六进制数字符表中的字符b[d)输出,所以在第二处填[d]。

32.分析题目可知,程序中运用函数c=getchar()从标准输入设备读取下一个字符,而且是一行的字符(即没有换行),所以条件为(c=getchar())!='\\n'。\r\n\r\n

33.投影专门关系运算包括对单个关系进行垂直分解(投影操作)或水平分解(选择操作)和对多个关系的结合(连接操作)等。

34.模块模块解析:矩形表示的是模块,箭头表示的是模块间的调用关系。用带实心圆的箭头表示传递的是控制信息,用带空心圆的箭头表示传递的是数据。

35.1234theend1,2,3,4,theend解析:本题考查带参数的宏的定义。第1次循环,i=1时,调用PRINT(1),P(1)输出1;第2次循环,i=2时,调用PRINT(2),P(2)输出2:第3次循环,i=3时,调用PRINT(3),P(3)输出3:第4次循环,i=4时,调用PRINT(4),P(4)输出4,theend。

36.i<na[i]i<na[i]解析:在main函数中,randomize是为了生成随机种子,以便在使用rand函数时产生不同的数。通过循环用rand函数产生10个随机数。在fun函数中,要在n个数中找最大值,所以第一处填写i<n,每次将当前最大值与数组中的某元素比较,第二处填写a[i]。

37.k=k*ik=k*i解析:本题小通过for循环求s表达式中每一项的和,表达式“fac=fac/k;”求的是每一项的值,所以k的值应为n!,在求n!的时候,可以用上次循环阶乘的值乘i,就可以直接得此次n!,故木题填k=k*i。

38.k*kk\r\n*k解析:scanf()函数有两个参数,第一个参数是格式控制部分(格式控制部分是字符串,主要由%号和格式字符组成)第二个参数是一地址列表(地址列表是由多个地址组成,可以是变量的地址,也可以是字符串的首地址)。而第一个空位于scanf()函数的第二个参数处,所以,第一个空应该填地址k。printf()函数有两个参数,第一个参数是输出格式字符串(输出格式字符串是由控制输出格式的字符和非格式字符组成,通常是字符常量。非格式字符作为输出数据的间隔,输出时原样输出)第二个参数为一输出表达式表(输出表达式表是由若干个需要计算和输出的表达式组成的,表达式之间用逗号分隔开)。而第二个空位于printf()函数的第二个参数处,所以应该填*k。

39.存储或物理或存储结构或物理结构存储或物理或存储结构或物理结构解析:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。供队列循环使用。可知,循环队列应当是物理结构。

40.545\u3000\u30004解析:字符串处理函数strlen()返回的是字符数组的实际长度,不包括字符申结束标志‘\\\u30000’。而sizeof运算符则计算的是字符数组的总长度,包括串末尾的结束标志。

41.B解析:函数调用的一般形式为:函数名(形参表)若函数无形参,调用形式为:函数名(),当所调用的函数用于求出某个值时,函数的调用可作为表达式出现在允许表达式出现的任何地方,本题中调用语句的参数个数为2个。

42.D解析:栈是一种对操作的位置加以限制的线性表,它采用了顺序存储方式,属于线性结构。与队列不同,栈只允许在表的一端进行插入或删除操作,具有后进先出的特征。

43.D解析:选项A是一个合法的赋值表达式,但结尾没加分号,所以它不是一个赋值语句:选项B是一个逗号表达式,也因为结尾没有加分号而不是合法的赋值语句;选项C是一个算术表达式,虽然有分号,但这个表达式没有赋值操作,因此,也不是一条赋值语句。

44.B解析:本题中,structex是结构体类型名,ex-ample是结构体变量名。

45.A

46.A

47.D解析:解答本题时,先判断if语句,因为a=b+c不成立,则执行else语句。

48.D解析:运算符“%”的两侧都应该是整型数。另外,本题需要掌握的知识点是:x%=k,等价于x=x%k。注意:强制类型转换表达式。

49.D解析:C语言规定,对于二维数组,只可以省略第一个方括号中的常量表达式,而不能省略第二个方括号中的常量表达式:二维数组的一般定义格式是:类型说明符数组名[常量表达式][常量表达式]。

50.B解析:链表采用的是链式存储结构,它克服了顺序存储结构的缺点:它的结点空间可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,不需要移动数据元素。但是链式存储结构也有不足之处:①每个结点中的指针域需额外占用存储空间;②链式存储结构是一种非随机存储结构。

51.B解析:C语言中字符串是以'0'字符结束的,且strlen()函数计算的是'0'字符前的所有字符的个数。本题中strlen(st)应为5。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有投有内容。sizeof()函数是计算变量或数组的所分配到的内存空间的大小。所以本题的sizeof(st)为20。

52.C解析:软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念。①抽象是一种思维工具,就是把事物本质的共同特性抽出来而不考虑其他细节。②模块是指可以单独命名且可编址的元素。如高级语言中的过程、函数、子程序等。③信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。④模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。因此,本题的正确答案是C。

53.B解析:函数scanf()的调用形式是:scanf(格式字符串,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符:“输入项地址表”是要输入的变量的地址。若在格式符中插入了其他字符,则在输入时要求按一一对应的位置原样输入这些字符,其中的逗号也必须输入。

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

温馨提示

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

最新文档

评论

0/150

提交评论