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

下载本文档

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

文档简介

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

一、单选题(20题)1.有以下函数:

此函数的功能是()。A.比较p和q所指字符串的大小

B.计算p和q所指字符串的长度差

C.将q所指字符串连接到P所指字符串后面

D.将q所指字符串复制到p所指字符串中

2.下列关于线性链表的叙述中,正确的是()A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致

B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续

C.进行出入与删除时,不需要移动表中的元素

D.以上三种说法都不催

3.下面叙述中错误的是()。

A.软件测试的目的是发现错误并改正错误

B.对被调试的程序进行“错误定位”是程序调试的必要步骤

C.程序调试通常也称为Debug

D.软件测试应严格执行测试计划,排除测试的随意性

4.下列程序的执行结果是()。#include<stdioh>main{inta,b,c;a=b=2,c=I;c=(a++)-1;printf("%d,0Ad",a,c);c+=-a+++(++b);printf("%d,%d",a,c);)A.3,14,1B.3,14,2C.2,04,1D.2,14,1

5.字符串通常采用的两种存储方式是()A.散列存储和索引存储B.索引存储和链式存储C.顺序存储和链式存储D.散列存储和顺序存储

6.若有定义语句:“charsE10]="1234567\0\0";”,则strlen(s)的值是()。A.A.7B.8C.9D.10

7.二维数组A的元素都是6个字符组成的串,行下标i的范围从0到8,列下标j的范圈从1到10,则存放A至少需要()个字节。

A.90B.180C.240D.270

8.有以下程序:voidsum(inta[]){a[0]=a[-1]+a[1];}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};sum(&a[2]);printf("%d\n",a[2]);}程序运行后的输出结果是()。

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

9.

10.设计一个判别表达式中左、右括号是否配对出现的算法,采用()数据结构最佳。A.线性表的顺序存储结构B.队列C.线性表的链式存储结构D.栈

11.一个有7个顶点的完全三部图,至少有存在几条边()

A.10B.11C.15D.16

12.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printS(”%d,”,k);k=fun(j,m);printf(”%d\n”,k);)执行后的输出结果是()。A.5,5B.5,11C.11,11D.11,5

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

A.结构体变量中的成员可以是简单变量、数组或指针变量

B.不同结构体的成员名不能相同

C.结构体定义时,其成员的数据类型可以是本结构体类型

D.结构体定义时,类型不同的成员项之间可以用逗号隔开

14.设在C语言中,float类型数据占4个字节,则double类型数据占()个字节。

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

15.

下列程序的输出结果是()。

main

{inta,b,d=25;

a=d/10%9;

b=a&&(一1);

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

A.6,1B.2,1C.6,0D.2,0

16.软件详细设计生产的图如右图:该图是()。

A.N—S图B.PAD图C.程序流程图D.E—R图

17.对一个关系投影操作以后,新关系的元组个数______原来关系的元组个数。

A.小于B.小于或等于C.等于D.大于

18.下列对于软件测试的描述中正确的是()。

A.软件测试的目的是证明程序是否正确

B.软件测试的目的是使程序运行结果正确

C.软件测试的目的是尽可能多地发现程序中的错误

D.软件测试的目的是使程序符合结构化原则

19.

20.C语言的逻辑表达式在特定情况下会产生“短路”现象。若有逻辑表达式“x++&&y++,”则以下叙述中正确的是()。

A.若x的值为0,则“y++”操作被“短路”,y值不变

B.若x的值为1,则“y++”操作被“短路”,y值不变

C.若y的值为0,则“&&”运算被“短路”,y值不变

D.若y或x的值为0,则表达式值为0,“x++”和“y++”均不执行

二、2.填空题(20题)21.以下程序运行后的输出结果是______。

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

}

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

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

main()

{intj,a[]={1,2,3,4,5,6,7},i=5;

for(j=3;j>1;j--)

{switch(j)

{case1:

case2:P(a[i++]);break;

case3:P(a[--i]);

}

}

}

