2021-2022年湖南省永州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2021-2022年湖南省永州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2021-2022年湖南省永州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2021-2022年湖南省永州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2021-2022年湖南省永州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年湖南省永州市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设有序表中的元素为(13,18,24,35,47,50,62),则在其中利用二分法查找值为24的元素需要经过()次比较容易

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

2.设有定义:intn=0,*p=&n,**q=&p;则下列选项中正确的赋值语句是()。

A.p=1;B.*q=2;C.q=p;D.*p=5;

3.有以下程序:#include<stdio.h>int*f(int*s){s[1]+=6;*s=7;s+=2;returns;}main(){inta[5]={1,2,3,4,5},*p=a;P=f(P);printf(“%d,%d,%d\n”,a[0],a[1],*p);}程序运行后的输出结果是()。

A.9,8,9B.7,8,7C.7,8,3D.1,2,1

4.

5.在下面的二维数组定义中,正确的是()。

A.inta[5][];

B.inta[][5];

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

D.inta[](10);

6.以下程序的输出结果是()。#include<stdio.h>main(){intn=4;while(n--)printf("%d",--n);}

A.20B.31C.321D.210

7.以下程序的输出结果是()。voidprt(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]);)A.1,2,3,4,5B.2,3,4,5,6C.3,4,5,6,7D.2,3,4,5,1

8.设散列表长m=14,散列函数H(K)=K%11,已知表中已有4个结点:r(15)=4;r(38)=5;r(61)=6;r(84)=7,其他地址为空,如用二次探测再散列处理冲突,关键字为49的结点地址是_____。

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

9.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式()。

A.从左起输出该字串,右补空格B.按原字符长从左向右全部输出C.右对齐输出该字串,左补空格D.输出错误信息

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

#include<stdio.h>

intb=2;

intfunc(int*A)

{b+=*a;retumb;}

main()

{inta=1,t=2;

t+=func(&A);

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

}

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

11.有以下程序:intfun(intn){if(n==l)returnl;elsereturn(n+fun(n一1)):}main{intx;scanf("%d",&x);x=fun(x);printf("%d\n",x):}执行程序时,给变量X输入10,程序的输出结果是()。A.55B.54C.65D.45

12.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

13.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}当运行时输入:a<回车>后,以下叙述正确的是()。

A.变量c1被赋予字符a,c2被赋予回车符

B.程序将等待用户输入第2个字符

C.变量c1被赋予字符a,c2中仍是原有字符2

D.变量c1被赋予字符a,c2中将无确定值

14.若定义下列结构体,结构体变量p的出生年份赋值正确的语句是()。structst{intx;inty;intz;}structworker{charname[20];charsex;structstbirth;}p;

A.x=1987B.birth.x=1987;C.p.birth.x=1987;D.p.x=1987;

15.以下程序的输出结果是______。charcchar(charch){if(ch>='A'&&ch<='z')ch=ch-'A'+'a';returnch;}main(){chars[]="ABC+abc=defDEF",*p=s;while(*p){*p=cchar(*p);p++;}printf("%s\n",s);}

A.abe+ABC=DEFdef

B.abc+abe=defdef

C.abcaABCDEFdef

D.abcabcdefdef

16.计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的事()。

A.C语言程序仅可以编译执行B.C语言程序仅可以解释执行C.C语言程序既可以编译执行又可以解释执行D.以上说法都不对

17.有以下程序:#include<stdio.h>main(){chara=H;a=(a>=Aa<=2)?(a-A+a):a;printf("%c\n",a);}程序运行后的输出结果是()。A.AB.aC.HD.h

18.若有定义语句“char*s1=“OK”,*s2=“ok”;”,以下选项中,能够输出“OK”的语句是()。

A.if(strcmp(s1,s2)!=0)puts(s2);

B.if(strcmp(s1,s2)!=0)puts(s1);

C.if(strcmp(s1,s2)==1)puts(s1);

D.if(strcmp(s1,s2)==0)puts(s1);

19.有以下程序

main()

{

intn[3],i,j;

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

n[i]=0;

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

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

n[j]=n[i]+1;

printf("%d\n",n[1]);

}

程序运行后的输出结果是A.A.2

B.1

C.0

D.3

20.若有说明语句:charc='\72'则变量c()。

A.包含1个字符B.包含2个字符C.包含3个字符D.说明不合法,c的值不确定

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

main()

{inta=2,b=4,e=6;

int*p1=&a,*p2=&b,*p;

*(p=&c)=*p1*(*p2);

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

}

22.若a=10,b=20,则表达式!(a<b)的值是【】。

23.结构化分析方法是面向______进行分析的方法。

24.若有如下程序:

main()

{intx=4;y=3,Z=2,t;

t=x<y<z;

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

}

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

25.若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是______。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

26.若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为【】。

27.以下和程序中,主函数调用了lineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值,请填空。

#defineN3

#defineM4

voidlineMax(intx[N][M])

