2021年山东省菏泽市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第1页
2021年山东省菏泽市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第2页
2021年山东省菏泽市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第3页
2021年山东省菏泽市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第4页
2021年山东省菏泽市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

2021年山东省菏泽市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.

2.有以下程序:#include<stdio.h>main(){chara[5][10]={“China”,“beijing”,“very”,“welcome”,“you”};char*p[5];inti;for(i=3;i<5;i++){p[i]=*(a+i);printf(“%s”,p[i]);printf(“%c”,*p[i]);}}程序运行后的输出结果是()。

A.wwyyB.ChinaCbeijingbC.veryvwelcomewD.welcomewyouy

3.若有以下说明和定义:则对函数fun的正确调用语句是()。A.(*a)(&c);B.a=a(x);C.b=*b(x);D.fun(b);

4.要求通过while循环不断读入字符,当读入字母N时结束循环,若变量已正确定义,下列正确的程序段是()。

A.while((ch—getchar)!=N)printf("%c",ch);

B.while(oh=getchar!=N)printf("%c",ch);

C.while(ch=getchar==N)printf("%c",ch);

D.while((ch—getchar)==N)printf("%c",ch);

5.

6.能正确表示x>=3或者x<1的关系表达式是()。

A.x>=3orx<1B.x>=3|x<1C..x>=3||x<1D.x>=3||x<1

7.

8.下面程序的输出结果是______。#definea121constb=12;enumc{a1,a2};main(){printf("%d,%d,%d",sizeof(a),sizeof(b),sizeof(enumc));}

A.121,0,4B.2,2,2C.0,2,4D.0,2,2

9.数据的逻辑关系是指数据元素的()。

A.关联B.结构C.数据项D.存储方式

10.若有定义“intb[8],*p=b;”,则p+6表示()。

A.数组元素b[6]的值B.数组元素b[6]的地址C.数组元素b[7]的地址D.数组元素b[0]的值加上6

11.下列程序的执行结果是______。#include<stdio.h>unionun{inti;charc[2};};voidmain(){unionunx;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i);}

A.266B.11C.265D.138

12.利用E-R模型进行数据库的概念设计,可以分成3步:首先设计局部E-R模型,然后把各个局部E-R模型综合成一个全局的模型,最后对全局E-R模型进行(),得到最终的E-R模型。

A.简化B.结构化C.最小化D.优化

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

A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.执行算法所需要的存储空间

14.已知二叉树后序遍历序列是dabeC,中序遍历序列是debaC,它的前序遍历序列是()。

A.aChedB.deCabC.deabeD.Cedba

15.下面的排序算法中初始数据集的排列顺序对算法的性能无影响的是()A.插入排序B.堆排序C.冒泡排序D.快速排序

16.树的度为3,且有9个度为3的节点,5个度为1的节点,但没有度为2的节点。则该树中的叶子节点数为()。

A.18B.33C.19D.32

17.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指()

A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程

18.若文件指针fp已正确指向文件,ch为字符型变量,以下不能把字符输出到文件中的语句是()。

A.fget(f0,ch);

B.foutc(ch,fo);

C.fprinff(fp,”%c”,ch);

D.fwrite(&ch,sizeof(ch),1,fp);

19.数据结构若采用链式存储结构,要求内存中可用存储单元的地址()。

A.必须是连续的B.部分地址必须是连续的C.一定是不连续的D.连续不连续都可以

20.软件测试的目的是()。

A.评估软件可靠性B.发现并改正程序中的错误C.改正程序中的错误D.发现程序中的错误

二、2.填空题(20题)21.如果两个8位二进制数00010101与01000111相加,其结果用十进制表示为【】。

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

charstr[]="ABCD",*p=str;

printf("%d\n",*(p+3));

23.设有下列程序:

#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>代表回车符):CDEF<CR>BADEF<CR>QTHRG<CR>,则程序的输出结果是______。

