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.表达式a*(b+c)-d的后缀表达式是()。

A.abcdd+-B.abc+*d-C.abc*+d-D.-+*abcd

3.下列算法中,()算法用来求图中某顶点到其他顶点所有顶点之间的最短路径。

A.DijkstraB.FloyedC.PrimD.Kruskal

4.以下选项中表示空函数的是()。

A.intfun(){return0;}

B.intfun();

C.intfun(){}

D.intfun(inta,intB){return1;}

5.

6.有以下函数:fun(char*p){returnp;}该函数的返回值是()。

A.无确切值B.形参p中存放的地址值C.一个临时存储单元的地址D.形参p自身的地址值

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

A.一个C语言程序只能实现一种算法

B.c程序可以由多个程序文件组成

C.C程序可以由一个或多个函数组成

D.一个c函数可以单独作为一个C程序文件存在

8.若有定义语句:“inta=3,b=2,c=1;”,以下选项中错误的赋值表达式是()。

A.a=(b=4)=3;B.a=b=c+1:C.a=(b=4)+C;D.a=1+(b=c一4);

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

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

10.若以下变量均是整型,且num=sum=7;则执行表达式sum=num++,sum++,++num后sum的值为()。

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

11.设有以下程序段:structbook{floatprice;charlanguage;chartitle[20];}rec,*ptr;ptr=&rec;要求输入字符串给结构体变量rec的title成员,错误的输入语句是()。

A.scanf(“%s”,ptr.title);

B.scanf(“%s”,rec.title);

C.scanf(“%s”,(*ptr).title);

D.scanf(“%s”,ptr->title);

12.数据的存储结构是指()。

A.数据所占的存储空间

B.数据的逻辑结构在计算机中的存放形式

C.数据在计算机中的顺序存储方式

D.存储在计算机外存中的数据

13.在带头结点的单链表head为空的判定条件是()。

A.head=NULLB.head->next=NULLC.head->next=headD.head!=NULL

14.计算机能够直接识别和执行的语言是

A.汇编语言B.自然语言C.机器语言D.高级语言

15.有以下程序:

执行后输出结果是()。

A.n,tuesdayB.d,mondayC.U,mondayD.0,wednesday

16.设一组初始记录关键字序列(5,2,6,3,8),以第一个记录关键字5为基准进行一趟快速排序的结果为()。

A.2,3,5,8,6B.3,2,5,8,6C.3,2,5,6,8D.2,3,6,5,8

17.以下非法的赋值语句是

A.n=(i=2,++i);B.j++;C.++(i+1);D.x=j>0;

18.有三个关系R,S和T如下:

其中关系T由关系R和s通过某种操作得到,该操作为()。

A.选择B.交C.投影D.并

19.有以下定义:structperson{charname[10];intage;};structpersonclass[10]={“Johu”,17,“Paul”,19,“Mary”,18,“Adam”,16,};能输出字母M的语句是()。

A.printf(“%c\n”,class[2].name[0]);

B.printf(“%c\n”,class[3].name[0]);

C.printf(“%c\n”,class[3].name[1]);

D.printf(“%c\n”,class[2].name[1]);

20.在关系数据库中,用来表示实体间联系的是()。

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

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

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

}

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\n",*p,*q);

22.下面程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是【】。

main()

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

p=a;

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

printf("%\n",p+9);

}

23.数据的【】结构在计算机存储空间中的存放形式称为数据的存储结构或物理结构。

24.已知head指向一个带头结点的单向链表,链表中每个结点包含数据域(data)和指针域(next),数据域为整型。以下函数求出链表中所有链结点数据域的和值,作为函数值返回。请在下划线内填入正确内容。

{intdata;structlink*next;}

main()

{structlink*head;

sum(head);

┆}

sum(【】);

{structlink*p;ints=0;

p=head->next;

while(p){s+=p->data;p=p->next;}

return(s);}