{inti,j,p;

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

{p=0;

for(j=1;j<M;j++)

if(x[i][p]<x[i][j]【】;

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

}

{

main()

{intx[N][M]={1,5,4,2,6,4,3,8,2,3,1};

【】;

}

28.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体“项目主管”与实体“项目”的联系属于______的联系。

29.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>。则输出结果是______。

#include<stdio,h>

main()

{

chara,b;

a=geCchar();scanf("%d“,&b);

a=a-'A'+‘0';b=b*2;

printf('%c%c\n",a,b);

}

30.软件的需求分析阶段的工作,可以概括为四个方面:【】、需求分析、编写需求规格说明书和需求评审。

31.面向对象的模型中,最基本的概念是对象和______。

32.设inta=5,b=6,表达式(++a==b--)?++a:--b的值是【】。

33.软件测试中路径覆盖测试是整个测试的基础,它是对软件【】进行测试。

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

#include<stdio.h>

msin()

{inti,n[]={0,0,0,0,0};

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

{n[i]=n[i-1]*2+1;

printf("%d",n[i]);

}

}

35.若有定义doublea[5];,则a数组元素下标的上限为______。

36.若a是int型变量,则下列表达式的值为______。

(a=2*3,a*2),a+4

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

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

printf("%d\n",fun(a,b)/m);

}

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

main()

{char*p[]={"BOOL","OPK","H","SP"};

inti;

for(i=3;i>0;i--,i--)printf("%c",*p[i]);

printf("\n");}

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

voidprint(intn,intaa)

{inti;

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

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

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

}

printf("\n");

}

40.以下函数把b字符串连到a字符串的后面,并返回a中新字符串的长度,请填空。

strcen(chara[],charb[])

{

intnum=0,n=0;

while(*(a+num)!=【】)num++;

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

returnnum;

}

三、1.选择题(20题)41.设有intx=11;则表达式(x++*1/3)的值是()。

A.3B.4C.11D.12

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

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

43.有以下程序:main(){intx=3,y=2,z=1;printf("%d\n",x/y&~z);}程序运行后的输出结果是()。

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

44.关系表中的每一横行称为—个______。

A.元组B.字段C.属性D.码

45.下列关系运算中,能使经运算后得到的新关系中元组个数少于原来关系中元组个数的是()。

A.选择B.投影C.连接D.并

46.若要求从键盘读入含有窄格字符的字符串,应使用函数()。

A.getc()B.gets()C.getchar()D.scanf()

47.以下叙述中错误的是()。

A.C程序中的#include和#define行均不是C语句

B.除逗号运算符外,赋值运算符的优先级最低

C.C程序中,j++;是赋值语句

D.C程序中,+、-、*、/、%是算术运算符,可用于整型和实型数的运算

48.设有下列说明语句:StrcutStr{intx;floaty;charz;}st;则下列的叙述中不正确的是()。

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

B.st是结构体类型名

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

D.structstr是结构体类型名

49.若有下面的说明和定义,则sizeof(structaA)的值是()struetaa{intr1;doubler2floatr3;unionuu{charu1[5];longu2[2];}ua;}mya;

A.30B.29C.24D.22

50.下列属于C语言语句的是______。

A.printf("%d\n",a)

B.#include<stdio.h>

C.a=b;b=c;c=a;

D./*thisisaprogram*/

51.以下程序的输出结果是_______。main(){inti,a[10];for(i=9;i>=0;i-)a[i]=10-i;print("%d%d%d,a[2],a[5],a[8]);}

A.258B.741C.852D.369

52.以下程序的输出结果是#include<stdio.h>#include<string,h>main(){charb1[8]="abcdefg",b2[8],*pb=b1+3;while(--pb>=b1)strcpy(b2,pB);printf("%d\n",strlen(b2));}

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

53.下面程序段的运行结果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;pfintf("%d\n",*(p+3));}

A.67B.0C.字符'C'的地址D.字符'C'

54.有以下程序

intf(intn)

{if(n==1)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

for(i=1;i<3;i++)j+=f(i);

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

程序运行后的输出结果是

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

55.栈和队列的共同点是()。

A.都是先进后出B.都是先进先出C.只允许在端点处插入和删除元素D.没有共同点

56.设有下列二叉树:

对此二叉树中序遍历的结果是

A.ABCDEFB.DABECFC.BDAECFD.DBEFCA

57.下列说法正确的是()

A.在执行C程序时不是从main函数开始的

B.C程序书写格式严格限制,一行内必须写一个语句

C.C程序书写格式自由,一个语句可以分写在多行上

D.C程序书写格式严格限制,一行内必须写一个语句,并要有行号

58.以下程序的输出结果是()。#include<stdio.h>voidprt(int*x,int*y,int*z){printf("%d,%d,%d\n",++*x,++*y,*(z++));}main(){inta=10,b=40,c=20;prt(&a,&b,&C);prt(&a,&b,&C);}

A.11,42,3112,22,41

B.11,41,201,42,20

C.11,21,4011,21,21

D.11,41,2112,42,22

59.以下数组定义中不正确的是_______。

A.inta[2][3];

B.intb[][3]={0,1,2};

C.intc[100][100={0};

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

60.下面结构体的定义语句中,不正确的是______。

A.structdate{intmonth;intday;intyear;}Structdatedatel;

B.stmctdate{intmonth;intday;intyear;}datel;

C.struct{intmonth;intday;intyear;}date1;

D.#defineDATEstmctdateDATE{intmonth;intday;intyear;}datel;

四、选择题(20题)61.

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

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

63.C语言中,合法的字符串常量是()。

A."M"B.\tC.100D.MUST

64.

65.

66.

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

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

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

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

69.层次型、网状型和关系型数据库划分原则是()。

A.记录长度B.文件的大小C.联系的复杂程度D.数据之间的联系方式

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

A.抽象

B.模块化

C.自底向上

D.信息隐蔽

71.已定义:inta=25,b=14,c=19;,以下三目运算符(?:)所构成语句的执行后

a<=25&&b--<=2&&c?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf("###a=%d,b=%d,c=%d\n",a,b,c);程序输出的结果是

A.***a=25,b=13,c=19B.***a=26,b=14,c=19C.###a=25,b=13,c=19D.###a=26,b=14,c=19

72.

73.读取二进制文件的函数调用形式为:fread(buffersize,count,fp);,其中buffer代表的是()。

A.一个文件指针,指向待读取的文件

B.一个整型变量,代表待读取的数据的字节数

C.一个内存块的首地址,代表读人数据存放的地址

D.一个内存块的字节数

74.若有定义语句:

char}sl=‘’0K”,:Its2=”ok”;

以下选项中,能够输出“OK”的语句是()。

A.if(strcmp(sl,s2)!=0)puts(s2);

B.if(strcmp(sl,s2)!=0)puts(s1);

C.if(strcmp(sl,s2)==1)puts(s1);

D.if(strcmp(sl,s2)==0)puts(s1);

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

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

76.有如下程序

voidfunc1(intst[],inti)

{printf("%c",st[i]);

if(i<3){i+=2;func2(st,i);}

}

voidfunc2(intst[],inti)

{printf("%c",st[i]);

if(i<3){i+=2;func1(st,i);}

}

main()

{charst[]="hello,friend!";

inti=0;func1(st,i);

printf("\n");}

程序执行后输出的结果是

A.helloB.hel

C.hloD.编译出错

77.

78.

79.以下定义数组的语句中错误的是()。

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

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:给一维数组arr输人任意4个整数,并按如下的规律输出。例如,若输入2345,则程序运行后输出以下矩阵:请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.假定输入的字符串中只包含字母和*号。请编写函数proc(),它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参m给出了字符串的长度,形参h给出了字符串中前*号的个数,形参e给出了字符串中最后*号的个数。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为****a*bc*def*g****,删除后,字符串中的内容则应当是a*bc*def*g。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.C

2.D解析:选项A),B),C)的指针赋值表达方式都不正确,*p=5表达整数5放到指针p所指向的存储单元中。注意:通过指针引用一个存储单。

3.C在main函数中调用了f函数使形参s指向数组a。执行“S[1]+=6”;语句,则“a[1]=8;”执行“*s=7;”语句,则“a[0]=7”;执行“s+=2;”语句,则s指向数组的第3个元素并返回s。调用后,函数返回值赋给指针P,则*P=3,因此输出的结果为7,8,3。故本题答案为C选项。

4.C

5.C

6.A解析:n--是先使用后自减,--n是先自减后使用。n=4时,执行n--后,n变为3,执行--n后,n变为2,所以,第一次输出时,n为2;同上过程,第二次输出时,n为0。

7.B函数调用时,prt函数的作用是为使m数组中的数自增1,因此数组下标从0开始,每个元素都自加1。

8.D

9.B

10.B解析:本题考查函数调用时的参数传递。在执行函数func时,由于全局定义了一个变量b,所以在函数体中执行时b=2+1=3,最终t=2+3=5。

11.A函数intfun(intn)的功能是求1+2+…+n的值并返回。所以执行程序时,给变量x输入10后,执行语句“x=fun(x);”,X的值将变为1到10中10个整数的累加和,即55。

12.B本题考查for循环的使用。对于第1个for循环,任何一个i,内层j的循环都要使j~0到3,j=4时不符合,所以退出j循环;然后i减1,J仍然要从0~3,j=4时退出J循环直到i变成0,退出i循环。第一条for语句执行6次,第二条for语句执行4次,所以内循环体执行6*4=24次。

13.A解析:本题考查的是getchar()函数。getchar()函数执行时将从键盘缓冲区中读取用户的输入,而不管输入的是否可打印字符,所以当输入a<回车>后,键盘缓冲区被输入的实际上是两个字符:'a'和'\\n'。故选项A的说法是正确的。

14.C解析:本题主要考查怎样为嵌套定义的结构中的成员赋值:由于worker中的birth是一个st型的结构,在给birth赋值时,不能将birth作为一个整体,要用“.”运算再深入一层访问到最基本的成员x、y、z。

15.B解析:字符数组元素作函数参数是单向的值传递。函数cchar的功能是将大写字母转换为小写字母。主函数中while循环语句的条件是判断指针p当前指向的字符是否为空,若不为空,则调用函数cchar,即主函数中通过循环语句将字符串'ABC+abc=defDEF'中的大写字母全部转换为小写字母,因此printf的输出结果为选项B。

16.A解释执行是计算机语言的一种执行方式。由解释器现场解释执行,不生成目标程序。如BASIC便是解释执行。一般解释执行效率较低,低于编译执行。而C程序是经过编译生成目标文件然后执行的,所以C程序是编译执行。

17.D多元运算符问号前面表达式为真,所以(a-A+a)赋值给a,括号里的运算是把大写字母变成小写字母,所以答案应为选项D。

18.B“strcmp(S1,S2)”是字符串比较函数,比较规则是两个字符串自左向右逐个字符相比较(按照ASCII值大小)。因为“OK”<“ok”,所以“strcmp(S1,S2)”为负值。故本题答案为B选项。

19.D初始时定义一个大小为3个一维整型数组,第一个for语句是对数组赋初值,每个值都为0。后面是一个for语句的嵌套调用,外层的循环变量i的取值为[0,2],内层循环变量的取值范围为[0,2]。最初外层的循环变量i=0,内层的循环变量j取值从0到2,计算n[j]=n[0]+1,得到n[0]=1,n[1]=1,n[2]=1。外层for语句的循环变量为1时,内层的循环变量j取值从0到2,计算n[j]=n[1]+1,得到n[0]=2,n[1]=2,n[2]=2。外层for语句的循环变量为2时,内层的循环变量j取值从0到2,计算n[j]=n[2]+1,得到n[0]=3,n[1]=3,n[2]=3。最后的输出结果为3。

20.A解析:C语言的字符型常量中,允许用一种特殊形式的字符常量,就是以一个“\\”开头的字符。其中,“\\ddd”表示用ASCII码(八进制数)表示一个字符,本题中的charc='\\72'H口表示占一个字符的变量c的ASCII码值。

21.88解析:本程序定义了3个指针变量p1、p2、p,并且将a、b的地址分别赋给p1、p2,则*p1=a=2,*p2=b=4,所以表达式*p1*(*p2)的值是8。在赋值语句的左边是*(p=&c),即使指针p指向了变量c,因而*(P)代表了c的存储单元,赋值语句“*(p=&c)=*p1*(*p2);”是把整数8赋给了变量c。

22.00解析:已知a=10,b=20,所以逻辑表达式a<b的值为true,即为1,在这个表达式前面有一个逻辑运算符!,表示反操作,所以整个语句的值应当为false,即为0。

23.数据流数据流解析:结构化分析方法的实质是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。

24.11解析:因为x=4,y=3,所以表达式x<y的值为假(0),又因为z=2,所以0<z的值为真(1),故最终输出的结果为1。

25.*(p+5)或p[5]*(p+5)或p[5]

26.88解析:fabs函数功能是求x的绝对值,计算结果为double型。pow功能是计算x的y次方的值,计算结果同样为double型。所以本题表达式相当于2.0的3.0次方,结果为8.000000。

27.p=jx[i][p]lineMax(x)

28.1对多(或1:N)1对多(或1:N)

29.1B1B解析:在C语古中,字符型变量可以看作整型变量来对待,与整型所不同的是字符型变量在内存中只占1个字节,而整型是2个字节.字符型变量中所有的数值是它所表示字符的ASCII码值.ASCII码中的一些相关字符是顺序排列的,如'0',的ASCII码值为48,'1'为49以此类推一直到'9';'A'的ASCII码值为65,'B'为66以此类推一直到'Z'。本题程序首先定义了两个字符型变量a和b,然后分别使用getchar()和scanf()函数读取输入的字符'B'和十进制整数33到a和b中,因为a-'A'+'0'等于,'B'-'A'+'0'='1'+'0'='1',而b*2等于33*2=66'A'+1='B'。所以最终输出的结果是:1B。

30.需求获取需求获取解析:软件的需求分析阶段的工作,可以概括为四个方面:需求获取、需求分析、编写需求规格说明书和需求评审。需求获取的目的是确定对目标系统的各方面需求;需求分析是对获取的需求进行分析和综合,最终给出系统的解决方案和目标系统的逻辑模型;编写需求规格说明书作为需求分析的阶段成果,可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标软件系统的确认,又可以作为控制软件开发进度的依据;需求评审是对需求分析阶段的工作进行的复审,验证需求文档的一致性、可行性、完整性和有效性。

31.类类

32.77解析:此表达式为三目运算符,++a的值为6,b--的值为6,则整个表达式的值为++a的值,++a的值为7。请注意前缀++,--和后缀++,--的区别。

33.结构结构解析:路径测试是白盒测试方法中的—种,它要求对程序中的每条路径最少检查一次,目的是对软件的结构进行测试。

34.1371513715解析:程序中n是一个有5个元素,且元素值全为0的数组。在for循环中,当i=1时,n[1]=n[0]*2+1,此时n[1]=1;i=2时,n[2]=n[1]*2+1,此时n[2]=3;i=3时,n[3]=n[2]*2+1,此时n[3]=7;i=4时,n[4]=n[3]*2+1,此时n[4]=15,循环结束。输出函数中%d后有空格,因此输出结果为13715。

35.44解析:一维数组元素的定义形式为:数组名[N],则该数组中元素的下限是0,上限是N-1。

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

37.22解析:本题变量m既是外部变量(值是13),又是fun函数的局部变量(值为3)。函数fun(x*y-m)的值为7*5-3=32,在main函数中,fun(a,b)/m中的m应取外部变量的值13,因此输出2。

38.SOSO解析:题中需要注意两个问题:一是for循环的修正表达式共执行两次“i-”操作;二是*p[i]是对某个字符的引用。

39.54

40.\0'n++

41.A解析:当自加运算符做后缀表达式的时候,表达式的值不变,只有变量的值增加1,所以表达式(x++*1/3)相当于(11*1/3),值为3。

42.A解析:符号名的命名不仅要符合语法,而且符号名的命名应具有一定实际含义,以便于对程序功能的理解。所以,选项B错误。程序设计风格强调“清晰第一,效率第二”,而不是效率第一。所以,选项C错误。程序中的注释部分虽然不是程序的功能,计算机在执行程序时也不会执行它,但在程序中加入正确的注释能够帮助读者理解程序,注释是提高程序可读性的重要手段。所以,选项D错误。本题的正确答案为A。

43.D解析:位与运算符“&”,按二进位进行“与”运算,如果两个相应的二进制位都为1,则该位的结果值为1,否则为0;取反运算符“~”,用来对一个二进制按位取反,即将0变1,1变0。在prinf()函数的表达式中,“&”前面表达式的值为1(3/2=1)表示为二进制为00000001,而按位取反运算符“~”的优先级高于按位与运算符“&”,先计算“&”后面的取反运算符“~”。z的二进制表示为00000001,取反后为11111110,最后进行“&”,即“00000001&11111110”可知结果为00000000,故最后的值为0。

44.A解析:在关系数据库中,关系模型采用二维表来表示,简称“表”。二维表是由表框架及表元组组成。在表框架中,按行可以存放数据,每行数据称为元组。

45.A解析:选择运算是在指定的关系中选取所有满足给定条件的元组,构成一个新的关系,而这个新的关系是原关系的一个子集。因此,一个关系经选择运算后得到的新关系中,元组个数少于原来关系中元组个数。

46.B解析:scanf()语句中用“空格”间隔不同的字符串,空格将被全部忽略掉,所以用scanf()函数不能输入空格;getchar()函数用于输入字符,其调用形式为:ch=getchar(),getchar()函数从终端读入一个字符作为函数值,把读入的字符赋给变量ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入Enter键时,读入才开始执行。gets()函数的调用形式为:gets(str_adr),其中str_adr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。ge

47.D解析:“%”是求余运算符,其两侧的数值只能为整型,不能用于实型数据的运算。

48.B解析:本题主要考查结构类型的定义:struct是结构体类型的关键字;structstr是结构体类型名;x、y、z都是结构体成员名;st是结构变量名。

49.D

50.C解析:在C语言中,一个完整的C语句必须在语句末尾出现分号,分号是C语句的必要组成部分。本题答案为C。

51.C解析:在本题运行时主要注意的是当i=9时,a[i]=10-9=1:i=8时,a[i]=10-8=2;i=7时,a[i]=10-7=3;……依此类推,直到i=0时,a[i]=10-0=10:此时,i的值已变为-1,判断for的循环条件,不成立,然后输出a[2],a[5],a[8]分别为8,5,2。

52.D解析:本题考核的知识点是指针变量的运算及字符函数strcpy()的应用。strepy()函数的作用是把第二个参数代表的字符串,复制到第一个参数指向得数组中.首先定义了两个字符数组b1和b2,并用一个字符串给b1赋初值,然后定义了一个字符型指针变量pb,通过赋初值使它指向b1[3]。接着执行while循环,该循环执行了3次;第一次判断条件“--pb>=b1”,使pb的值为“b1+2”,执行“strcpy(b2,pB);”后,b2中的内容为“cdefg”;第二次判断条件“--pb>=b1”,使pb的值为“b1+1”,执行“strcpy(b2,pB);”后b2的内容为“bcdefg”第三次判断条件“--pb>=b1”使Pb的值为“b1”,执行“strcpy(b2,pB);”后b2的内容为“abcdefg”。最后输出b2数组中存放的字符串长度,显然是7。(这里还有一个关键点:就是每当执行一次while循环判断条件,就执行一次“--Pb”,他使得指针pb自减1,即前移一位)所以,4个选项中D为所选。

53.B解析:先定义了一个指向字符型数组str的指针P,指针P指向数组str的首地址,p+3将指针指向str[3],又因为字符型数组在存放字符串时会自动在末尾加上'\\0',所以*(p+3)=0。

54.B解析:在main函数中,对f(1)和f(2)的值进行了累加。

f(1)=1

f(2)=f(1)+1=2

最后,j的值为1+2=3

55.C栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种“后进先出”的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种“先进先出”的线性表:本题答案为C)。

56.C解析:二叉树的遍历分为先序、中序、后序三种不同方式。本题要求中序遍历,遍历顺序应该为:中序遍历左子树->访问根结点->中序遍历右子树。按照定义,中序遍历序列是BDAECF。

57.C

58.B

59.D解析:一维数组的定义方式为:

类型说明符数组名[常量表达式];

选项A符合此定义形式,正确;C语言中多维数组赋初值时可以部分赋值,也可以不指定除第一维以外的其他维的大小,故选项C正确;另外,如果对全部数组元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省,所以选项B正确,而选项D是错误的。

60.A

61.C

62.D【解析】算法的空间复杂度是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行中所需要的额外空间。其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间。如果额外空间量相对于问题规模来说是常数,则称该算法是原地工作的。在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的额外空间。

63.A字符串常量必须用双引号括起来,因此只有选项A)正确。