23.若a的值为1,则表达式!a‖++a的值是______。

24.若有以下程序

intf(intx,inty)

{return(y-x)*x;}

main()

{inta=3,b=4,c=5,d;

d=f(f(3,4),f(3,5));

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

}

执行后输出结果是【】。

25.在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。常见的数据模型有3种,它们分别是层次模型、网状模型和()。

26.树中度为零的结点称为______。

27.下面程序的功能是两个整数进行交换,请填空。

sub(int*x,int*y)

{【】

z=*x;*x=*y;*y=z;

return;}

main()

{intm,n,*t1,*t2;

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

t1=&m;t2=&n;

【】

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

28.若有如下程序:

main()

{intx=5,y,*t;t=&x;

y=++(*t);

printf("%d,%d",x,y);}

则程序执行后的x值为【】,y的值为【】。

29.数据模型是用来描述数据库的结构和语义的,数据模型有概念数据模型和结构数据模型两类,E-R模型是【】

30.设有下列的程序段;

charstr[]="Hello";

char*ptr;

ptr=str;

执行上面的程序段后,*(ptr+5)的值为______。

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

#defineLEN5

inta[LEN],k;

main()

{fun1();

fun2();

}

fun1()

{for(k=0;k<LEN;k++)

a[k]=k;

}

fun2()

{intk;

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

printf("%d",*(a+k));

}

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

#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;}

33.若输入字符串:abcde,则以下while循环体将执行【】次。

while((ch=getchar())=='e')printf("*");

34.以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,若一维数组中的数据是:

2223445666677899101010

删除后,数组中的内容应该是:

2345678910。

请填空。

#include<stdio.h>

#defineN80

infun(inta[],intn)

{inti,j=1;

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

if(a[j-1]【】a[i])

a[j++]=a[i];

【】;

}

main()

{inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;

printf("Theoriginaldata:\n");

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

n=fun(a,n);

printf("\nThedataafterdeleted:\n");

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

}

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

main()

{chara[]="ABCDEFG";

char*cp=&a[7];

while(--cp>&a[0])putchar(*cp);

}

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

#include<string.h>

main()

{charch[]="abc",x[3][4];inti;

for(i=0;i<3;i++)strcpy(x[i],ch);

for(i=0;i<3;i++)printf("%s",&x[i][i]);

printf("\n");

}

37.以下程序用于判断a、b、c能否构成三角形,若能,输出YES,否则输出NO。当给a、b、c输入三角形三条边长时,确定a、b、c能构成三角形的条件是需同时满足三个条件:a+b>c,a+c>b,b+c>a。请填空。

main()

{floata,b,c;

scanf("%f%f%f",&a,&b,&c);

if(【】)printf("YES\n");/*abc能构成三角形*/

elseprintf("NO\n");/*abc不能构成三角形*/

}

38.若有以下程序

main()

{inta=4,b=3,c=5,t=0;

if(a<b)t=a;a=b;b=t;

if(a<c)t=a;a=c;c=t;

printf("%d%d%dln",a,b,c);

}

执行后输出结果为______。

39.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于______。

40.下面程序的功能是:计算1~10之间的奇数之和与偶数之和,请填空。

#include<stdio.h>

main()

{inta,b,c,i;

a=c=0;

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

{a+=i;

【】;

c+=b;}

printf("偶数之和=%d\n",a);

printf("奇数之和=%d\n",c-11);}

三、1.选择题(20题)41.以下对C语言函数的有关描述中,正确的是

A.在C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参

B.C函数既可以嵌套定义又可以递归调用

C.函数必须有返回值,否则不能使用函数

D.函数必须有返回值,返回值类型不定

42.有以下函数定义:voidfun(intn,doublex){......}若以下选项中的变量都已正确定义并赋值,则对函数fun正确调用语句是______。

A.fun(inty,doublem);

B.k=fun(10,12.5);

C.fun(x,n);

D.voidfun(n,x);

43.设有下列定义:structsk{intm;floatx;}data,*q;若要使q指向data中的m域,正确的赋值语句是()。

A.q=&data.m;

B.*q=data.m;

C.q=(structsk*)&data.m;

D.q=(structsk*)data.m;

44.下列程序执行后的输出结果是:main(){chararr[2][4];strcpy(arr'"you");strcpy(arr[1],"me");arr[0][3]='&';printf("%s\n",arr);}程序的输出结果是()。

A.you&meB.meC.youD.err

45.以下不能正确计算代数式sin2()值的C语言表达式是()。

A.1/3*sin(1/2)*sin(1/2)

B.sin(0.5)*sin(0.5)/3

C.pow(sin(0.5),2)/3

D.1/3.0*pow(sin(1.0/2),2)

46.具有3个结点的二叉树有

A.2种形态B.4种形态C.7种形态D.5种形态

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

A.在模块化程序设计中,一个模块应该尽量多的包括与其他模块联系的信息

B.在自顶向下、逐步细化的设计过程中,首先应设计解决问题的第一个细节

C.在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则

D.在程序设计过程中,不能同时采用结构化程序设计方法与模块化程序设计方法

48.有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case0:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}程序运行后的输出结果是______。

A.22111B.21021C.122D.12

49.下面程序的输出结果是()。#include<stdio.h>main(){chara[]={'a','b','c','d','f','g'},*p;p=a;printf("%c\n",*p+4);}

A.aB.bC.eD.f

50.以下程序的输出结果是()。#include<stdio.h>voidreverse(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}main(){intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;reverse(b,8);for(i=6;i<10;i++)s+=b[i];printf("%d\n",s);}

A.22B.10C.34D.30

51.有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是()

A.*p+9B.*(p+8)C.*p+=9D.p+8

52.设函数fun的定义形式为voidfun(charch,floatx){…}则以下对函九fun的调节器用语句中,正确是

A.fun("abc",3.0);

B.t=fun('D',16.5);

C.fun('65',2.8):

D.fun(32,32);

53.6.C语言中下列叙述正确的是()

A.不能使用do-while语句构成的循环

B.do-while语句构成的循环,必须用break语句才能退出

C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环

D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环

54.C语言中,组成数据文件的成分是()。A.A.记录

B.数据行

C.数据块

D.字符(字节)序列

55.有以下程序段:main(){inta=5,*b,**c;c=&b;b=&a;┆}程序在执行了c=&b;b=&a;语句后,表达式**c的值是()。

A.变量a的地址B.变量b中的值C.变量a中的值D.变量b的地址

56.按照“先进后出”原则组织数据的数据结构是()。

A.队列B.栈C.双向链表D.二叉树

57.fwrite函数的一般调用形式是

A.fwrite(buffer,count,size,fp);

B.fwrite(fP,size,count,buffer);

C.fwrite(fp,count,size,buffer);

D.fwrite(buffer,size,count,fp);

58.设有以下说明语句:structstu{inta;floatb;}stutype;则下面叙述不正确的是()。

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

B.structstu是用户定义的结构体类型

C.stutype是用户定义的结构体类型名

D.a和b都是结构体成员名

59.在C语言中,运算对象必须是整型数的运算符是()。

A.%B.\C.%和\D.**

60.有如下程序main(){floatx=2.0,y;if(x<0.0)y=0.0;elseif(x<10.0)y=1.0/x;elsey=1.0;printf("%f\n",y);}该程序输出结果是______。

A.0B.0.25C.0.5D.1

四、选择题(20题)61.以下四个程序中。完全正确的县()

62.软件生命周期中的活动不包括()

A.软件维护B.市场调研C.软件测试D.需求分析

63.

64.有以下程序:

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

A.4B.10C.14D.6

65.有如下程序段

#include"stdio.h"

#include"string.h"

#defineN10

#defineM10

char*find(char(*a)[M],intn)

{char*q;inti;

q=a[0];

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

if(strcmp(a[i],q)<0)q=a[i];

returnq;}

main()

{chars[N][M]={"tomeetme","you","and","he","china"};

char*p;

intn=5;

p=find(s,n);

puts(p);}

则执行后输出的结果为A.A.heB.andC.youD.tomeetme

66.

67.执行语句X=(a=10,b=a--.后,x、a、b的值依次为()。

A.10,10,9

B.10,9,9

C.9,10,9

D.10,9,10

68.

69.数据库、数据库系统和数据库管理系统之间的关系是()。

A.数据库包括数据库系统和数据库管理系统

B.数据库系统包括数据库和数据库管理系统

C.数据库管理系统包括数据库和数据库系统

D.三者没有明显的包含关系

70.

71.

有以下程序:

main

{inti,j;

for(j=10;j<11;j++)

{for(i=9;i<j;i++)

if(!(j%i))break;

if(i==j-1)

printf("%d",j);

}

}

输出结果是()。

A.11B.10C.9D.1011

72.(70)需求分析阶段的任务是确定()

A.软件开发方法

B.软件开发工具

C.软件开发费用

D.软件系统功能

73.

74.以下不能正确定义二维数组的选项是A.inta[2][2]={{1},{2}};

B.inta[][2]={1,2,3,4};

C.inta[2][2]={{1},2,3};

D.inta[2][]={{1,2},{3,4}};

75.有如下程序

main()

{

inta=2,b=-1,c=2;

if(a<b)c=1;

if(b<0)c=0;

elsec++;

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

}

该程序的输出结果是

A.0B.1

C.2D.3

76.有以下程序

floatfun(intx,inty)

{return(x+y);}

main()

{inta=2,b=5,c=8;

printf("%3.0f\n",fun((int)fun(a+c,b),a-c));

}

程序的运行结果是

A.9B.编译出错

C.21D.9.0

77.

78.有以下程序:

#include<stdio.h>

intf(intm)

{staticintn=0;

n+=m;

returnn;

}

main()

{intn=0;

printf("%d,"f(++n));

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

}

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

A.1,2

B.1,1

C.2,3

D.3,3

79.下列定义数组的语句中,正确的是()。

80.以下符号C语言语法的实型常量是()。

A)1.2E0.5B)3.14159E

C)5E-3D)E15

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:从字符串str中,删除所有大写字母F。请修改程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>voidproc(char*str){inti,j;//****found****for(i=j=0;str[i]一0;i++)if(str[i]!=F)//****found****str[i]=str[i];str[j]=\0;}voidmain{charstr[80];printf("\nEnterastring:");gets(str);printf("Theoriginalstring:");puts(str);proc(str);printf("Thestringafterdeleted:");puts(str);printf("\n\n");}

六、程序设计题(1题)82.请编写函数proc,其功能是将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。例如,当a=25,b=43,实际输入时个数之间以Enter键分隔,调用该函数后,c=3452。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.A函数fun接收两个整型指针变量作为参数,通过while循环,比较p和q对应位上的各个字符,如果字符相同,继续向后比较;否则循环结束,返回第1次对应不同字符的ASCII差值。所以函数fun是对p和q指向的字符串进行比较,其大小是按第1个对应位置上不同字符的ASCII值来比较的。本题答案为A选项。

2.C

试题2分析

结点的存储顺序和逻辑顺序不一定一致,存储空间也不一定连续。插入和删除元素的时候,不需要移动表中的元素。

试题2答案

C

3.A软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,所以选项A错误。程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通常称为Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。故答案为A选项。

4.A本题主要考查自加减运算符(++,--)的使用。①如果作为前缀变量“++a,--a”,在使用a之前,先使a的值加1或者减1,再使用表达式的值参与运算;②后缀变量“a++,a--”,先使用表达式的值参与运算,在使用a之后,再使i的值加1或者减1。在本题中计算表达式c=(a++)-1时先使用a的值进行计算,结果为c=2-1=1,然后将a的值加1,即执行完此句后l3-的值是3;表达式c+=-a+++(++b)也可写成C=c+(一a++)+(++b),c=1+(一3)+3=1,此时a=4,b=3。

5.C

6.A"\0"表示空字符,strlen函数求得的是不包括字符串结束符'\0'的长度。故选A。

7.A

8.A解析:在主函数main()中,语句“sum(&a[2]);”把数组元素a[0]的地址传递给了sun函数的形参a[],使得sum函数中的“(a+0)”为主函数中a[2]的地址,所以a[-1]的值为主函数中a[1]的值;a[1]的值为主函数中a[3]的伉,故函数sum中a[0]=2+4=6,由于此函数中的a是指向主函数中的a[2],所以a[2]的值为6。

9.B

10.D

11.B

12.B子函数fun(intx,inty),将变量m和i声明为局部静态变量,因此第l次调用主函数后,局部静态变量m和i的值为5和3,第l次函数调用结束时,它们的值不释放保持不变,所以第2次调用时,局部静态变量m和i的初始值分别为5和3,即在执行“i+=m+1”时,i的值为9,因此最终m的值为11。

13.A结构体变量中的成员可以是简单变量、数组、指针变量或者结构体变量,选项A正确;不同结构体成员名可以相同,选项B错误;结构体定义时,其成员的数据类型不能是本结构体类型,选项C错误;结构体定义时,类型不同的成员项之间使用分号隔开,选项D错误。本题答案为A选项。

14.C

\n在C语言中各种数据类型在内存中所占的字节数与机器的位数有关,16位机中(也就是在标准c中),若int类型数据占2个字节,则float类型数据占4个字节,double类型数据占8个字节。

\n

15.B

\n当逻辑运算符“&&”两边的值是非零时,逻辑表达式的值为真(即为1)。所以b=2&&(-1)=1,2%9=2,故a=2,故先算a/10=25/10=2。

\n

16.CN—s图提出了用方框图来代替传统的程序流程图,所以A不对。PAD图是问题分析图,它是继承程序流程图和方框图之后提出的又一种主要用于描述软件详细设计的图形表示工具,所以8不对。E—R图是数据库中的用于表示E—R模型的图示工具,所以D不对。根据图中所示表示方法是进行软件详细设计时使用的程序流程图。

17.B解析:投影操作是从关系中选择某些列,投影后消去了某些属性,就可能出现重复元组,根据关系的性质,应消去这些完全相同的元组。这样使得新关系的元组数小于或等于原来的元组数。

18.C解析:关于软件测试的目的,GrenfordJ.Myers在《TheArtofSoftwareTesting》一书中给出了深刻的阐述:软件测试是为了发现错误而执行程序的过程;一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。整体来说,软件测试的目的就是尽可能多地发现程序中的错误。本题答案为C。

19.D

20.A题干中,“x++&&y++”属于逻辑与表达式。仅当“x++”和“y++”的结果为真,整个逻辑表达式的结果才为真,否则整个表达式的结果为假。当“x++”的结果为0时,“y”就会被短路,即不再执行“y++”表达式,整个表达式的结果为假。所以当x的值为0时,“x”的结果也是0,“y”操作被“短路”,y值不变。故本题答案为A选项。

21.gaegae解析:主函数中定义了字符数组a和b,其初值分别为Language和Programe,然后定义了两个指针变量p1和p2,并让它们指向a和b。通过分析可知下面的for循环中,每循环一次就将pl+k和p2+k所指向的字符进行比较,如果相等,输出该字符,循环共执行8次,显然Language和Programe中只有字符gae相等,所以最后输出为gae。

22.5555解析:分析程序执行过程,第一次循环时,i=3,i=5,因为switch(3),所以执行case3,调用P(a[--i])=P(a[4])=P(5),输出5:第二次循环时,j=2,i=4,因为switch(2),所以执行case2,调用P(a[i++]):P(a[4])=P(5),输出5,之后i自加等于5。

23.11解析:逻辑运算中,非1即0,非0即1,!a=0,++a为逻辑1,所以0和1相或结果为1。

24.99解析:函数的嵌套调用是在主函数中函数f(f(3,4),f(3,5))的返回值赋给d。函数的第一个参数为f(3,4)的返回值,函数f(3,4)返回值为(4-3)*3=3,f(3,5)返回值为(5-3)*3=6,那么函数f(f(3,4),f(3,5))等价于函数f(3,6)其返回值为(6-3)*3=9。因此d被赋值为9,所以输出9。

25.关系模型关系模型解析:在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。通俗地讲,数据模型就是现实世界的反映,它分为两个阶段:把现实世界中的客观对象抽象为概念模型;把概念模型转换为某一DBMS支持的数据模型。常见的数据模型有3种,它们分别是层次模型、网状模型和关系模型。

26.叶子结点叶子结点解析:树中度为零的结点,也就是没有后件的结点,称为叶子结点。

27.intz;sub(t1t2);

28.66

29.概念数据模型概念数据模型

30.'\0''\\0'解析:本题涉及字符数组和指针的两个知识点:①在C语言中,字符型数组在存放字符串时会自动在末尾加上字符串结束标识符'\\0'所以题中数组str有6个元素。②ptr指向数组str的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。

31.01234。01234。解析:函数fun1给数组a的每个元素赋值,fun2则输出结果。

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

33.00解析:函数getchar()是从键盘得用户输入的一个字符。用户输入的第1个字符a,不管后面输入的是什么ch的值都是'a',因此条件(ch=getchar())=='e'为假,这个循环不会被执行。

34.!=returnj!=\r\nreturnj解析:本题程序的流程是:让i,j都从1开始其中j用于控制删除后剩下的数中的下标,i用于搜索原数组中的元素。j始终是新数组已有元素中最后一个元素的下一个元素的下标,所以if()中的条件是a[j-1)!=a[i],其中a[j-1]就是新数组中的最后一个元素,若条件成立则表示出现了不同的值,所以a[i]要留下到新数组中。注本题中i,j的初值都要从1开始。该算法只能用于数组已排序的题目中。

35.GFEDCB。GFEDCB。解析:开始指针cp指向字符串结束标志,在循环中,cp依次向前移动,当打印出第二个字符后,cp指向第一个字符,循环判断条件不满足,退出循环,因此,只打印出第一个字符以后的字符的逆序列。

36.abcbcc

37.(a+b>c)&&(a+c>b)&&(b+c>a)(a+b>c)&&(a+c>b)&&(b+c>a)解析:三角形形式的条件是两边之和大于第三边。要用'&&'指令连接三个条件,表示三个条件都要满足。

38.503503解析:此处需注意的是:如果if后面的条件为真,只执行其后的一条语句或一条复合语句,如果if后面的条件为假,只执行else后面的一条语句或一条复合语句。先判断表达式“a<b”为假,不执行“t=a”,但执行“a=b;b=t;”,s的值为3,b的值为0。在判断表达式“a<c”,值为真,所以执行后面的3条语句“t=a;a=c;c=t”,结果a的值为5,c的值为3,所以最后输出的结果为5、0和3。

39.线性结构线性结构解析:数据的逻辑结构是指数据元素之间的逻辑关系,分为线性结构和非线性结构。常见的线性结构有线性表、栈和队列等,常见的非线性结构有树、二叉树等。

40.b=i+1b=i+1解析:本题考查了for循环语句的执行过程。i+=2是修正表达式,执行一次循环体后i的值就增加2,i的初始值为0,每次加2之后和累加至a,所以a的值就是1~10之间的偶数之后;b的值是1~11之间的奇数和,但在输出b值时c去掉多加的11,即为1~10之间的奇数之和。

41.A解析:C语言中的函数可以进行递归调用,但不能在函数中定义函数,即函数不能嵌套定义。函数可以没有返回值,若有返回值,则返回值类型必须确定。

42.C解析:函数调用的一般形式为:函数名(实参表列);,实参与形参的个数应相等,类型应一致,在调用函数时,不要指定其返回类型,对于返回类型为void的函数,不能作为赋值表达式的组成部分,所以选C。

43.C解析:利用强制类型转换(structsk*),把整数型地址&data.m转换成结构体变量指针赋给结构体指针变量q。

44.A解析:本题定义了一个二维字符数组arr[2][4],该二维数组可以看成一个含有两个元素arr[0]、arr[1]的一维字符数组,分别看成是含有4个元素,也可以看成是以arr为首地址的一个一维字符数组。函数strcpy(arr,“you”)是把字符串“you”复制到arr指向的空间,strcpy(arr[1],“me”)同理,在以arr[0]为首地址的字符数组中有“you”,在以air[1]为首地址的字符数组中有“me”。arr[0][3]=‘&’;是给arr[0]为首地址的字符数组的第4个元素赋值为‘&’。因此输出为you&me。

45.A解析:A中sin(1/2)是0,因为1和2都是整数,“/”在这里是整除。

46.D解析:因为二叉树有左、右子树之分,所以有3个结点的二叉树具有5种不同的形态。

47.CC。【解析】在模块化程序设计中,模块之间的联系可以通过程序的控制结构来实现,在自顶向下、逐步细化的设计过程中,首先要考虑全局目标,而不是细节。在程序设计中模块化和结构化可以同时使用,一个模块的内部结构也要符合结构化设计原则。

48.C解析:程序中for循环了三次,第一次i=0,执行switch语句中case0:分支,直到遇到default语句,退出switch,这里共执行了三个输出语句分别输出0,0,0,第二次循环i=1,switch语句中没有匹配的分支,故只执行default语句输出1,退出switch语句;第三次循环i=2,从switch语句中的case2:开始执行,共执行了两个输出语句输出2、2。最后输出的结果为000122。

49.C解析:“*”号的优先级比“+”的优先级高,所以先执行“*p”;指针p指向的是数组的首地址,因此*p=a,再加4得'e'。

50.A解析:在main函数中,调用reverse函数将b数组中的前8个成员进行互置,执行完毕后,b数组中的成员为{8,7,6,5,4,3,2,1,9,10},然后再执行for循环结构,将b[6],b[7],…,b[9]的值相加,结果为22。

51.B解析:在C语言的数组元素的引用方法,我们在前面已经讲过了,比如数组元素a[0],可以用表达式*(p+0),即*p来引用,对于数组元素a[1],可以用表达式*(p+1)来引用,在这里,p+1的值就是数组元素a[1]的地址,对此地址使用“间接访问运算符”:*(p+1)就代表存储单元a[1],注意:一对圆括号不可少。同样,对于数组元素a[2],则可以用表达式。(p+2)来引用…,对于数组元素a[9],可以用表达式,(p+9)来引用。因此,当指针变量p指向a数组的起始地址时,若0≤i<10,则数组元素a[i]可以用*(p+i)来表示。

52.D解析:本题考查了函数的定义。题目中定义的函数fun()有两个参数,一个是字符型变量ch,另一个是浮点型变量x,函数类型是void即无返回值。选项A调用fun的第1个参数是字符串常量与字符变量不匹配,所以不正确。选项B是有返回值函数的调用形式,不正确。选项C的第1个参数是错误的字符常量,字符常量是用单引号括起来的一个字符(是转义字符可能有多个字符),故也不正确。选项D使用两个整型常量调用fun这在C语言中是允许的。因为整型到字符型可以自动转换,整型到浮点型也可以自动转换。故应该选择D。

53.D解析:本题考查do-while语句。C语言支持do-while语句,选项A)错误;do-while构成的循环,当while语句中的表达式值为零时结束循环,故选项B)、C)都是错误的。