25.若有以下定义,则使指针p指向值为35的数组元素的语句是______。

inta[10]={14,27,47,29,35,21,49,71},*p;

26.已有定义:charc=′′;inta=1,b;(此处c的初值为空格字符),执行b=!c&&a;后b的值为【】。

27.若变量n的值为24,则print函数共输出【】行,最后一行有【】个数。

voidprint(intn,intaa[])

{inti;

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

{printf("%6d",aa[i]);

if(!(i%5))printf("\n");

}

printf("\n");

}

28.深度为5的满二叉树中,叶子结点的个数为______。

29.阅读程序:

#include<string.h>

#include<strdio.h>

strle(chara[],charb[])

{intnum=0,n=0;

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

while(b[n])

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

return(num);

}

main()

{charstrl[81],str2[81],*p1=strl,*p2=str2;

gets(p1);gets(p2);

prinf("%d\n",strle(p1,p2));

}

运行上面的程序,如果从键盘上输入字符串qwerty和字符串abcd,则程序的输出结果是【】。

30.一个模块直接调用的其他模块的模块个数称为______。

31.使用结构体处理数据的场合是【】。

32.对存储器按字节进行编址,若某存储器芯片共有8根地址线,则该存储器芯片的存储容量为【】字节。

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

main()

{intm=011,n=11;

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

}

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

#include<string.h>

voidfun(char*s,intp,intk)

{inti;

for(i=p;i<k-1;i++)s[i]=s[i+2];

}

main()

{chars[]="abcdefg";

fun(s,3,strlen(s));puts(s);

}

35.软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和【】的设计来实现。

36.在计算机领域中,通常用英文单词“Byte'’表示【】。

37.有以下程序:

prt(int*m,intn)

{inti;

for(i=0;i<n;i++)m[i]++;

}

main()

{inta[]={1,2,3,4,5},i;

prt(a,5);

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

}

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

38.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【】。

39.以下程序的作用是:从名为filea.dat的文本文件中逐个读入字符并显示在屏幕上。请填空。

#include<stdio.h>

main()

{FILE*fp;charch;

fp=fopen(【】);

ch=fgetc(fp);

while(!feof(fp)){putchar(ch);ch=fgetc(fp);}

putchar('\n');fclose(fp);

}

40.用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。st=(char*)【】;

三、1.选择题(20题)41.设有定义:intn1=0,n2,*p=&n2,*q=&n1;,下列赋值语句中与n2=n1;语句等价的是()。

A.*p=*q;B.p=q;C.*p=&n1;D.p=*q;

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

A.在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值

B.在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容

C.在C语言中,外部变量的隐含类型是自动存储类别

D.在C语言中,函数形参的存储类型是自动(auto)类型的变量

43.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是()。

A.模拟现实世界中不同事物之间的联系

B.强调模拟现实世界中的算法而不强调概念

C.使用现实世界的概念抽象地思考问题从而自然地解决问题

D.鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考

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

A.a==1B.++i;C.a=int(i);D.a=a++=5;

45.请选出正确的程序段______。

A.int*p

B.int*s,k;scanf(""%d"",p);*s=100;………

C.int*s,k;

D.int*s,k;char*p,c;char*p,e;s=&k;p=&c;p=&c;*p='a';s=p;……*s=1;……

46.设有定义:intk=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是()。

A.k++B.k+=1C.#NAME?D.k+1