64.D\r\n

65.D

66.C

67.A本题主要考查按位求反运算:十六进制整型常量的形式是以数字Ox开头的十六进制字符串;位求反运算的规则是:将二进制表示的运算对象按位取反,即将1变0,将0变1。

68.AA选项中l15L表示ll5是长整型数据,合法。B选项是八进制常量的表示方法,但是在八进制中不能含有数字8,所以B错误。c选项中e后面应该是整数不能是小数l.5,所以c错误。D选项中八进制常量应该是数字…0开始,而不是字母…O开始。

69.D层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的联系方式。

70.C

71.C本题主要考查三目运算符(?:)。在本题中,有三个整型变量a、b、c,它们的初值分别为25、14、19,然后执行三目运算,a<=25&&b--<=2&&c等价于(a<=25)&&(b--<=2)&&c。

由于变量a的初值为25,因此,(a<=25)的结果为真;由于变量b的初值为14,(b--<=2)的结果为假,根据&&的性质可知,其中的操作数只要有假,则计算结束,返回最终的结果为假,因此,后面的程序执行printf(″###a=%d,b=%d,c=%d\n″,a,b,c)部分,那么答案只能在C和D中产生,从这两个选项中给出的结果可以看出,它们的区别只有b的输出结果,一个是13,而一个是14。从上面的程序分析,变量b进行了一次自减操作,最后的结果应该是13。因此,本题的正确答案是C。

72.B

73.Cfread函数中的参数buffer是内存块的首地址,输入的数据存入此内存块中。

74.Bstrcmp(sl,s2)是字符串比较函数,比较规则是两个字符串自左向右逐个字符相比(按照ASCIl码值大小),-以第一个不相同的字符的大小作为比较结果。因为。O。<10.,所以strcmp(sl,s2)为负值,只有B选项正确。

75.B逗号表达式a++,b++,a+b先计算a++,a=2;再计算b++,b=3;表达式的值就是a+b的值,为5。表达式C++的值是C递增前的值,为3。所以fun((a++,b++,a+b),C++)等价于fun(5,3),返回值为5+3=8。

76.D本题主要考查全局变量的作用域。在本题中,程序首先声明两个无返回值函数func1和func2。func1函数带有两个形参,一个是需要输出的数字,一个是输出数组元素的下标。在函数体中,首先输出以形参作为下标的数组元素值,然后执行if条件判断语句,其条件为形参变量i<3。如果结果为真,则将变量i加2后保存,然后调用func2函数;如果条件结果为假,则结束该函数。

从程序中不难看出,func2函数与func1函数基本类似,只是最后它对函数func1进行调用,与前者不同,两个函数是互相调用的。

在主函数中首先定义了一个字符数组,并赋了初值,然后定义一个变量i并赋值为0,如果数组st是一个全局数组,那么调用函数func1,根据我们对函数func1的分析可知,此时能输出st[0]即字符’h’,而此时if语句的结果为真,执行i加2并调用func2函数操作。此时变量i的值为2,因此,输出st[2]即字符‘l’,此时函数func2中的if条件语句结果为真,同样执行i加2并调用func1函数操作,然后通过func1函数输出st[4]即字符‘o’,但由于数组只是一个局部数组,局部数组的作用域是定义它的函数或者程序段,调用函数func1时,数组有效,当再调用函数func2时,已经超出了数组的作用域。因此,系统在编译时会报错。本题答案选D。

77.D

78.A

79.AA)选项中定义的数组为2行4列,而赋值时赋成了3行,因此出错。