54.D解析:C语言中的文件是流式文件。流式文件是一种无结构文件,即整个文件是一串字符流或二进制流。文件的存取以字符或字节为单位。

55.C解析:本题考查指向指针的指针。*c表示c间接指向的对象的地址,而**c是c间接指向的对象的值。在c*&b中,已经把b的地址存放在c里了,*c就指向了b的地址,而b里存放的就是a的地址,那么**c应该是变量a的值。也可以用排除法排除选项A),B)。由b=&a可知,这两个选项是同一个意思,变量b中的值就是变量a的地址。所以可以排除。

56.BB.【解析】栈是一种特殊的线性表,其插入和删除运算都只在线性表的一端进行,而另一端是封闭的。进行插入、删除的一端称为栈顶,封闭的一端称为栈底。栈顶元索是最后被插入的元素,也是最后被删除的元素。栈是按先进后出的原则组织数据的。

【知识拓展】“栈”的形式如手枪的弹匣,最后压入的子弹总是最先被弹出,而最先压人的子弹最后才被弹出,也就是“先进后出”。

57.D解析:fwrite的形式是fwrite(buffer,size,count,fp),buffer表示准备输出的数据块的起始地址,size表示每个数据块的字节数,count用来指定每写一次或输出的数据块,fp为文件指针。