47.以下程序输出正确的是______。amovep(int*p,int(*a)[3],intn){inti,j;for(i=0;i<n;i++)for(j=0;j<n;j++){*p=a[i][j];p++;}}main(){int*p,a[3][3]={{1,3,5},{2,4,6}};p=(int*)malloc(100);arnovep(p,a,3);printf("%d%d\n",p[2],p[5];free(p);}

A.56B.25C.34D.程序错误

48.以下程序的输出结果是______。main(){inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf("%d\n",s);}

A.18B.19C.20D.21

49.有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%ld\n",fib(3));}该程序的输出结果是______。

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

50.以下叙述中错误的是A.C语言是一种结构化程序设计语言

B.结构化程序由顺序、分支、循环三种基本结构组成

C.使用三种基本结构构成的程序只能解决简单问题

D.结构化程序设计提倡模块化的设计方法

51.下列选项可以正确表示字符型常量的是

A.'\r'B.aC.\897D.296

52.在C语言中,要求运算数必须是整型的运算符是()

A.%B./C.<D.!

53.有定义语句:intb;charc[10];,则正确的输入语句是

A.scanf("%d%s",&b,&c);

B.scanf("%d%s",&b,c);

C.scanf("%d%s",b,c);

D.scanf("%d%s",b,&c);

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

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

55.若要用下面的程序片段使指针变量p指向一个存储字符型变量的动态存储单元,则应填入;char*p;p=()malloc(sizeof(char));

A.charB.char*C.(*char)D.(char*)

56.若有以下说明和定义uniondt{inta;charb;doublec;}data;以下叙述中错误的是

A.data的每个成员起始地址都相同

B.变量data所占内存字节数与成员c所占字节数相等

C.程序段:data.a=5;printf("%f\n",data.c);输出结果为5.000000

D.data可以作为函数的实参

57.以下选项中不能作为合法常量的是_____。A.1.234e04B.1.234e0.4C.1.234e+4D.1.234e0

58.有以下函数:fun(char*a,char*b){while((*a!='\0')&&(*b!='\0')&&(*a==*b)){a++;b++;}return(*a-*b);}该函数的功能是()。

A.计算a和b所指字符串的长度之差

B.将b所指字符串复制到a所指字符串中

C.将b所指字符串连接到a所指字符串后面

D.比较a和b所指字符串的大小

59.设有定义:structsk{inta;floatb;}data,*p;若有p=&data;,则对data中的a域的正确引用是()

A.(*p).data.aB.(*p).aC.p->data.aD.p.data.a

60.当执行下面的语句定义一维数组a后,此数组的所有元素为()inta[10];

A.a[1],a[2],a[3],a[4],a[5],a[6],a[8],a[9],a[10],a[10]

B.a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]

C.a[0],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10]

D.a[1],a[2],a[3],a[4],a[5],a[9],a[7],a[8],a[9],a[10],a[11]

四、选择题(20题)61.当执行下面的程序时,如果输入ABC,则输出结果是()。

#include<stdio.h>

#include<string.h>

voidmain()

{charss[10]="12345",

gets(ss);strcat(ss,"6789");

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

}

A.ABC6789B.ABC67C.12345ABC6D.ABC456789

62.下列合法的声明语句是()。

A.intabc=50;

B.doubleint=3+5e2.5;

C.longdo=1L;

D.float3asd=3e一3;

63.有如下程序段

#include"stdio.h"

main()

{intk[10];

intj;

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

scanf("%d",&k[j]);

for(j=9;j>=0;j--)

printf("%d",k[j]);}

则程序段实现的功能是

A.输入10个数据的顺序输入并输出

B.输入10个数据的逆序存放

C.输入10个数据的逆序输出

D.以上叙述均错误

64.

65.有以下程序:

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

A.b,B"b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B

66.

设变量已正确定义,则以下能正确计算f=n!的程序是()。

A.f=0:for(i=1;i<=n;i++)f*=i:

B.F=1:for(i=l;i<2n;i++)f*=i:

C.f=l:for(i=n;i>1;i++)f*=i:

D.f=1;for(i=n;i>=2;i--)f*=i:

67.有以下程序

#include<stdio.h>

main()

{

intnum=0;

while(num<=2)

{

num++;

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

}

}

上面程序的输出结果是

68.

有以下程序

#include<stdio.h>

inta=1;

intf(intc)

{staticinta=2:

c=c+1:

return(a++)+C;

}

main

