2021-2022年甘肃省天水市全国计算机等级考试C语言程序设计测试卷一(含答案)_第1页
2021-2022年甘肃省天水市全国计算机等级考试C语言程序设计测试卷一(含答案)_第2页
2021-2022年甘肃省天水市全国计算机等级考试C语言程序设计测试卷一(含答案)_第3页
2021-2022年甘肃省天水市全国计算机等级考试C语言程序设计测试卷一(含答案)_第4页
2021-2022年甘肃省天水市全国计算机等级考试C语言程序设计测试卷一(含答案)_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年甘肃省天水市全国计算机等级考试C语言程序设计测试卷一(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为()。

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

2.采用表结构来表示数据和数据间联系的模型是()。

A.层次模型B.概念模型C.网状模型D.关系模型

3.

4.以下选项中,合法的一组C语苦数值常量是()。

A.28.5e-3-0xf

B.12OXa234.5

C.1774c1.5Oabc

D.0x8A10,0003.e5

5.以下选项中错误的是()。A.printf(“%s\n”,‘s’);

B.printf“%d%c\n”,‘s’,‘s’);

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

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

6.

7.

8.下列程序的输出结果是()。main(){inta=1,b=2;printf("%d,%d\n",--a,++b);}

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

9.若在线性表中采用折半查找法查找元素,该线性表应该()。

A.元素按值有序B.采用顺序存储结构C.元素按值有序,且采用链式存储结构D.元素按值有序,且采用顺序存储结构

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

11.以下不能定义为用户标识符的是()。

A.scanfB.VoidC.3comD.int

12.若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是()。A.scanf(“%d%lx,%le”,&x,&y,&z);

B.scanf(“%2d*%d%lf”&x,&y,&z);

C.scanf(“%x%*d%o”,&x,&y);

D.scanf(“%x%o%6.2f”,&x,&y,&z)

13.以下程序是用来计算两个非负数之间的最大公约数:我们假设x,y中最大的那个数的长度为n,基本运算时间复杂度为O(1),那么该程序的时间复杂度为()A.O(1)B.O(logn)C.O(n)D.O(n^2)

14.已知一个无向图(边为正数)中顶点A,B的一条最短路P,如果把各个边的权重(即相邻两个顶点的距离)变为原来的2倍,那么在新图中,P仍然是A,B之间的最短路,以上说法是()A.错误B.正确

15.

16.

17.线性结构是数据元素之间存在一种()。

A.一对多关系B.多对多关系C.多对一关系D.一对一关系

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

A.DijkstraB.FloyedC.PrimD.Kruskal

19.

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

voidfunc(int*a,intb[])

{b[0]=*a+b;}main

{inta,b[5];

a=0.b[0]=3;

func(&a,b);printf("%d\n",b[0]);

}

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

20.设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);

二、2.填空题(20题)21.fseek函数的正确调用形式是【】。

22.函数delete(s,i,n)的作用是从字符串s中删除从第i个字符开始的n个字符,请填空。

voiddelete(chars[],inti,intn)

{intj,k,legth=0;

while(s[length])

【】;

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<length)

while(k<length)

s[j++]=s[k++];

s[j]='\0'

}

23.一棵二叉树中共有80个叶子结点与10个度为1的结点,则该二叉树中的总结点数为【】。

24.若有定义语句chars[100],d[100];intj=0,i=0;且s中已赋字符串,请填空以实现拷贝。(注:不使用逗号表达式)

while(s[i]){d[j]=【】;j++;}

d[j]=0;

25.有以下程序

main()

{intn=0,m+1,X=2;

if(!n)X-=l;

if(m)X-=2;

if(X)X-=3;

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

}

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

26.以下程序用来统计文件中字符的个数。请填空。

#include“stadio.h”

main()

{FILE*fp;longnum=0L;

if((fp=fopen(“fname.dat”,“r”))==NULL);

{printf(“0penerror\n”);exit(0);}

while(【】)

{fsetc(fp);num++;}

printf(“num=%1d\n”,num-1);

fclose(fp);

}