80.BB选项输出的格式为%d,即为整型格式,所以输出字符A的ASCI1码值65,而不是字符A。由于大写字母比与其对应的小写字母的ASCI1码值小32,所以A正确。字符A的ASCI1码值就是65,所以以%C格式输出可以输出字符A,所以c正确。由于字符A的ASCI1码值比字符B的小1,所以D正确。

81.(1)错误:voidproc(intarr)

正确:voidproc(int*arr)

(2)错误:arrEj]=arr[j+1];

正确:arr[j]=arr[j-1];

【解析】由主函数ee的函数调用可知,函数proc的形参为整型的指针变量。因此,“voidproc(intarr)”应改为“voidproc(int*arr)”。从“a[j]=a[j+1];”可知,当“j=M-1”

时“a[j+1];”越界了,而程序的思路是把前一个数放到后一个中,再把最后面的数放到第一个中,因此把arr[j+1]改为arr[j-1]。

82.

【解析】题目要求不能用C语言提供的字符串函数,可以利用移动字符串指针来实现,首先移动字符串指针到第一个不是*的位置,通过指针的移动,来实现把第一个不是星号的字符与最后一个不是星号的字符放到a数组中,最后用ˊ\0ˊ来作为字符串结束的标志。

2021-2022年湖南省永州市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设有序表中的元素为(13,18,24,35,47,50,62),则在其中利用二分法查找值为24的元素需要经过()次比较容易

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