(inti,k=0;

for(i=0;i<2;i++){inta=3;k+=f(a);}

k+=a:

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

}

程序运行结果是()。

A.14B.15C.16D.17

69.设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp),的返回值为()。

A.0B.\0C.非0值D.NULL

70.以下选项中,能用作数据常量的是()。

A.115LB.0118C.1.5el.5D.0115

71.在数据库管理系统DBMS中,用来定义内模式和外模式等一些数据库管理系统中其他结构的语言为

A.CB.BasicC.DDLD.DML

72.

73.有以下程序当执行程序时,按下列方式输入数据(从第l列开始,<CR>代表回车,注意;回车也是--+qz符)12<CR>34<CR>则输出结果是()。

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

74.以下程序段完全正确的是()。

75.表达式“~0x11”的值是()。

A.0xFFEEB.0x71C.0x0071D.0xFFF1

76.

77.

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

A.876和543.000000

B.87和6.000000

C.87和543.000000

D.76和543.000000

78.(27)程序流程图(PFD)中的箭头代表的是()

A.数据流

B.控制流

C.调用关系

D.组成关系

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

A.循环链表是非线性结构

B.双向链表是非线性结构

C.只有一个根结点的数据结构不一定是线性结构

D.有一个以上根结点的数据结构不一定是非线性结构

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

A.

B.

C.

D.

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写函数proc(),该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N).按顺序合并组成一个新的字符串。例如,若字符串数组中的M个字符串为:ABCDBCDEFGCDEFGHI则合并后的字符串内容应该是:ABCDBCDEFGCDEFGH1。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.B

2.B

3.A

4.C空函数是函数体没有执行语句的函数。选项A、D不是空函数;选项B是函数的声明;只有选项C是空函数。故本题答案为C选项。

5.A

6.B解析:return中返回的是指针p的值,也就是形参p中存放的地址值。

7.A答案A

解析:一个C程序可以有一个或多个程序文件,也可以有一个或多个函数,所以一个C语言程序可以实现多种算法。

8.A由等式的规则可知,A选项错误。先对括号的b进行等式运算,得出b=4,然后计算得出a=4=3,所以会导致错误。答案选择A。

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

10.A

11.A运算符“->”适用指针访问成员变量,运算符“.”适用普通变量访问成员变量。ptr是指针,只能用“->”,因此选项A错误。选项B中,rec.title代表数组title,选项B正确,同理选项C正确。“*ptr”是结构体变量rec,可以使用运算,因此选项D正确。故本题答案为A选项。

12.B解析:数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式,数据的存储结构有顺序结构、链式结构、散列结构和索引结构等。

13.B

14.C

15.CP指向字符串”tuesday”,因此*(P+1)的值为n。s[0]=”monday”。

16.C

17.C解析:本题考查的知识点是赋值语句的基本知识。在表达式的运算中,双目赋值运算符的格式为“变量二表达式”,单目运算符一般形式为“运算符表达式”或“表达式运算符”。常量和表达式是不能被赋值的。选项A为复合表达式,首先计算(i=2,++i)的值,然后赋值给n,故选项A正确;选项B为简单自加运算,故选项B正确;选项C在表达式++(i+1);中,(i+1)不是变量,该表达式的值为常量,而在++运算中,其运算对象必须为变量,故选项C错误;选项D中为复合赋值表达式,正确.所以应当选择C。

18.D\n两个相同结构关系的并是由属于这两个关系的元组组成的集合。

\n

19.AC语言规定数组的下标从0开始,结构体数组class初始化了前4个元素。第3个元素的name=“Marry”,则class[2].name[0]=‘M’。故本题答案为A选项。

20.D单一的数据结构——关系,现实世界的实体以及实体间的各种联系均用关系来表示。数据的逻辑结构——二维表,从用户角度,关系模型中数据的逻辑结构是一张二维表。但是关系模型的这种简单的数据结构能够表达丰富的语义,描述出现实世界的实体以及实体间的各种关系。