27.若有说明chars1[]="Thatgirl",s2[]="isbeautiful";则使用函数strcmp(s1,s2)后,结果是______。

28.在面向对象方法中,类之间共享属性和方法的机制称为______。

29.下面程序的功能是:计算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);}

30.在算法正确的前提下,评价一个算法好坏的2个因素是时间复杂度和【】复杂度。

31.以下程序的作用是:从名为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);

}

32.下面程序的功能是输出数组中最大的数,由a指针指向该元素。请填空。

main()

{ints[]={6,7,2,13,9,1,12,10,5,8,4,3,11},*a,*b;

for(b=s,a=s;b-s<13;b++)

if(【】)a=b;

printf("%d",*a);}

33.下面程序是指从终端读入的20个字符放入字符数组中,然后利用指针变量输出上述字符串,请填空。

#include<stdio.h>

main()

{inti;chars[21],*p;

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

s[i]=getchar();

s[i]=【】;

p=【】;

while(*p)putchar(*p++);}

34.有以下程序:

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

}

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

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

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

37.数据的基本单位是______。

38.设有下列的程序段:

charstr[]="Hello";

char*ptr;

ptr=-str;

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

39.#define命令出现在程序中函数的外面,宏名的有效范围为______。

40.下列软件系统结构图的宽度为[]。

三、1.选择题(20题)41.下列程序的输出结果是______。#includesub1(chara,charb){charc;c=a;a=b;b=c;}sub2(char*a,charb){charc;c=*a;*a=b;b=c;}sub3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}{chara,b;a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);a='A';b='B';sub2(&a,b);putchar(a);prtchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);}

A.BABBABB.ABBBBAC.BABABAD.BAABBA

42.字符串"\\\"ABCDEn"\"\\"的长度是()。

A.strcpy(str2,str1)

B.strcpy(str3,str1)

C.strcpy(str4,str1)

D.strcpy(str5,str1)

43.设有语句“chara='72';”则变量a()。

A.包含一个字符B.包含二个字符C.包含三个字符D.说明不合法

44.如下程序的执行结果是()main(){intn=1;printf("%d%d%\n",n,++n,n--);}

A.111B.122C.123D.121

45.软件需求分析阶段的工作,可以分为4个方面:需求获取、需求分析、编写需求规格说明书以及()。

A.阶段性报告B.需求评审C.总结D.都不正确

46.有如下程序段inta=14,b=15,x;charc='A';x=(a&&b)&&(c<'B');执行该程序段后,x的值为

A.TRUEB.FALSEC.0D.1

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

A.xyzabcABCB.zabcABCC.yzbcABCD.xyabcABC

48.若有如下程序:intsub(){staticintn=1;intx=1;x*=n;n++;returnx;}main(){intn,t=1;for(n=1;n<6;n++)t*=sub();printf("%d\n",t);}则程序运行后的输出结果是()

A.15B.120C.34560D.-30976

49.对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为()。

A.log2nB.n/2C.nD.n+1

50.当执行下面的程序时,如果输入ABC,则输出的结果是()。#include<Stdlib.h>main(){charss[]="1,2,3,4,5";gets(ss);strcat(ss,"6789");printf("%s\n",ss);}

A.ABC6789B.ABDC67C.123ABC678D.ABC456789

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

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

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

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

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

52.数据存储和数据流都是______,仅仅是所处的状态不同。

A.分析结果B.事件C.动作D.数据

53.设有程序段:intk=12;while(k=1)k=k-1;则下列描述中正确的是()。

A.0B.1C.TRUED.FALSE

54.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。下列不能将变量c中的大写字母转换为对应小写字母的语句是()。

A.c=(c-'A')%26+'a'

B.c=c+32

C.c=C-'A'+'a'

D.c=('A'+C)%26-'a'

55.以下关于函数的叙述中正确的是______。A.每个函数都可以被其他函数调用(包括main函数)

B.每个函数都可以被单独编译

C.每个函数都可以单独运行