2.设有定义:intn=0,*p=&n,**q=&p;则下列选项中正确的赋值语句是()。

A.p=1;B.*q=2;C.q=p;D.*p=5;

3.有以下程序:#include<stdio.h>int*f(int*s){s[1]+=6;*s=7;s+=2;returns;}main(){inta[5]={1,2,3,4,5},*p=a;P=f(P);printf(“%d,%d,%d\n”,a[0],a[1],*p);}程序运行后的输出结果是()。

A.9,8,9B.7,8,7C.7,8,3D.1,2,1

4.

5.在下面的二维数组定义中,正确的是()。

A.inta[5][];

B.inta[][5];

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

D.inta[](10);

6.以下程序的输出结果是()。#include<stdio.h>main(){intn=4;while(n--)printf("%d",--n);}

A.20B.31C.321D.210

7.以下程序的输出结果是()。voidprt(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]);)A.1,2,3,4,5B.2,3,4,5,6C.3,4,5,6,7D.2,3,4,5,1

8.设散列表长m=14,散列函数H(K)=K%11,已知表中已有4个结点:r(15)=4;r(38)=5;r(61)=6;r(84)=7,其他地址为空,如用二次探测再散列处理冲突,关键字为49的结点地址是_____。

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

9.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式()。

A.从左起输出该字串,右补空格B.按原字符长从左向右全部输出C.右对齐输出该字串,左补空格D.输出错误信息

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