24.表示条件;10<x<100或x<0的C语言表达式是【】。

25.在算法正确的前提下,评价一个算法的两个标准是【】。

26.十进制数111用八位二进制数表示为【】。

27.有以下程序片段,请问执行后的输出结果是【】。

intn=10;

while(n>7)

{printf("%d",n--);

}

28.有以下程序:

fun(inta,intb)

{if(a>b)return(a);

elsereturn(b);

}

main()

{intx=3,y=8,z=6,r;

r=fun(fun(x,y),2*z);

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

}

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

29.下面程序的运行结果是______。

typedefunionstudent

{

charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{

STUa[5];

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

}

30.关系代数是关系操作语言的一种传统表示方式,它以集合代数为基础,它的运算对象和运算结果均为()。

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

#include<stdio.h>

main()

{intx=3,y=2,z=1;

if(x<y)

if(y<0)z=0;

elsez+=1;

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

}

32.若有如下定义:

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

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

33.阅读下列程序,则程序的输出结果为【】。

#include"stdio.h"

structty

{intdata;

charc;};

main()

{structtya={30,′x′};

fun(a);

printf("%d%c",a.data,a.c);}

fun(structtyb)

{b.data=20;

b.c=′y′;}

34.已有定义:double*p;,请写出完整的语句,利用malloc函数使p指向一个双精度型的动态存储单元______。

35.x、y、x均为int型变量,描述“x、y和z中至少有两个为正数”的表达式是______。

36.若a是int型变量,则表达式(a=2*3,a*2),a+4的值为______。

37.阅读下面程序段,则执行后输出的结果是【】。

#include"stdio.h"

main()

{charfun(char,int);

chara=′A′;

intb=13;

a=fun(a,b);

putchar(a);}

charfun(chara,intb)

{chark;

k=a+b;

returnk;}

38.若x和a均是int型变量,则计算完x=(a=4,6*2)后的x值为______。

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

main()

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

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

for(j=i+1;j<3;j++)a[j][i]=0;

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

{for(j=0;j<3;j++)printf("%d",a[i][j]);

printf("\n");

}

}

40.下面的函数fun的功能是将形参x的值转换成二进制数,所得二进制数的每一位放在一维数组中返回,二进制的最低位放在下标为0的元素中,其他依次类推,请填空。

fun(intx,intb[])

{intk=0,r;

do{

r=x%【】;

b[k++]=r;

x/=【】;

}while(x);}

三、1.选择题(20题)41.以下程序中函数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,

42.设有如下关系表:RSTABCABCABC112313112223223313则下列操作中正确的是()。

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

43.若有“doublea;”,则正确的输入语句是()。

A.scanf("%lf",A);

B.scanf("%f",&A);

C.scanf("%lf",&A)

D.scanf("%le",&A);

44.有如下程序段:#include<stdio.h>#defineMax(a,b)a>b?a:bmain(){inta=5,b=6,c=4,d;d=c+Max(a,b);printf("%d",d);}其输出结果为______。

A.10B.5C.6D.编译错误

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

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

46.串的长度是()。

A.串中不同字符的个数B.串中不同字母的个数C.串中所含字符的个数且字符个数大于0D.串中所含字符的个数

47.以下程序的功能是:给r输入数据后计算半径为r的圆面积s。程序在编译时出错。main()/*Beginning*/{intr;floats;scanf("%d",&r);s=*π*r*r*r;printf("s=%f\n",s);}出错的原因是______。

A.注释语句书写位置错误

B.存放圆半径的变量不应该定义为整型

C.输出语句中格式描述符非法

D.计算圆面积的赋值语句中使用了非法变量

48.若变量已正确定义并赋值,以下符合C++语言语法的表达式是()。

A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b

49.程序中对fun()函数有如下说明void*fun();此说明的含义是______。

A.fun函数无返回值

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

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

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

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

A.程序就是软件

B.软件开发不受计算机系统的限制