D.在一个函数内部可以定义另一个函数

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

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

57.设有变量说明int(*p)[m],其中的标识符p是()。

A.m个指向整型变量的指针

B.指向m个整型变量的指针

C.一个指向具有m个整型元素的一维数组的指针

D.具有m个指针元素的一维指针数组,每个元素都指向整型变量

58.有以下程序:#include<stdio,h>main(){intk=5,n=0;while(k>0){switch(k){default:break;case1:n+=k;case2:case3:n+=k;}k--;printf("%d\n",n);}程序运行后的输出结果是()。

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

59.下面的程序片段

y=-1;

if(x!=0)

if(x>0)y=1;elsey=0;

所表示的数学函数关系是_______。

A.

B.

C.

D.

60.以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是()。

A.if((a>B)&&(b:>C))k=l;elsek=0;

B.if(a>B)‖(b>C)k=1;elsek=0;

C.if(a<=B)k=0;elseif(b<=e)k=1;

D.if(a>B)k=1;elseif(b>C)k=1;elsek=0;

四、选择题(20题)61.函数fseek的正确调用形式是()。

A.fseek(位移量,起始点,文件类型指针);

B.fseek(文件类型指针,位移量,起始点);

C.fseek(文件类型指针,起始点,位移量);

D.fseek(起始点,位移量,文件类型指针);

62.

63.已定义c为字符型常量,则下列语句中正确的是()。

A)c=′97′B)c="97"

C)c=97D)c="a"

64.

65.下面程序的输出结果是()。

A.xyzabcABCB.zabcABCC.xyabcABCD.yzabcABC

66.有以下程序

main()

{inta[3][2]={0},(*ptr)[2],i,j;

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

{ptr=a+i;scanf("%d",ptr);ptr++;}

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

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

printf("\n");

}

}

若运行时输入123<回车>,则输出结果为

67.

68.设有定义:intx=3;,以下表达式中,值不为l2的是()。

A.x*=x+1B.x++,3*xC.x*=(1+x)D.2*x.x+=6

69.有以下程序:

#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

70.若有下的定义:"intt[3][2];",能正确表示t数组元素地址的表达式是()。

A.&t[3][2]

B.t[3]

C.t[l]

D.t[2][2]

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

A.栈顶元素最先能被删除B.栈顶元素最后才能被删除C.栈底元素永远不能被删除D.栈底元素最先被删除

72.以下选项中不属于字符常量的是()。

A.

B.

C.

D.

73.

74.下列标识符不是关键字的是()。

A.breakB.charC.SwithchD.return

75.有以下程序:

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

A.3B.1C.2D.0

76.在软件设计中,不属于过程设计工具的是()。

A.PDLB.DFD图C.PAD图D.N—S图

77.有以下程序:

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

A.2,3,1,6,8,7,5,4,10,9,

B.10,9,8,7,6,5,4,3,2,l,

C.1,2,3,4,5,6,7,8,9,10,

D.10,9,8,7,6,1,2,3,4,5,

78.在下列选项中,没有构成死循环的是()。

A.

B.

C.

D.

79.有以下程序:

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

A.1B.11C.6D.21

80.有以下程序:

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

A.9,18B.8,11C.7,11D.10,14

五、程序改错题(1题)81.下列给定的程序中,函数proc()的功能是:将str所指字符串中出现的t1所指字符串全部替换成t2所指字符串,所形成的新的字符串放在w所指的数组中。在此处,要求t1和t2所指字符串的长度相同。例如,当str所指字符串中所指的内容为abcdabcdef9,t1所指字符串中的内容为bc,t2所指字符串中的内容为11时,结果在w所指的数组中的内容应为alldalldefg。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写函数proc(),该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。例如,若二维数组中的数据为:

WWW

SSS

HHH

III

则字符串中的内容应是WSHIWSHIWSHI。

注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。

试题程序:

参考答案

1.C

2.D关系模型采用二维表来表示,简称表。本题答案为D选项。

3.C

4.B