#include<stdio.h>

intb=2;

intfunc(int*A)

{b+=*a;retumb;}

main()

{inta=1,t=2;

t+=func(&A);

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

}

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

11.有以下程序:intfun(intn){if(n==l)returnl;elsereturn(n+fun(n一1)):}main{intx;scanf("%d",&x);x=fun(x);printf("%d\n",x):}执行程序时,给变量X输入10,程序的输出结果是()。A.55B.54C.65D.45

12.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

13.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}当运行时输入:a<回车>后,以下叙述正确的是()。

A.变量c1被赋予字符a,c2被赋予回车符

B.程序将等待用户输入第2个字符

C.变量c1被赋予字符a,c2中仍是原有字符2

D.变量c1被赋予字符a,c2中将无确定值

14.若定义下列结构体,结构体变量p的出生年份赋值正确的语句是()。structst{intx;inty;intz;}structworker{charname[20];charsex;structstbirth;}p;

A.x=1987B.birth.x=1987;C.p.birth.x=1987;D.p.x=1987;

15.以下程序的输出结果是______。charcchar(charch){if(ch>='A'&&ch<='z')ch=ch-'A'+'a';returnch;}main(){chars[]="ABC+abc=defDEF",*p=s;while(*p){*p=cchar(*p);p++;}printf("%s\n",s);}