21.

22.1a61a6解析:对于指针变量的运算,就是对地址的运算。本题中由于指针指向的是整型变量,所以,使指针变量移动9个位置也就是移动18个字节。注意,本题是以十六进制输出的。

23.逻辑逻辑解析:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构或物理结构。

24.structlink*headstructlink*head解析:因为本题中是用结构体变量构成了链表,所以要从链表头节点逐个节点的引用结构体的数据域,需要有个指向结构体变量的指针依次指向各个节点,即p=p->next,而用指针引用结构体成员数据的方法为:p->data。注意:结构体变量和共用体变量之间的区别为联系。

25.p=a+4或p=&a[4]。p=a+4或p=&a[4]。解析:可以直接将数组元素a[4]的地址(即&a[4])赋给指针变量p,也可以用数组名加偏移量的形式(即a+4)表示数组元素a[4]的地址,并赋给指针变量p。

26.11解析:字符空格的ASCII码不为0,所以本题中表达式\ue008!c\ue009的值为0,b=0&&1的结果显然为0。

27.5454解析:语句if(!(i%5))printf('\\n');实现每5个数输出一行,因为n的值为24,所以共输出5行,最后一行有4个数。

28.1616解析:满二叉树的叶子结点都在最后一层,即第4层,且第4层的结点达到最大数,即25-1=16。

29.10

30.扇出扇出解析:在结构图中,调用一个给定模块的模块个数称为扇入,一个模块直接调用的其他模块个数称为扇出。

31.把不同类型的数据作为整体处理

32.256256解析:本题考查对存储器按字节进行编址的规则及其寻址范围(2n),其中n为存储器芯片中地址线的条数。

33.10111011解析:前缀自增运算时,表达式的值和变量自增之后的值相同;后缀自增运算时,表达式的值为变量自增之前的值。所以,本题程序输出的两个结果分别是m+1和n的值。而m在初始化时使用的是八进制常量011,转换为十进制为9。故输出结果是1011。

34.abcfgabcfg解析:本题考查的是字符数组用作函数参数。C语言中数组名可以看作该数组首地址的常量指针、因此可以直接传递给指针类型的参数。本题的主函数调用fun(s,3,strlen(s));后,函数中for循环就是for(i=3;i<strlen(s)-1;i++),即i从3递增到字符数组s的长度-2位置,循环中让s[i]=s[i+2],所以函数fun()实现的功能简单来说就是将字符串s下标为p+2~k范围的字符整体复制到字符串s下标为p~k-2的位置上。在本题中strlen(s)返回s的长度7,所以复制的字符为s[5]~s[7],即'f'、'g','\\0'三个字符,复制到s[3]~s[5],故最终输出的字符串为abcfg(因为s[5]为'\\0',所以后面的字符不会输出)。

35.测试实例测试实例解析:进行软件测试时,应精心设计测试实例和选择测试数据,以对系统进行全面测试。

36.字节字节

37.234562,3,4,5,6解析:函数prt(a,5)的功能是使得a数组中,从a[0]~a[4]中元素均增1。

38.可重用性继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。

39.“filea.dat”“r”“filea.dat”,“r”解析:fopen函数的调用方式通常为fopen(文件名,使用文件方式)。本题中要求程序可以打开filea.dat文件,并且是要读取文件中的内容,所以空白处应当填入'filea.dat','r'。

40.malloc(11)malloc函数的格式是void*(或char*)malloc(size),size表示应分配的存储区,此题要分配11字节的单元,把11代入即可。

41.A解析:在定义指针变量p和q时,分别把变量n2和n1的地址赋给了指针变量p和q,所以*p和*q中内容就分别是变量n2和n1的值,所以语句*p=*q与语句n2=n1等价。因此选项A)正确。

42.C解析:外部变量在编译时由系统分配永久的内存空间,所以外部变量的类型不是自动存储类别。