C.软件既是逻辑实体,又是物理实体

D.软件是程序、数据与相关文档的集合

51.函数调用strcat(strcpy(str1,str2),str3)的功能是()。

A.将字符串str1复制到字符串str2中后再连接到字符串str3之后

B.将字符串str1连接到字符串str2之后再复制到字符串str3之后

C.将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后

D.将字符串str2连接到字符串str1之后再将字符串str1复制到字符串str3中

52.以下函数返回a所指数组中最小的值所在的下标值:fun(int*a,intn){inti,j=0,p;p=j;for(i=j;i<n;i++)If(a[i]<a[p])______,return(p);}在横线处应填入的是______。

A.i=pB.a[p]=a[i]C.p=jD.p=i

53.以下关于宏与函数的叙述中正确的是()

A.使用函数或宏命令对C的源程序都役有影响

B.函数具有类型,宏不具有类型

C.函数调用和带参的宏调用都是将实参的值传给形参

D.使用函数比使用宏运行速度快

54.下列程序的输出结果是()。#include<stdio.h>main(){inta=O,i;for(i=1;i<5;i++){swich(i){case0:case3:a+=1;case1:case2:a+=2;default:a+=3;}}printf("%d",a);}

A.19B.18C.6D.8

55.执行下面的程序后,a的值为main(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}}

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

56.以下对结构体类型变量的定义中,不正确的是()

A.typedefstructaa{intn;floatm;}AA;AAtdl;

B.#defineAAstructaaAA{intn;floatm;}tdl;

C.struct{intn;floatm;}aa;structaatdl;

D.struct{intn;floatm,}tdl;

57.下面程序的输出结果是#include<stdio.h>#include<string.h>main(){char*p1="abc",*p2="ABC",str[50]="xyz";strcpy(str+2,strcat(p1,p2));printf("%s\n",str);}

A.xyzabcABCB.zabcABCC.xyabcABCD.yzabcABC

58.软件调试的目的是______。

A.发现错误B.改正错误C.改善软件的性能D.挖掘软件的潜能

59.若有如下程序:voidsub(){inta,b;a=lO;b=20;printf("%d,%d\n",b,a);}main(){inta=1O,b=20;sub();printf("%d,%d\n"'a'b);}则程序运行后的输出结果是()。

A.10,20B.20,1020,10C.20,10D.10,2010,2020,10

60.有以下程序main(){inta[3][3],*p,i;p=&a[0][0];for(j=0;i<9;i++)p[i]=i;for(i=0;i<3;i++)printf("%d",a[1][i]);}程序运行后的输出结果是

A.12B.123C.234D.345

四、选择题(20题)61.下列选项中,能够满足“若字符串sl等于字符串s2,则执行sT”要求的是()。

A.

B.

C.

62.有以下程序:

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

A.32B.12C.21D.22

63.(58)在数据流图(DFD)中,带有名字的箭头表示______。

A.制程序的执行顺序

B.模块之间的调用关系

C.数据的流向

D.程序的组成成分

64.

65.若有以下定义:floatx;inta,b,c=2;,则正确的switch语句是

66.有以下程序:

#includc<stdio.h>

voidfun(int*p)

{printf("%d\n",p[5]);}

main()

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

fun(&a[3]);

}

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

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

67.

68.

69.有以下程序

#include"stdio.h"

voidfun(int*a,int*b,intc)

{c=*a+*b;}

main()

{inta[2]={6,9},c=0;

fun(a,a+1,&c);

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

}

程序输出的结果是

A.6B.9

C.0D.15

70.有以下程序:

main()