A.abe+ABC=DEFdef

B.abc+abe=defdef

C.abcaABCDEFdef

D.abcabcdefdef

16.计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的事()。

A.C语言程序仅可以编译执行B.C语言程序仅可以解释执行C.C语言程序既可以编译执行又可以解释执行D.以上说法都不对

17.有以下程序:#include<stdio.h>main(){chara=H;a=(a>=Aa<=2)?(a-A+a):a;printf("%c\n",a);}程序运行后的输出结果是()。A.AB.aC.HD.h

18.若有定义语句“char*s1=“OK”,*s2=“ok”;”,以下选项中,能够输出“OK”的语句是()。

A.if(strcmp(s1,s2)!=0)puts(s2);

B.if(strcmp(s1,s2)!=0)puts(s1);

C.if(strcmp(s1,s2)==1)puts(s1);

D.if(strcmp(s1,s2)==0)puts(s1);

19.有以下程序

main()

{

intn[3],i,j;

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

n[i]=0;

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

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

n[j]=n[i]+1;

printf("%d\n",n[1]);

}

程序运行后的输出结果是A.A.2

B.1

C.0

D.3

20.若有说明语句:charc='\72'则变量c()。

A.包含1个字符B.包含2个字符C.包含3个字符D.说明不合法,c的值不确定

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

main()

{inta=2,b=4,e=6;

int*p1=&a,*p2=&b,*p;

*(p=&c)=*p1*(*p2);

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

}

22.若a=10,b=20,则表达式!(a<b)的值是【】。

23.结构化分析方法是面向______进行分析的方法。

24.若有如下程序:

main()

{intx=4;y=3,Z=2,t;

t=x<y<z;

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

}

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

25.若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是______。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

26.若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为【】。

27.以下和程序中,主函数调用了lineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值,请填空。

#defineN3

#defineM4

voidlineMax(intx[N][M])