43.C解析:面向对象的设计方法与传统的面向过程的方法有本质不同。它的基本原理是,使用现实世界的概念抽象地思考问题从而自然地解决问题。它强调模拟现实世界中的概念而不强调算法,它鼓励开发者在软件开发的绝大部分中都用应用领域的概念去思考。

44.B解析:C语言中的语句都以“;”结尾,因此选项A不是合法语句。强制类型转换运算符应为“(类型名)”,选项C中的int(i)不符合规定;如将int(i)看成函数调用也是不正确的,int是C语言的关键字,不能作为用户定义的标识符当函数名使用。赋值表达式的左侧应为变量名,而选项D中的a++=5不符合规定。

45.C解析:本题的A和B犯了一个同样的错误,即指针变量p定义后并没有指向具体的变量,因此不能进行赋值操作。另外,在选项D中,s是int指针变量,p是char型指针变量,所指向的内存单元所占用的字节数是不同的,因而不能将字符指针变量p的值赋给整型指针变量s。

46.A解析:凡是表达式都有一个值,即运算结果。k++的表达式值为0,k再进行增1运算;k+=1是赋值表达式,其作用是取k中的值加1后再放到k变量中,即表达式的值为1;++k是先进行k增1运算,表达式的值为1;k+1=0+1,其运算的结果为1。所以选项A中表达式的值与其他三个表达式不同。

47.A解析:本题main函数中定义了指针p和二维数组a,通过函数amovep将数组的值存入指针p所指向的存储单元中,a的各元素分别为:a[0][0]=1,a[0][1]=3,a[0][2]=5,a[1][0]=2,a[1][1]=4,a[1][2]=6,a[2][0]=0,a[2][1]=0,a[2][2]=0。通过mailoc()函数给指针分配内存空间,free()函数用于释放指针变量所用内存空间。在主函数中通过amovep(p,a,3)调用函数amovep,使得实参p与形参p,实参数组a与形参中指向数组的指针变量共用同一存储空间。最后输出p[2],p[5]为56。

48.A解析:本题首先定义了一个数组并附初值,然后通过两个for循环计算3、4、5、6的累加值,并用s保存。

49.B解析:函数fib内部有两个递归调用,当n=3时,fib(n-1)返回2,fib(n-2)也返回2,所以fib(n-1)+fib(n-2)的值为4。

50.C解析:结构化程序设计是指在程序的构成上只使用顺序、选择(即分支)和循环3种结构组成的编程方式。它强调程序设计风格和程序结构的规范化,提倡清晰的结构。结构化程序设计方法的基本思路,是把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。结构化程序设计提倡模块化的设计方法。

51.A解析:C语言中,一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号括起来作为字符常量,字符常量的范围是0~127。由于字符常量用单引号括起来,所以选项B),C)错误,选项D)超过了字符常量的表示范围。

52.A解析:题目的四个选项中,B、C、D都不要求运算数必须为整数,参与模运算(%)的运算数必须是整型数据。

53.B解析:scanf函数的第一个参数是格式控制字符串,该字符串中所出现的格式控制符必须与scanf函数的笫二个及其后面的参数一一对应.本题中四个选项的格式控制字符串都是'%d%s',其中包括两个格式控制符%d和%s,它们分别表示输入一个十进制整数和输入一个字符串,其对应的参数应该分别为一个整型变量的地址和一个字符型数组的首地址。变量的地址可以通过对变量做取地址(&)运算来得到,而宇符型数组的首地址则可以直接通过数组名来得到。所以,4个选项中选项B符合题意。

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

55.D

56.D解析:选项A),共用体的每个成员的起始地址都相同;选项B),共用体变量所占的内存长度等于最长的成员的长度;选项C)因为每个成员的起始地址相同,所以整型数5以浮点型输出时为5.000000;选项D)C语言规定,不能把共用体变量作为函数的参数。