58.C解析:定义一个结构的一般形式为:

struct结构体名

{

成员列表

}变量名列表;

本题中的stutype是在声明结构体类型structstu的同时定义的该结构体变量,而不是用户定义的结构体类型名。

59.A解析:在C语言中,“%”运算符两侧的运算数必须是整型。

60.C解析:本题考查的是if...else语句的使用。x=2.0,符合第二个IF语句的条件x<10.0,所以执行y=1.0/x语句,即y=1.0/2.0=0.500000。

61.BC语言中注释语句的注释方法是:/+注释内容*/或//注释-行。所以A与C错误,D选项中预编译命令include<stdi0.h>前丢掉了“#”号。所以选择B。

62.B【答案】:B

【知识点】:软件生命周期

【解析】:一个软件产品或软件系统要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生命周期。它把整个软件生存周期划分为若干阶段,使得每个阶段有明确的任务,使规模大,结构复杂和管理复杂的软件开发变的容易控制和管理。通常,软件生存周期包括可行性分析与开发项计划、需求分析、设计(概要设计和详细设计)、编码、测试、维护等活动,可以将这些活动以适当的方式分配到不同的阶段去完成。故选B。

63.D

64.B函数的功能是求数组所有元素的和。递归表示为a[3]+a[2]+a[1]+a[0]+f(t,0)=10。

65.B在本题中,首先定义了两个宏N和M,大小都为10,然后定义了一个返回指针的函数find,该函数带有两个形参,第一个为字符型的指针数组,第二个为整型变量,在函数体中,首先定义了一个指针变量q,并将形参中指针数组的第一个元素赋值给q,然后执行for循环,在循环体中,首先执行条件判断语句,其条件为strcmp(a[i],q)<0(strcmp函数的作用是比较两字符串的大小,如果相等,则返回0值,如果参数中的第一个字符串大,则返回正值,否则返回负值),如果结果为真,说明指针数组当前元素所指向的字符串比q所指向的字符串小,此时,程序执行将当前指针数组元素赋值给p,最后返回p,通过上面的分析我们可以看出,find函数的作用是找出指针数组中各元素所指向字符串的最小字符串。

在主函数中,定义了一个二维数组s,并赋了初值,然后定义一个指针变量p,用来存放函数find的返回值。调用函数find的参数分别为s和5,结合形参看find函数,不难知道调用find函数就是找出二维数组s中各字符串中最小的字符串,那么应该为and。此时,指针变量p指向字符串“and”的首地址,然后执行puts(p),完成该字符串的输出。因此

温馨提示

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

评论

0/150

提交评论