{inti,j,p;

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

{p=0;

for(j=1;j<M;j++)

if(x[i][p]<x[i][j]【】;

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

}

{

main()

{intx[N][M]={1,5,4,2,6,4,3,8,2,3,1};

【】;

}

28.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体“项目主管”与实体“项目”的联系属于______的联系。

29.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>。则输出结果是______。

#include<stdio,h>

main()

{

chara,b;

a=geCchar();scanf("%d“,&b);

a=a-'A'+‘0';b=b*2;

printf('%c%c\n",a,b);

}

30.软件的需求分析阶段的工作,可以概括为四个方面:【】、需求分析、编写需求规格说明书和需求评审。

31.面向对象的模型中,最基本的概念是对象和______。

32.设inta=5,b=6,表达式(++a==b--)?++a:--b的值是【】。

33.软件测试中路径覆盖测试是整个测试的基础,它是对软件【】进行测试。

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

#include<stdio.h>

msin()

{inti,n[]={0,0,0,0,0};

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

{n[i]=n[i-1]*2+1;

printf("%d",n[i]);

}

}

35.若有定义doublea[5];,则a数组元素下标的上限为______。

36.若a是int型变量,则下列表达式的值为______。

(a=2*3,a*2),a+4

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

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

printf("%d\n",fun(a,b)/m);

}

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

main()

{char*p[]={"BOOL","OPK","H","SP"};

inti;

for(i=3;i>0;i--,i--)printf("%c",*p[i]);

printf("\n");}

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

voidprint(intn,intaa)

{inti;

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

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

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

}

printf("\n");

}

40.以下函数把b字符串连到a字符串的后面,并返回a中新字符串的长度,请填空。

strcen(chara[],charb[])

{

intnum=0,n=0;

while(*(a+num)!=【】)num++;

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

returnnum;

}

三、1.选择题(20题)41.设有intx=11;则表达式(x++*1/3)的值是()。

A.3B.4C.11D.12

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

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

43.有以下程序:main(){intx=3,y=2,z=1;printf("%d\n",x/y&~z);}程序运行后的输出结果是()。

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

44.关系表中的每一横行称为—个______。

A.元组B.字段C.属性D.码

45.下列关系运算中,能使经运算后得到的新关系中元组个数少于原来关系中元组个数的是()。

A.选择B.投影C.连接D.并

46.若要求从键盘读入含有窄格字符的字符串,应使用函数()。

A.getc()B.gets()C.getchar()D.scanf()

47.以下叙述中错误的是()。

A.C程序中的#include和#define行均不是C语句

B.除逗号运算符外,赋值运算符的优先级最低

C.C程序中,j++;是赋值语句

D.C程序中,+、-、*、/、%是算术运算符,可用于整型和实型数的运算

48.设有下列说明语句:StrcutStr{intx;floaty;charz;}st;则下列的叙述中不正确的是()。

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

B.st是结构体类型名

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

D.structstr是结构体类型名

49.若有下面的说明和定义,则sizeof(structaA)的值是()struetaa{intr1;doubler2floatr3;unionuu{charu1[5];longu2[2];}ua;}mya;

A.30B.29C.24D.22

50.下列属于C语言语句的是______。

A.printf("%d\n",a)

B.#include<stdio.h>

C.a=b;b=c;c=a;

D./*thisisaprogram*/

51.以下程序的输出结果是_______。main(){inti,a[10];for(i=9;i>=0;i-)a[i]=10-i;print("%d%d%d,a[2],a[5],a[8]);}

A.258B.741C.852D.369

52.以下程序的输出结果是#include<stdio.h>#include<string,h>main(){charb1[8]="abcdefg",b2[8],*pb=b1+3;while(--pb>=b1)strcpy(b2,pB);printf("%d\n",strlen(b2));}

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

53.下面程序段的运行结果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;pfintf("%d\n",*(p+3));}

A.67B.0C.字符'C'的地址D.字符'C'

54.有以下程序

intf(intn)

{if(n==1)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

for(i=1;i<3;i++)j+=f(i);

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

程序运行后的输出结果是

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

55.栈和队列的共同点是()。

A.都是先进后出B.都是先进先出C.只允许在端点处插入和删除元素D.没有共同点

56.设有下列二叉树:

对此二叉树中序遍历的结果是

A.ABCDEFB.DABECFC.BDAECFD.DBEFCA

57.下列说法正确的是()

A.在执行C程序时不是从main函数开始的

B.C程序书写格式严格限制,一行内必须写一个语句

C.C程序书写格式自由,一个语句可以分写在多行上

D.C程序书写格式严格限制,一行内必须写一个语句,并要有行号

58.以下程序的输出结果是()。#include<stdio.h>voidprt(int*x,int*y,int*z){printf("%d,%d,%d\n",++*x,++*y,*(z++));}main(){inta=10,b=40,c=20;prt(&a,&b,&C);prt(&a,&b,&C);}

A.11,42,3112,22,41

B.11,41,201,42,20

C.11,21,4011,21,21

D.11,41,2112,42,22

59.以下数组定义中不正确的是_______。

A.inta[2][3];

B.intb[][3]={0,1,2};

C.intc[100][100={0};

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

60.下面结构体的定义语句中,不正确的是______。

A.structdate{intmonth;intday;intyear;}Structdatedatel;

B.stmctdate{intmonth;intday;intyear;}datel;

C.struct{intmonth;intday;intyear;}date1;

D.#defineDATEstmctdateDATE{intmonth;intday;intyear;}datel;

四、选择题(20题)61.

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

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

63.C语言中,合法的字符串常量是()。

A."M"B.\tC.100D.MUST

64.

65.

66.

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

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

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

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

69.层次型、网状型和关系型数据库划分原则是()。

A.记录长度B.文件的大小C.联系的复杂程度D.数据之间的联系方式

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

A.抽象

B.模块化

C.自底向上

D.信息隐蔽

71.已定义:inta=25,b=14,c=19;,以下三目运算符(?:)所构成语句的执行后

a<=25&&b--<=2&&c?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf("###a=%d,b=%d,c=%d\n",a,b,c);程序输出的结果是

A.***a=25,b=13,c=19B.***a=26,b=14,c=19C.###a=25,b=13,c=19D.###a=26,b=14,c=19

72.

73.读取二进制文件的函数调用形式为:fread(buffersize,count,fp);,其中buffer代表的是()。

A.一个文件指针,指向待读取的文件

B.一个整型变量,代表待读取的数据的字节数

C.一个内存块的首地址,代表读人数据存放的地址

D.一个内存块的字节数

74.若有定义语句:

char}sl=‘’0K”,:Its2=”ok”;

以下选项中,能够输出“OK”的语句是()。

A.if(strcmp(sl,s2)!=0)puts(s2);

B.if(strcmp(sl,s2)!=0)puts(s1);

C.if(strcmp(sl,s2)==1)puts(s1);

D.if(strcmp(sl,s2)==0)puts(s1);

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

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

76.有如下程序

voidfunc1(intst[],inti)

{printf("%c",st[i]);

if(i<3){i+=2;func2(st,i);}

}

voidfunc2(intst[],inti)

{printf("%c",st[i]);

if(i<3){i+=2;func1(st,i);}

}

main()

{charst[]="hello,friend!";

inti=0;func1(st,i);

printf("\n");}

程序执行后输出的结果是

A.helloB.hel

C.hloD.编译出错

77.

78.

79.以下定义数组的语句中错误的是()。

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

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:给一维数组arr输人任意4个整数,并按如下的规律输出。例如,若输入2345,则程序运行后输出以下矩阵:请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.假定输入的字符串中只包含字母和*号。请编写函数proc(),它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参m给出了字符串的长度,形参h给出了字符串中前*号的个数,形参e给出了字符串中最后*号的个数。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为****a*bc*def*g****,删除后,字符串中的内容则应当是a*bc*def*g。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.C

2.D解析:选项A),B),C)的指针赋值表达方式都不正确,*p=5表达整数5放到指针p所指向的存储单元中。注意:通过指针引用一个存储单。

3.C在main函数中调用了f函数使形参s指向数组a。执行“S[1]+=6”;语句,则“a[1]=8;”执行“*s=7;”语句

温馨提示

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

评论

0/150

提交评论