57.B解析:本题考查的是C语言中实型常量的指数表示法。实型常量的指数表示法是用字母e(或E)将一个实数的小数部分和指数部分分隔开。字母e(或E)之前是小数部分,之后是指数部分,这两部分都不能省略,且指数部分必须为整数。故选项B不正确。所以,4个选项中选项B符合题意。

58.D解析:本题要求阅读的代码是一个函数,阅读之前先要看清函数的定义,该函数有两个参数,都是字符指针,这说明它接收的是两个字符串.该函数没有定义返回类型,C语言规定函数的返回类型为int时可以省略,所以切不可将其看成是无返回类型的void型函数,它是int型函数。函数体中除了返回语句外,只有一条while循环语句,该循环的循环条件为(*a!='\\'0}&&(*b!='\\0')&&(*a==*B),即当a和b所指处都不是字符结束符'\\0'并且a和b所指处的内容相等时执行循环。而循环体中只是简单地将指针a和b同时往后移动1位。循环结束后返回a所指内容减去b所指内容的差。换个角度去考虑,也就是说当字符串a或b中有一个结束了或者是它们的相同位置中有一个字符不同时,则返回该位置两个字符之差。若两者长度相同而且所有对应字符都相同的话,最后返回的是'\\0\\-'\\0'=0,否则的话就返回两个字符串第一对不相同的字符之差.这时应该可以看出来,这个函数实现的是对两个字符串的比较。所以,4个选项中D正确。

59.B

60.B

61.Astrcat函数,gets函数;首先将输入的字符串赋给ss,然后将字符串“6789”连接到ss得后面

62.A标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。B选项int不是表达变量类型的标识符,它不能再用做变量名和函数名。C选项do是C语言的一个关键字。D选项标识符只能以字母或下划线开始。

63.C在本题中,从给出的选项可以知道,本题程序的作用是对数组的十个元素按照一个规则进行输出。

在程序中,首先定义了一个大小为10的数字用来存放需要处理的十个数,然后通过循环从键盘输入需要被处理的十个数,又通过一个循环完成对数组元素的输出。在该循环中,当循环变量j=9时,输出的是a[9],即数组中的最后一个元素,当j=8时,输出的是a[8],即数组中的倒数第二个元素,以此类推,当j=0时,输出的是a[0],即数组的第一个元素。由此我们可以看出,最后是将数组逆序输出。与选项C完全一致,因此,本题的正确答案是C。

64.C

65.A本题重点考察函数的调用,首先要了解字母对应的ASCIl码。例如A为65,a为97。即字母+1劂可得到下一个字母。-其次是函数形参和实参的问题,运行过程如下:在fun(&b,a)中,}c=.a-,d=65。}c+l=V,d+1=66,prinff(”%c,%c,”,}C,d);输出b,B,因为指针c指向地址的值为b,此时b=}C=.b.;豳数返回执行ptud(。%C,%c、n”,b,8);输出b,A,因此A选项正确。

66.D由i"11的数字定义可知n!=n*(n-1)*(n-2)*…*1。在选项A中,由于f的初值为0,在for循环语句中,f依次乘以1,2,3,…,n,最后计算得到f=n!一0,所以选项A不正确。在选项B中,f的初值为1,在for循环语句中,f依次乘以1,2,3,…,(n-1),最后计算得到f=(n-1)!,所以选项B不正确。在选项C中,f的初值为1,在for循环语句中,f依次乘以n,n+1,n+2,……,所以选项c不正确。在选项D中,f的初值为l,在for循环语句中,f依次乘以n,n-1,n-2,…,2,最后计算得到f=n!,所以选项D正确。

67.C本题考查while()语句。程序中使用的是while循环,为“当型”循环结构,即当条件为真时循环,将值代入循环,当num为3时,循环的条件已经为假,将不再循环。故本题答案为C。

68.A

\n在主函数中,k的初值为0,首先

温馨提示

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

评论

0/150

提交评论