{intX,i;

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

{x=i;

if(X%2=O)

if(x%3=O)

if(X%7=0)

printf("%d,i)";

}

}

输出结果是()。

A.28

B.27

C.42

D.41

71.设有关系R和S,关系代数表达式为R一(R—S)表示的是()。

A.R∩SB.R—SC.RUSD.R÷S

72.

73.软件生命周期是指()。A.软件产品从提出、实现、使用维护到停止使用退役的过程

B.软件从需求分析、设计、实现到测试完成的过程

C.软件的开发过程

D.软件的运行维护过程

74.

75.

76.

77.

78.

79.设有定义:“inta;floatb;”,执行“scanf("%2d%f",&a,&b);”语句时,若从键盘输入876543.0<回车>,a和b的值分别是()。A.A.876和543.000000B.87和6.000000

C.87和6543.000000

D.76和543.000000

80.以下程序执行后sum的值是()。main{inti,sum;for(i=1;i<6;i++)sum+=i:printf("1%d\n",sum):}A.15B.14C.不确定D.0

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

六、程序设计题(1题)82.编程计算下列表达式:s=n!(n从键盘上输入)

参考答案

1.B

2.Dmain函数定义一个二维字符数组a,它包含5个字符串,每个字符串存放在一个长度为10的一维数组中。指针数组P包含5个字符指针元素。for循环中,每次将*(a+i)赋给P[i],再输出P[i]和*P[i]。由于*(a+i)等价于a[i],因此每次都是将下标为i的字符串首地址赋给p[i],再输出该字符串和该字符串的首字符。i=3时,输出字符串“welcome”和首字符“w”;i=4时,输出字符串“you”和首字符“y”。综上,输出结果为welcomewyouy。故本题答案为D选项。

3.A题干中,函数fun接收一个整型指针参数,返回值为int类型。main函数首先定义一个函数指针a,将函数fun的地址赋给a,所以a是指向函数fun的指针,可以通过a调用函数fun。选项A中,通过a调用函数fun,可以使用(*a),接收的参数是整型变量c的地址,正确;选项B中,参数x是一个数组,错误;选项C中,调用b函数,由于程序没有给出函数b的定义,因此这里调用b是错误的,而且函数b是没有参数的,这里调用b的时候传入了参数,所以C错误;选项D中,由于b是一个函数,不能作为整型指针变量传给fun函数,因此D错误。本题答案为A选项。

4.Awhile循环的执行过程如下:①计算while后面圆括号中表达式的值。当值为非0时,执行步骤②;当值为0时,执行步骤④。②执行循环体一次。③转去执行步骤①。④退出循环。在选项A中,表达式(ch=get-char)!=N表示输入的字符不等于N,如果这个条件表达式成立,则执行循环体,打印输出输入的字符。如果这个条件表达式不成立,即输入的字符等于N,则退出循环。所以选项A为正确答案。

5.B

6.C

7.A

8.B解析:sizeof函数是取变量所占的存储空间的字节数,标识a代表常量121;constb=12;,其中数据类型可以缺省,默认为整型;enumc{a1,a2};定义了—个枚举类型enumc,a1,a2为枚举元素,在C编译时,对枚举元素按常量处理,它们的值按定义顺序依次为0,1。因此它们的字节数均为2,2,2。

9.A

10.B指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。所以题中“P+6”指的是将指针向后移动了6个存储单元,即指向uE63,存放的是b[6]的地址。

11.A解析:由于本题定义的是共用体,所以成员表列中的整型变量x与字符数组c共占用同一个存储单元,且此存储单元为2个字节,通常c[0]位于低字节,c[1]位于高字节,所以x.i的值为266。

12.D解析:在概念设计中按照模块的划分画出每个模块的E-R图,然后把这些图合成一张E-R图作为全局模型,最后应该对全局E-R图进行优化,看看是否有重复和不合理的地方。不能只是进行简单的合并。

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

14.D二叉树的遍历有3种:前序、中序和后序。①前序遍历访问根结点,然后按左右顺序遍历子结点;②中序首先遍历左子树,然后访问根结点,最后遍历右子树;③后序遍历首先遍历左子树,然后遍历右子树,最后访问根结点。本题根据后序和中序遍历的结果可以得出二叉树的结构,然后再对其进行前序遍历,正确答案选项为D。

15.B

16.C设叶子结点数为〃,则该树的结点数为n+9+5=n+\n14,根据树中的结点数=树中所有结点的度之和+1,得9×3+0×2+5×1+n×0+1=n+14,则n=19。本题选择C选项。

17.B软件设计包括软件的结构设计、数据接口设计和过程设计。其中软件结构设计主要包括系统由哪些子系统构成,以及这些子系统之间的关系是怎样的,并将这些内容编写成文档;数据接口设计的任务是为每个子系统设计其与其他子系统间的接口,并编写成文档,这个接口要是一个无二义的接口,不需要子系统的操作知识就可以使用;过程设计是指系统结构部件转换成软件的过程描述。

18.A函数fgete()从文件读入一个字符到指定变量。函数fputc()将指定字符写入审文件中,函数fprinff(),fwrite()均是写入文件操作函数。因此选项B,c。D错误。答案为A选项。

19.D

20.D软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能,也不是为了评估软件或改正错误,因此本题答案为D)。