5.A%d表示以字符和整型类型的格式输出,%c表示以字符类型的格式输出,%s表示以字符串类型的格式输出。选项A中,‘s’是字符,不能用%s格式来输出。故本题答案为A选项。

6.D

7.D

8.D解析:本题主要考查自加(++)、自减(--)运算符的使用。“++i,--i”在使用i之前,先使i的值加1或者减1,然后再使用i此时的值参与运算;“i++,i--”是在使用i参与表达式运算之后,再使i的值加1或者减1。本题中--a和++b是先执行a减1和b加1操作,再输出表达式的值。

9.D

10.B

11.D解析:标识符是C语言中用来表示变量名、数组名、函数名、指针名、结构名、联合名、枚举常数名、用户定义的数据类型名、语句标号等用途的字符序列。标识符由1~32个字符组成,第一个字符必须是字母或下划线,后面的字符可以是字母、数字或下划线。标识符不能与C关键字相同,并区分大小写。选项D)错误,因为int是C语言中的关键字。

12.D

13.B

14.B

15.A

16.C

17.D

18.A

19.A

\n本题考查函数的调用,从主函数传递到调用函数中,*a的值为0,因此当执行完调用函数后,b[0]的值为6。

\n

20.C由题目的已知条件函数fun的定义形式voidfun(charch,floatx){…)可知第一个形参为字符型,所以A不符合,第二个形参为精度型,所以D不符合,函数fun定义为void型(无论返回值型),故其没有返回值,所以选项B错误。选项C的第一个实参的类型为字符型,第二个实参的类型为单精度型,与函数fun的形式参数的类型相符合,所以选项C为正确答案。

21.fseek(文件指针位移量起始点)fseek(文件指针,位移量,起始点)解析:本题考查函数fseek的用法。fseek函数的调用形式为:

fseek(文件指针,位移量,起始点)

“起始点”用0,1或2代替,其中,0代表“文件开始”;1为“当前位置”;2为“文件末尾”。“位移量”指以“起始点”为基点,向前移动的字节数。ANSIC和大多数C版本要求位移量是long型数据,这样当文件的长度大于64k时不致出现问题。ANSIC标准规定在数字的末尾加一个字母L,就表示long型。

22.length++i<lengthlength++\r\ni<length解析:第—个循环极有可能是计算串的长度,在i<=length时字符才被删除,被删除的是从第i个到第i+n或最后一个间的所有字符。删除前,应判断i<=length。由于已经进行了-i运算,故实际应填入i<length。

23.179179解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。本题中的二叉树有80个叶子结点,因此,该二叉树有80-1=79个度为2的结点;又知本题中的二叉树有10个度为1的结点。因此,本题中的二叉树总结点数为:叶子结点数+度为1的结点数+度为2的结点数=80+10+79=179

24.s[i++]s[i++]解析:本题中为了能实现字符串的拷贝,需要使字符数组s从头到尾依次遍历其所有元素。本题应使用i的自增后置来实现。

25.-4-4解析:if-else构造了一种二路分支选择,是一种最基本的选择结构,if(条件)S1(if分结构)elseS2(else分结构),它的工作过程是:先对条件表达式进行判断,若为真(成立,值为非零),就执行if分结构(S1);否则(不成立,值为0),就执行else分结构(S2)。本题中,n=O,可以判断(!n)为真,执行“x=x-1=2-1=1;m=1”,可以判断(m)为真,执行“x=x-2=1-2=-1;”进而可以判断(x)为真,执行x=x-3=-1-3=-4。所以,最后输出为-4。

26.!feof(fP)!feof(fP)解析:统计文件中字符个数的算法可描述如下:首先判断文件位置指针是否指向了文件尾,如果不是则读出一个字符,同时字符的个数加1,再判断文件位置指针是否位于文件尾,如此循环,直到文件位置指针位于文件尾为止。本题首先以读文件的方式打开了文件“fname.dar”,如果打开成功则把返回的文件型指针赋值给fp,然后通过循环求文件中的字符数。首先判断文件位置指针是否位于文件尾,如果不是则循环读取字符,每次字符数加1。所以下划处应填循环条件,文件位置指针不是指向文件尾,即“!feof(fp)”。