21.92

22.6868解析:本题考查如何用指针引用数组元素。本题先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],*(p+3)指的是字符“D”,输出时是以“%d”格式输出的,即输出其相应ASCII码值68。

23.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。

24.(x>10&&x<100)||x<0

25.时间复杂度和空间复杂度时间复杂度和空间复杂度

26.11011111101111解析:本题通过除2取余法即可求出十进制数111所对应的二进制数1101111。

27.1098

28.1212解析:函数fun的功能是求两个数当中的最大值。语句r=fun(fun(x,y),2*z)的执行过程为:首先计算fun(x,y),因x=3、y=8,所以结果为8;然后计算fun(8,2,*z),即计算fun(8,12),所以r=12。

29.8080解析:本题考查的知识点是共用体数组变量所占内存的长度。数组a是共用体变量,共用体类型变量所占的内存长度为最大成员的长度,即单精度数组的长度,为4×4=16,因此,数组a所占的内存长度为5×16=80,所以最后输出的s的值为80。

30.关系关系

31.11解析:ifelse语句的功能是:若表达式的值为真,执行语句1,并跳过其他语句,执行ifelse语句的下一条语句,若表达式的值为假,跳过语句1,执行语句2,依次往下判断。题中,x=3,y=2,第一个if语句的控制条件x<y就不满足,又没有与之配对的else语句,所以直接执行printf语句,在整个过程中变量z的值都没发生变化。

32.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。

33.30x30x解析:本题的参数传递属于值传递,所以被调用函数内不能改变调用函数中的数据。

34.p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);解析:malloc()函数只有一个参数,该参数指定了需要分配多少字节的内存。然后将分配好的内存块的首地址作为void*(未知类型指针)返回.故标准的调用形式应该写成:

p(double*)malloc(sizeof(double));

35.((x>0)&&<y>0))‖(x>0)&&(z>0)‖y>0)&&(z>0))((x>0)&&<y>0))‖(x>0)&&(z>0)‖y>0)&&(z>0))解析:题目要求“x、y和z中至少有两个为正数”,即x、y和x这3个数中必须有两个是正数,且这3个数中的哪两个数都有可能是正数,所以它们之间是或的关系。

36.此题考查逗号表达式。逗号表达式的值是最后一个表达式的值,所以本题的返回值是a+4。前面已经给a赋值6,所以返回值a+4=6+4=10。

37.NN解析:函数说明语句中的类型名必须与函数返回值的类型一致。本题实现的是在字符'A'的ASCII码值上加上一个常数,使之变成另一个ASCII码值,从而输出字符。

38.1212解析:x=(表达式1,表达式2,…)的形式,结果为最后一个表达式的值:x=(a=4,6*2)=2*6=12。

39.123\n056\n009123\\n056\\n009解析:数组是用于按顺序存储同类型数据的数据结构,如果有一个一维数组,它的每一个元素是类型相同的一维数组,就形成了一个二维数组。在内存中数组的元素是连续顺序存放的,对;维数组来说,先存放第一行,再存放第;行,…,因为每一行都是其广义一维数组的元素,并且在给出全部数组元素的初值后,二维数组的定义中可以将第一维的下标省略。本题中,定义了一个元素类型为整型的二维数组敢a[][3]={1,2,3,4,5,6,7,8,9),它相当于一个3*3的矩阵,for(i=0;i<3:i++)for(j=i+1;j<3;j++)a[j][i]=0;将行下标i大于列下标j的元素s[1][0],a[2][0],a[2][1]赋值为0,最后for(j=0;j<3;j++)prinff('%n',a[i][j]);printf('\\n');进行换行输出,所以输出结果为

123

056

009

40.222\r\n2解析:深刻理解+进制转化为二进制的方法,即取余法;数组名作为实参,在函数内部可以直接修改调用函数中定义的数组的值。注意:掌握两个数据进行交换的算法原理。

41.C解析:程序中sort函数的功能是对数组中的数据进行从大到小的排序。主函数main中调用函数sort(&aa[3],51;,使得数组aa中从第4个元素开始的5个元素进行从大到小的排序,数组aa中的元素变为:1,2,3,8,7,6,5,4,9,10。并输出这些元素。

42.B解析:并(∪):关系R和S具有相同的关系模式,R和S的并是由属于R或属于S的元组构成的集合。

43.D解析:函数scanf()的调用形式是:scanf(格式字符串,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的地址。本题中定义变量a为双精度型变量,双精度变量的格式符为“le”;变量的地址用取地址符“&”加变量名表示,如变量a的地址为“&a”。

44.B解析:在C语言中,宏定义是直接替换的,所以在c+a>b?a:b这个条件表达式中,c+a>b为真,所以用a的值作为整个表达式的值,而a的值为5,所以整个表达式的值为5。

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

46.D解析:串的长度是指串中字符的个数,且其字符个数可以为0。

47.D解析:π必须用一个符号名来代表,而且这个符号名必须在程序中进行指定,否则计算机将不能识别。

48.B解析:a=b=c+2实际上相当于a=(b=c+2),进而可分解为两个表达式:b=c+2和a=b。注意:选项A)中包含一个不合法的运算符“:=”;选项C)应改为(int)18.5%3;选项D)可理解为两个表达式:a+7=c+b和a=a+7,其中第一个是错的,因为C++语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。注意:C++语言赋值语句的运用,

49.C解析:C语言中函数的定义分为有参函数的定义和无参函数的定义。无参函数的定义形式为:

类型标识符函数名()

{说明部分

语句

}

有参函数的定义有两种形式:

类型标识符函数名(形式参数列表)

形式参数说明

{说明部分

语句

}

类型标识符函数名(类型名形参1,类型名形参2,…)

{说明部分

语句

}

其中函数名为用户定义的C语言的合法标识符,其前面的类型标识符用来说明函数值的类型,可以是C允许的任何类型,如int、char、float、double和指针类型等。当函数值为整型时类型标识符可以省略,如果函数没有返回值,类型标识符可以是void型。当函数的形参多于一个时,各个形参之间用逗号分隔。

50.D\r\n软件是与计算机操作相关的计算机程序、规程、规则,以及可能有的文件、文档及数据;软件开发要受到计算机系统的限制;软件是一个逻辑实体,不是物理实体,软件具有抽象性。因此选项D正确。

51.C解析:strcat(s1,s2)是把s2字符串连接到s1字符串末尾,strcpy(s1,s2)是把s2字符串复制给s1字符串,要保证s1能容纳下连接或复制后的字符串。

52.D解析:该程序先判断a[i]<a[p],如果条件为真,则a[i]比当前设定的最小值小(p保留的当前最小元素的下标),那么将i赋给p,即将比较过的最小元素下标保留在p中,作为下面判断的标准。