27.-1-1解析:strcmp(s1,s2)函数的作用是:对字符数组s2和字符数组s1进行比较。如果s1<s2,则返回负数;如果s1==s2,则返回0;如果s1>s2,则返回正数。

28.继承继承解析:在面向对象的程序设计方法中,某些属性和方法是可以共享的,由于类从父类中继承而来,这样提高了软件的可重用性。

29.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之间的奇数之和。

30.空间空间

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

32.*b>*a

33.\0's\\0'\r\ns解析:本题选通过for循环从键盘读入20个字符,然后在最后赋一定值'\\0'后为结束标志,再使指针p指向字符串的首地址。最后通过while循环对字符串进行扫描并输出。

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

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

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

37.数据元素。数据元素。

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

39.从定义到本源文件结束从定义到本源文件结束解析:C语言规定,宏名的有效范围为从定义宏到本源程序结束。

40.33解析:软件系统结构图的宽度:整体控制跨度(最大模块数的层)的表示。

41.A

42.C解析:strcpy(s1,s2)函数的功能是将字符串s2复制到字符串s1中(注意:要保证s1存储区能容纳下s2字符串)。

43.D解析:字符变量的值为单个字符,并用单引号包含,而本题中的单引号中是两个字符,不是合法说明。

44.A

45.B解析:需求分析是软件定义时期的最后一个阶段。可以概括为4个方面:①需求获取;②需求分析;⑧编写需求规格说明书;④需求评审。

46.D解析:在C语言中,逻辑运算符有4个,它们分别是:!(逻辑非)、||(逻辑或)、&&及(逻辑与)、^(异或)。在位运算里面还有&(位与)、|(位或)的运算。本题考查逻辑与运算符的用法,在表达式x=(a&&b)&&(c<'B');中,先判断a&&b条件,逻辑与条件的两边都要保证为1,即a和b都成立,当然c<'B'是成立的,显然,该表达式的值为1。

47.D解析:strcat(p1,p2)将字符串abcABC放到了*p1所指向的存储单元中;strcpy在本题将abcABC复制到str+2所指向的存储单元中,即覆盖原str数组中的字符z及其后的所有字符,故str的值为“xyabcABC”。

48.B

49.C本题考查的是顺序查找。在进行顺序查找过程中,如果线性表中的第一个元素就是被查找元素,则只需做一次比较就查找成功,查找效率最高;但如果被查找的元素是线性表中的最后一个元素,或者被查找的元素根本就不在线性表中,则为了查找这个元素需要与线性表中所有的元素进行比较,这是顺序查找的最坏情况。所以对长度为n的线性表进行顺序查找,在最坏情况下需要比较n次。故本题答案为C。

50.A解析:本题程序一开始定义了一个字符数组ss,并用一个字符串常量初始化之。然后使用gets()函数从键盘缓冲区读入一个字符串'ABC',此时gets()将改变数组的前4个元素为{\'A\',\'B\',\'C\',\'\\0\'}。接下来的strcat()函数将一个字符串连接到字符串ss之后,因为ss[3]被gets()设置为\'\\0\'(字符串结束标志),故strcat()从ss[3]开始将'6789'依次写入ss[3]、ss[4]、ss[5]、ss[6],并将一个\'\\0\'写入ss[7]。所以输出结果是ABC6789,故应该选择A。

51.D解析:在C语言程序中,可以用一个符号名来代表一个常量,称为符号常量。这个符号名必须在程序中进行特别的“指定”,并符合标识符的命令规则。在本题中圆周率π是一个符号常量,但在程序中并没有指定其值,所以编译器找不到其值就会报错。所以选项D)正确。

52.D解析:数据流图有4种成分:源点或终点、处理、数据存储和哦数据流。数据存储是处于静止状态的数据,数据流是处于运动中的数据。