53.B

54.A解析:本题考查switch语句。当i=1时,执行case1,因为没有遇到break语句,所以依次往下运行,a=a+2=2,a=a+3=5;当i=2时,执行case2,因为没有遇到break语句,所以依次柱下运行,a=a+2=7,a=a+3=10:当i=3时,执行case3,a=a+1=11,因为没有遇到break语句,所以依次往下运行,a=a+2=13,a=a+3=16;当i=4时,执行default,a=a+3=19,结束循环。

55.B解析:本题主要考查了循环语句中break和continue语句的使用。break语句的作用是结束本层循环,而continue语句的作用是结束本次循环直接进入到下次循环。

56.C解析:定义结构体类型的变量有几种的方法如下:

①定义结构体类型的同时,定义结构体类型的变量,如下面的定义中在定义结构体类型aa的同时定义了该类型的变量tdl。上述B)项中将宏名AA用宏体structaa替换进去后,与该定义形式一样,因此是正确的。这一定义形式中,结构体类型名明是可以省略的,因此,D)项也是正确的。

structaa

{...

}tdl;

②先定义结构体类型,然后再定义结构体类型的变量,形式如下:

structaa

{

};

structaatdl;

这种定义形式也可演变为,先用类型定义语句typedef将该结构体类型定义成一个类型名AA,然后直接用该类型名AA去定义一个变量(这时不再需要使用关键字struct了)。这就是A)项的形式。

57.C解析:本题考查的重点是拷贝字符串——使用strcpy()函数,该函数的调用方式是:strcpy(字符数组,字符串)其中“字符串”可以是字符串常量,也可以是字符数组。函数的功能是:将“字符串”完整地复制到“字符数组”中,字符数组中原有内容被覆盖。

使用该函数时注意:①字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志‘\\0’一起复制。②不能用赋值运算符“=”将一个字符串直接赋值给一个字符数组,只能用strcpy()函数来处理。

另外,本题还考查连接字符串的strcat()函数,其调用方式是:strcat(字符数组,字符串)

功能是把“字符串”连接到“字符数组”中的字符串尾端,并存储于“字符数组”中。“字符数组”中原来的结束标志,被“字符串”的第一个字符覆盖,而“字符串”在操作中未被修改。

使用该函数时注意:①由于没有边界检查,编程者要注意保证“字符数组”定义得足够大,以便容纳连接后的目标字符串;否则,会因长度不够而产生问题。③连接前两个字符串都有结束标志‘\\0’,连接后“字符数组”中存储的字符串的结束标志‘\\0’被舍弃,只在目标串的最后保留一个‘\\0’。

58.B解析:在对程序进行测试时会发现错误,这就要进行程序调试(排错)。程序调试活动由三部分组成:一是错误定位,根据错误的外部表现形式,确定程序中出错的位置,找出错误的内在原因;二是对程序进行修改,排除这个错误;三是进行回归测试,防止引进新的错误。所以程序调试的目的就是诊断和改正程序中的错误。软件调试不能改善软件的性能,也不能挖掘软件的潜能。

59.C解析:程序首先调用sub()子函数,在子函数中输出子函数自己的变量b和a(20,10),然后主函数再输出主函数中的变量a和b(10,20)。故应该选择C。

60.D解析:本题考查二维数组和指针,首先使指针p指向二维数组的首地址,通过第一个for循环对一维数组p赋值,其实也就是给二维数组a赋值,a[0][0]~a[2][2]分别赋以0~8,所以a[1][0],a[1][1],a[1][2]分别为3,4,5。

61.A函数strcmp(s2,s1)的作用是比较字符串的大小,函数strcpy(s1,s2)的作用是进行字符串复制,所以选择A)选项。B)和D)都是比较的字符串s1与s2的地址是否一致而不是比较字符串内容是

温馨提示

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

评论

0/150

提交评论