53.B解析:本题考查C语言3个知识点:①将一个字符赋给一个字符变量时,并不是将该字符本身存储到内存中,而是将该字符对应的ASCII码存储到内存单元中;②大写字母的ASCII码值小于其对应小写字母的ASCII码值;③只要逻辑与运算符&&的两个运算对象都为非零,返回值就是1。

54.D解析:由题意可知,小写字符a和大写字符A的ASCII代码相差为32,所以选项C)能将大写字符c的ASCII代码转换为小写字符c的ASCⅡ代码;选项A)和C)左侧的表达式都是大写字符c与大写字符A的差与'a'的ASCII代码的和就是小写字符c的ASCII代码。而选项D)中应该是加上'a',而不是减去'a'。

55.B解析:本题考查函数的一些概念.main()函数是一个程序的主函数,它由系统调用,所以选项A不正确。一个C语言源程序文件可以只包含一个函数,每个源文件都可以被单独编译成。obj文件,最后链接成可执行文件。因此每个函数都可以被单独编译,选项B正确。一个C程序必须从主函数main()开始运行,其他函数只能是直接或间接被main()函数调用才能得以运行,因此选项C错误。C语言不支持函数的嵌套定义,所有函数只能是全局函数,所以选项D错误。故应该选择B。

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

57.C解析:本题考查指向数组的指针变量的声明。这里的p表示一个指向数组的指针;*p表示指针p指向地址的内容。

58.D解析:在程序中,当L的值为5和4时,case都没有与其匹配的值,所以执行default语句;当k=3时,执行n+=k;得n=3;当L=2时,执行case2:然后顺序执行case3:n+=k;得n=5;当k=1时,执行case1:n+=k;得n=6,然后顺序执行case2:和case3:n+=k;使得n=7。

59.C解析:本题的考查点是根据程序写出数学函数关系。题中的两个判断语句实际上指出了y取值的条件,即是当x大于零时y取1;当x小于零时y取0;当x等于零时y值不变,为-1。

60.A解析:分析题目中给出的表达式可知,如果a>b和b>c同时成立,k=1,否则k=0。所以,4个选项中选项A符合题意。

61.B解析:改变文件位置的指针函数fseek()的调用形式为:fseek(fp,offset,position);。fseek函数参数说明:“fp”是指向该文件的文件型指针;“offset'’为位移量,指从起始点position.到要确定的新位置的字节数。也就是以起点为基准,向前移动的字节数。ANSIC要求该参数为长整型量;“position”为起始点,指出以文件的什么位置为基准进行移动,position的值用整型常数表示,“0”表示文件的开头,“1”表示文件的当前位置,“2”表示文件的末尾。

62.D

63.C字符常量用一对单引号括起来,而且单引号之内只能有一个字符。

64.B

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

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

另外,本题还考查连接字符串的strcat函数,其调用方式是:strcat(字符数组,字符串)。功能是把”字符串”连接到”字符数组”中的字符串尾端,

66.B主函数中首先定义了一个3行2列的数组a,初始时各元素的值为0。定义了一个指向数组的指针ptr[2],并用该指针指向数组a,因为该指针为指向有2个元素的数组的指针,故只能指向数组a的前2行,虽然在第一个for语句中有语句ptr=a+2,指向数组a的第3行,并对该指针所指的数组赋值,实际上这条语句是无效的,超过了指针ptr的定义范围。对指针输入1,2,3时,只有1和2有效,通过指针ptr只能更改数组的前2行元素的数据。ptr=a指向a[0],即第1行的起始地址。ptr=a+1指向a[1],即第2行的起始地址。

后面的2个for循环是将数组a进行输出,最后结果为

10

20

00

67.B

68.D本题考查逗号运算符的运算方式,逗号运算符的作用是将若干表达式连接起来,它的优先级别在所有运算符中是最低的,结合方向为”自左至右”。A)选项和c)选项的结果是一样的,可展开为:x=x*(x+1)=3*4=12;B)选项中先执行x++,因为++运算符

温馨提示

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

评论

0/150

提交评论