2021年山东省聊城市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2021年山东省聊城市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2021年山东省聊城市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2021年山东省聊城市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2021年山东省聊城市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

2021年山东省聊城市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.有以下程序:#include<stdio.h>main(){chars[]=“012xy\08s34f4w2”;inti,n=0;for(i=0;s[i]|=0;i++) if(s[i]>=‘0’&&s[i]<=“9”)n++;printf(“%d\n”,n);}程序运行后的输出结果是()。

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

2.二叉树的第三层最少有________个结点。

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

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

A.intN=10;intx[N]:

B.#defineNl0;intx[N];

C.intx[0..10];

D.intx[];

4.

5.

6.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是()。

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

7.有以下函数:intfun(char*x,char*y){intn=0;}while((*x==*y)&&*x!=‘\0’){x++;y++;n++;}returnn;}函数的功能是()。

A.将y所指字符串赋给x所指存储空间

B.查找x和y所指字符串中是否有‘\0’

C.统计x和y所指字符串中最前面连续相同的字符个数

D.统计x和y所指字符串中相同的字符个数

8.有下列程序:程序执行后的输出结果是()。A.Sun,f,90,Sun,f,90

B.Zhao,m,85,Sun,f,90

C.Zhao,m,85,Qian,f,95

D.Sun,f,90,Qian,f,95

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

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

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

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

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

10.若有如下定义,则__________是对数组元素的正确的引用。.

inta[10],*p;p=a;

A.*&a[10]B.a[11]C.*(p+11)D.*p*p*p

11.有以下程序:main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}执行后输出结果是()。

A.77B.88C.810D.1010

12.有以下程序:

程序运行后的输出结果是()。A.4284B.2870C.2668D.3981

13.以下不能作为合法常量的是()。

A.'cd'B.1.234e04C.”\a”D.'\011'

14.若串S1="ABCDEFG",S2="9898",S3="###",S4="012345",执行其结果为()。A.ABC###G0123B.ABCD###2345C.ABC###G1234D.ABCD###1234

15.有如下程序:main{intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++.b++;}printf("a=%d,b=%d\n",a,b);}该程序的输出结果是()。A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

16.在所有的排序方法中,关键字比较的次数与记录的初始排列次序无关的是()。

A.希尔排序B.冒泡排序C.直接插入排序D.直接选择排序

17.有以下程序:#include〈stdio.h〉voidfun(int*s){staticintj=0;do{s[j]=s[j]+s[j+1];}while(++j<2);}main(){inti.a[10]={1,2,3,4,5};for(i=1;i<3;i++)fun(a);for(i=0;i<5;i++)pfintf(“%d”,a[i]);printf(“\n”);}程序运行后的输出结果是()。A.12345B.23445C.34756D.35745

18.以下选项中与“(!a==0)”的逻辑值不等价的表达式是()。

A.(a==!0)B.aC.(a>0||a<0)D.(a!=0)

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

A.用C语言编写的程序只能放在一个程序文件中

B.C语言程序书写格式严格,要求一行内只能写一个语句

C.C语言程序中的注释只能出现在程序的开始位置和语句的后面

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

20.以下叙述正确的是

A.continue语句的作用是结束整个循环的执行

B.只能在循环体内和switch语句体内使用break语句

C.在循环体内使用break语句或continue语句的作用相同

D.从多层循环嵌套中退出时,只能使用goto语句

二、2.填空题(20题)21.若有如下结构体说明:

structSTRU

{inta,b;charc:doubled;

stmctSTRU*p1,*p2;

};

请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型。【】t[20]

22.以下程序段用以统计链表中元素的个数。其中first指向链表第一个结点,count用来统计结点个数。请填空。

structlink

{chardata;

structlink*next;

}

structlink*p,*first;

|

intcount=0;

p=first;

while(【】)

{

【】;

p=【】;

}

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

main()

{

intp[7]=(11,13,14,15,16,17,18};

inti=0,j=0;

while(i<7&&p[i]%2==1)j+=p[i++];

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

}

24.若有下列定义:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;,则值为3的表达式为:______。

25.下列程序的运行结果为【】。

enumweekday{sun=7,mon=1,tue,wed,thu,fri,sat};

main()

{enumweekdayworkday,weekend;

inti,a[8];

workday=tue;

weekend=sun;

printf("\ntueday=%dsunday=%d;",workday,week_end);

workday=sun+tue;

week_end=(enumweekday)3;

printf("tueday=%dsunday=%d;",workday,weekend);

a[sun]=sun;

a[mon]=mon;

a[tue]=rue;

a[wed]=wed;

a[thu]=thu;

a[fri]=fri;

a[sat]=sat;

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

}

26.已知函数isaplha(ch)的功能是判断变量ch是否是字母,若是,则该数值为1,否则为0。下面程序执行后的输出结果是()。

#include<ctype.h>

#include<string.h>

voidfun(chars[])

{inti,j;

for(i=0,j=0;s[i];i++)

s[j]='\0';

}

main()

{charss[80]="goodmorning";

fun(ss);

printf("%s",ss);

}

27.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。

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

typedefunionstudent

{

charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{

STUa[5];

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

}

29.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。

30.数据库系统在其内部分为三级模式,即概念模式、内模式和外模式。其中,______是用户的数据视图,也就是用户所见到的数据模式。

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

32.下述函数统计一个字符串中的单词个数,单词是指处在空格之间的字符序列,请填空。

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】=='')flag=0;

elseif(【】){flag=1;num++}

}

return【】;}

33.在scanf()函数调用语句中,可以在格式字符和%号之间加上一个星号,它的作用是跳过对应的输入数据;当输入以下数据时,100200300400500<回车>,下面语句的执行结果为【】。

main()

{inta,b,C;

scanf("%d%*d%d%d",&a,&b,&c);

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

34.设x和y均为int型变量,且x=1,y=2,则表达式2.0+y/x的值为【】。

35.与十进制数101等值的二进制数为【】。

36.在面向对象程序设计中,从外面看只能看到对象有外部特征,而不知道也无须知道数据的具体结构以及实现操作的算法,这称为对象的______。

37.以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

请填空。

doublefun(doublex){return(x*x-2*x+6);}

{doublex,y1,y2;

printf("Enterx:");scanf("%lf",&x);

y1=fun([6]);

y2=fun([7]);

printf("y1=%lf,y2=%lf\n",y1,y

38.【】是数据库设计的核心。

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

#include<stdio.h>

voidfun()

{staticinta=0;

a+=2;printf("%d",a);

}

main()

{intcc;

for(cc=1;cc<4;cc++)fun();

printf("\n");

}

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

main()

{intarr[10],i,k=0;

for(i=O;i<10;i++)arr[i]=i;

for(i=1;i<4;i++)k+=arr[i]+i;

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

}

三、1.选择题(20题)41.已定义下列函数:intfun(int*p){return*p;)fun函数返回值是()。

A.不确定的值B.一个整数C.形参p中存放的值D.形参p的地址值

42.有以下程序main(){chara,b,c,d;scanf("%c,%c,%d,%d",&a,&b,&c,&d);printf("%c,%c,%c,%c\n",a,b,c,d);}若运行时从键盘上输入:6,5,65,66<回车>。则输出结果是

A.6,5,A,BB.6,5,65,66C.6,5,6,5D.6,5,6,6

43.有下列程序:#include"stdio.h"main(){intx=0;inty=0;while(x<7&&++y){y--;x++;}printf("%d,%d",y,x);}程序的输出结果是()。

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

44.设变量已正确定义,则以下能正确计算n!的程序段是______。

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

B.f=1;for(i=1;i<n;i++)f*=i;

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

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

45.有以下程序

#include<stdio.h>

voidfun(char*t,char*s)

{while(*t!=0)t++;

while((*t++=*s++)!=0);

}

main()

{charss[10]="acc",aa[10]="bbxxyy";

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

}

程序的运行结果是

A.accxyy,bbxxyy

B.acc,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy

46.有以下程序

voidf(int*q)

{inti=0;

for(;i<5;i++)(*q)++;

}

main()

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

f(a);

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

}

程序运行后的输出结果是

A.2,2,3,4,5,B.6,2,3,4,5,C.1,2,3,4,5,D.2,3,4,5,6,

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

A.11,42,3112,22,41

B.11,41,2012,42,20

C.11,21,4011,21,41

D.11,41,2112,42,22

48.结构化程序有3种基本结构组成,3种基本结构组成的算法______。

A.可以完成任何复杂的任务B.只能完成部分复杂的任务C.只能完成符合结构化的任务D.只能完成一些简单的任务

49.设有如下定义:structsk{intn;floatx;}data,*p;若要使p指向data中的n域,正确的赋值语句是

A.p=&data.n;

B.*p=data.n;

C.p=(structsk*)&data.n;

D.p=(structsk*)data.n:

50.设q1和q2是指向一个float型一维数组的指针变量,k为float型变量,则不能正确执行的语句是()。

A.k=*q1+*q2;B.q1=k;C.q1=q2;D.k=*q1*(*q2);

51.下列选项中不属于结构化程序设计方法的是()。

A.自顶向下B.逐步求精C.模块化D.可复用

52.以下程序运行后,输出结果是______。fut(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fut(&p,a);printf("%d\n",*p);}

A.1B.7C.9D.11

53.表达式3.6-5/2+1.2+5%2的值是A.4.3B.4.8C.3.3D.3.8

54.设有以下语句:chara=3,b=6,c;c=ab<<2;则c的二进制值是()。

A.11011B.10100C.11100D.11000

55.有以下程序:#include<stdio.h>intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i];returnsum;{inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;s=fun(a,5)+fun(b,4);printf("%d\n",s);程序执行后的输出结果是()。

A.45B.50C.60D.55

56.若二维数组a有m列,则在a[i][j]刚前的元素个数为()。

A.i*m+j-1B.i*m+jC.j*m+iD.i*m+j+1

57.下面程序main(){intx=32;printf("%d\n",x=x<<1);}的输出是______。

A.100B.160C.120D.64

58.已知字母a的ASCII码为十进制数97,下面程序的输出结果是()。#include<stdio.h>main(){charc1,c2;c1='a'+'6'-'0';c2='a'+'3'-'0';printf("%c,%c\n",c1,c2);}

A.输出无定值B.d,eC.e,fD.g,d

59.有如下说明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

60.拥有PC机并以拨号方式接入网络的用户需要配置()

A.CD-ROMB.ModemC.电话机D.鼠标

四、选择题(20题)61.有以下程序:

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

A.Zhao,111,85,90,Qian,f,95,92

B.Zhao,m,85,90,Zha0,m,85,90

C.Qian,f,95,92,Qian,f,95,92

D.Qian,f,95,92,Zha0,m,85,90

62.已知函数的调用形式:fread(buf,size,count,fp),参数buf的含义是

A.一个整型变量,代表要读入的数据项总数

B.一个文件指针,指向要读的文件

C.一个指针,指向要读入数据的存放地址

D.一个存储区,存放要读的数据项

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

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

64.

65.有以下程序程序运行后的输出结果是()。

66.以下定义语句中正确的是()。

67.有以下程序:

执行程序时,给变量x输入l0,程序运行后的输出结果是()。

A.55B.54C.65D.45

68.以下程序拟实现计算sum=1+1/2+1/3+…+1/50。

程序运行后,不能得到正确结果,出现问题的语句是()。

A.sum+=1/i;B.while(i<50);C.sum.=1.0;D.i++;

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

A.&t[3][2]B.t[3]C.t[1]D.*t[2]

70.

71.右两个关系R和S如下:

则由关系R得到关系S的操作是()。A.自然连接B.并C.选择D.投影

72.

73.

有以下程序:

main

{chara=a,b;

printf("%c,",++a);

printf("%c\n",b=a++):

)

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

A.b,bB.b,cC.a,bD.a,c

74.

75.执行下列程序时输入:123<空格>456<空格>789<回车>输出结果是main(){chars[100];intc,i;scanf("%c",&c);scanf("%d",&i);scanf("%s",s);printf("%c,%d,%s\n",c,i,s);}

A.123,456,789B.1,456,789C.1,23,456,789D.1,23,456

76.

77.设有如下定义:intx=10,y=3,z;则语句printf("%d\n",z=(x%y,x/y));的输出结果是()。

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

78.

79.

有以下程序

#include<stdio.h>

main

{inty=9;

for(;y>0;y--)

if(y%3==0)printf("%d",--y);

}

程序的运行结果是()。

A.741B.963C.852D.875421

80.有三个关系R、S和T如下:

则由关系R和S得到关系T的操作是()。

A.自然连接B.交C.投影D.并

五、程序改错题(1题)81.已知一个数列从0项开始的前3项为0,0,1,以后的各项都是其相邻的前3项之和。下列给定的程序中,函数proc()的功能是:计算并输出该数列前n项的和sum。n的值通过形参传人。例如,当n-20时,程序的输出结果应为42762.000000。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

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

参考答案

1.C根据题意,要求统计字符数组s中阿拉伯数字的个数。“chars[]=“012xy\\08s34f4w2”;”,其元素是字符型。字符‘0的ASCII值是48,字符‘\\0’的ASCII值是0,因此可以计算出‘\\0’之前阿拉伯数字的个数,由字符数组s可知,有3个阿拉伯数字。故本题答案为C选项。

2.B

3.D选项A、B中n为变量,C语言中不允许动态定义数组维数,即维数不能是变量。选项C无此语法。

4.D

5.D

6.B

7.C本题中由循环条件可知,遇到‘\\0’或x与y所指的字符不相等时循环结束。所以函数的功能是统计x和y所指字符串中最前面连续相同的字符个数。故本题答案为C选项。

8.A程序定义结构体类型STU,定义类型STU的全局变量a。main函数定义局部类型为STU变量b,并对它初始化,调用函数f。将局部变量c的各个成员值赋给a,覆盖a的旧值,将a的新值返回并赋给b,此时a、b的各个成员值都是Sun,f,90,程序输出:Sun,f,90,Sun,f,90。本题答案为A选项。

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

10.D

11.C解析:本题考核的知识点是字符数组的定义、赋初值以及函数sizeof()的应用。本题中定义两个字符型数组,其中a省略了长度,定义了b的长度为10,并赋初值分别为“abcdefg”和“abcdfg”。所以a的长度为赋值给它的字符串的字符个数7加上一个结束转义字符,即a的长度为7+1为8.定义时b的长度定义为10,故b的长度为10,因此最后通过函数sizeof()求得的数组a和数组b的长度分别为8和10,所以,4个选项中选项C符合题意。

12.Bfor循环中,i取值为1~100。循环体中,3个if语句必须同时满足才会输出x,输出的x取值为i+3,所以x的取值只能是4到103。x必须满足以下条件:①x%7==0(x必须是7的倍数);②(x-1)%3==0(x必须是3的倍数+1);③(x-2)%2==0(x必须是2的倍数)。满足条件③的x取值为7,14,21,28,35,42,49,56,63,70,77,84,91,98;又满足条件②的x的取值为7,28,49,70,91;又满足条件①的x的取值为28,70。本题答案为B选项。

13.A字符常量是使用单引号标注的单个字符,选项A错误;选项B属于浮点数常量,正确;选项C属于转义字符常量,正确;选项D属于转义字符,代表八进制数011的ASCII值的字符,正确。本题答案为A选项。

14.D

15.A当x为1时,执行case1,a自加等于1,因为case1后没有break,接着执行case2,此时a的值为2,b自加为1,故选择A选项。

16.D

17.D本题考查静态变量,静态变量有储存已经操作过的值,所以fun(a)s[O]=3,s[1]=5,s[2]=7,所以答案选择D。

18.A运算符逻辑非“!”和“==”,逻辑非“!”的优先级高于“==”,选项A等价于“(!a)==0”。如果a不等于0,则表达式为真,否则表达式为假。故本题答案为A选项。

19.D用C语言编写的程序可以放置于多个程序文件中,所以A选项错误。C语言程序中的一行可以有多条语句,所以B选项错误。C语言中的注释语句可以与原语句放在一行,也可以不放在一行,所以C选项错误。故本题答案为D选项。

20.B解析:continue是结束本次循环,直接进入到下次循环中,break用于循环语句中的作用是直接跳出本层循环,能从多层循环中退出的语句除了goto语句,exit,return等语句也能直接跳出多层循环。注意:continue和break语句在while语句中的作用。

21.structSTRUstructSTRU解析:结构体类型是构造数据类型,是用户自己定义的一种类型。

结构体类型的定义:

struct结构体类型名

{

成员项表;

};

定义结构体变量的的形式为:

struct结构体类型名变量1,变量2,……

其中变量包括:一般变量、指针变量、数组变量等。

22.p!=NULLcount++(*p).next

23.2424解析:本题程序定义了一维数组p,有七个数组元素,整型变量i,j初值分别为0,当while的条件表达式(i<7&&p[i]%2=1)的值为真时,执行语句j+=p[i++];,如:当i=0时,i<7为真,p[i]%2=11%2=1,表达式(p[i]%2=1)的值为真,所以接个表达式(i<7&&p[i]%2=1的值为真,执行j=j+p[i++]=0+11=11,i=1;,依此类推可以得出答案24。

24.p+=2*(p++)p+=2,*(p++)解析:由题可知a[2]=3,因此只要使指针p指向a[3],然后再引用指针的值就可以了。

25.tueday=2sunday=7;tueday=9sunday=3;1234567

26.goodmorninggoodmorning解析:子函数fun(chars[])的作用是将字符数组s中除去字母以外的所有其他字符都去掉,然后将字母仍按原来的顺序存在数组s中。在主函数中调用fun(ss),是将“goodmorning”中所有的非字母去掉,在这里就是去掉空格,然后输出ss。

27.完善性软件维护活动包括以下几类:改正性维护,适应性维护、完善性维护和预防性维护,完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。

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

29.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。

30.外模式外模式解析:外模式由概念模式推导而出,给出了每个用户的局部数据描述,即数据视图。

31.关系关系

32.*s++flag==0或*(s-1)==''num*s++\r\nflag==0或*(s-1)==''\r\nnum解析:在统计字符串单词个数的算法中,本题的flag是为了记录一个单词是否结束。第18空应填*s++;如果某个字符不是空格,则必需判断它是否是单词,如是,则使得flag的标志为1,num的值加1。本题判断方法是:先判断s所指向的字符是否为空格,如果是则使得flag=0,否则判断前一个字符是否是空格,如果是则说明这个字符是一个单词的开始,将flag标志为1,num的值加1,如果不是,则不必记录。故第19空应flag==0或*(s-1)=='';最后一个空格需填写的是返回的单词的个数,即num。

33.100300400100300400解析:scanf的格式控制字符串中,“*”表示跳过对应的输入数据,所以第二个输入数200被跳过去了,只有100,300,400三个数被从键盘输入了进来。

34.4.0或44.0或4

35.1100101

36.封装性封装性解析:对象具有下列5个基本特点:①标识惟一性;②分类性:③多态性;④封装性;⑤模块独立性好。其中,封装性是指从外面看只能看到对象的外部特征,对象的内部特征即处理能力的实行和内部状态,对外是不可见的,对象的内部状态只能由其自身改变。

37.

38.数据模型数据模型

39.246246解析:本题考查静态(static)局部变量的使用。fun函数中的静态局部变量a所占用的存储单元在程序运行过程中始终不释放,即当下一次调用该函数时,该变量仍然保留上一次函数调用结束时已有的值,3次调用fun函数分别得到2,4,6。

40.1212解析:本题的第一个for循环用于给数组arr赋初值,第二个for循环用于求和运算。由于第二个for循环初始值为1,而循环条件为i<4,所以求的是arr[1]到arr[3]及i的和,所以输出结果为12。

41.B解析:由函数intfun(int*p){return*p;}的定义可知,返回值为整型指针变量p所指向的数据。

42.A解析:主函数中首先定义了4个字符变量a、b、cd,然后通过scanf()函数输入a、b、c、d输入中a和b是按字符格式c输入的,c和d是按整型符号d输入的。在看下面的printf()函数中,要求a、b、c、d都按字符输出,故a和b原样输出为6、5,c和d将把与其ASCII码对应的字符输出,65和66的ASCII码对应字符A和B,故最后的输出为6,5,A,B。所以,4个选项中选项A符合愿意。

43.A解析:本题考查while循环.y的值在while循环的控制表达式中加1,在循环体内减1,所以总的y值不变,且控制条件++y永远非零。当x加到7时不满足循环条件,结束循环。

44.D解析:A选项,将f赋值为0,结果得到0,因为0乘任何数都为0;B选项,i<n,计算的是(n-1)!,C选项将陷入死循环。

45.D解析:本题中fun函数实现了字符串函数strcat的功能,将字符串aa连接到字符串ss的末尾。调用fun函数时,形参t和s分别指向了字符串ss和aa,然后通过一个while循环使t指向字符串ss的结束符的位置,第二个while循环将字符串aa中的字符(包括结束符'\\0')逐个复制到字符串ss的末尾处。

46.B解析:调用函数f()时,将数组a的地址传递给了指针q,此时q指向的就是数组a的第一个元素a[0]。在5次循环过程中,q始终指向a[0],因此a[0]的值增加了5。最后的输出结果为'6,2,3,4,5'。

47.B解析:由于实参传送的是变量的地址,所以对形参指针所指向的单元内容的改变,即对实参内容的改变。

48.A解析:结构化程序的3种基本结构是顺序、循环、选择,任何复杂的任务都可以通过这3种结构来实现。

49.C解析:本题主要考查了结构体变量引用成员数据的方法,主要有以下几种:结构体变量名.成员名或结构体指针->成员名的方法来引用结构体成员。

50.B解析:选项A)是将指针q1和q2所指向的变量值相加,然后赋给k;选项B)中,float型数据和指针型数据之间不能进行赋值运算:选项C)中,是两个指针变量之间的赋值:选项D)中,是两个指针型变量所指向的两个float型数据相乘。

51.D解析:20世纪70年代以来,提出了许多软件设计方法,主要有①逐步求精:对复杂的问题,应设计一些子目标作过渡,逐步细化;②自顶向下:程序设计时应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化;⑧模块化:一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块,而可复用是面向对象程序设计的一个优点。

52.C

53.D解析:*、/和%的优先级要高于+和—,同级别的运算符从左至右运算。所以本题首先计算5/2和5%2,虽然我们都知道5/2的结果应该是2.5,但C语言中规定了两个整数相除的结果为整数,而且是截尾取整,所以5/2的结果是2;5%2表示的是5除以2所得的余数,其结果为1。计算完后,表达式变为3.6-2+1.2+1,从左至右计算不难得出结果为3.8,故应该选择D。

54.A解析:“<<”是C语言中规定的左移运算符,例如,a=a<<2,是将a的二进制数左移两位,左移一位相当于该数乘以2,左移两位相当于该数乘以2的2次方;“^”是异或运算符,所以,c的二进制值应为00011011。

55.C解析:静态变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。在main函数中调用fun(a,5),执行for循环得到sum=0+a[0]+a[1]+a[2]+a[3]+a[4]=15;然后调用fun(b,4),因为sum为静态变量,再次调用时sum保留上次函数调用结束时的值,所以sum:15+b[0]+b[1]+b[2]+b[3]=45;返回sum的值,main函数中输出的s=15+45=60。

56.B解析:二维数组的元素可以看成是按矩阵形式存放的,总是先存放第一行的元素,再存放第二行的元素。数组第一维的下标是i,说明它前面还有i行,有i*m个元素,数组第二维的下标是j,说明它前面还有j列,有j个元素,所以共有i*m+j个元素。

57.D解析:<<是C语言中规定的左移运算符,例如,a=a<<2,这个语句即是将a的二进制数左移两位,左移一位相当于该数乘于2,左移两位相当于该数乘以2的2次方。所以,x<<1=32*2=64。

58.D解析:C语言规定,所有字符常量都可以化为整型常量来处理,因而字符常量也可以参与算术运算。注:字符常量参与算术运算时,其实是使用其对应的ASCII码值进行计算。本题中,'a'对应的ASCII码值是97。题中虽然没有给'6'和'0'的ASCII码值,但应该知道'6'-'0'是将字符'6'转换成整数6的表达式,所以c1='a'+'6'-'0'=103,c2='a'+'3'-'0'=100,按照字符型输出分别是g和d。

59.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)来表示。

60.B

61.A本题考查的是函数调用时的参数传递问题。程序在调用函数f时,传给函数f的参数只是结构变量c在栈中的一个拷贝,函数f所做所有操作只是针对这个数据拷贝进行的修改,这些都不会影响变量c的值。

62.C本题主要考查成块读函数fread。在C语言中,提供了一种成块的读写方式来操作文件,使其数组或结构体等类型可以进行一次性读写。成块读文件函数的调用形式为:

intfread(void*buf,intsize,intcount,FILE*stream)

fread()函数的意思是从stream指向的流文件读取count(字段数)个字段,每个字段为size(字段长度)个字符长,并把它们放到buf(缓冲区)指向的字符数组中,然后进行读取操作。fread()函数返回实际已读取的字段数。

从上面的分析我们可以知道,参数buf是一个无返回类型的指针,指向要读入数据的存放地址,它其实是一个缓冲区。因此本题正确的答案选C。

63.A软件的生命周期描述了软件从产生到最终消亡的全过程,生命周期中的活动包括需求分析、软件设计(分为概要设计和详细设计)、软件实现、软件测试和软件维护,不包括市场调研。

64.B

65.A涵数返回的结构体为在涵数里赋值的结构体,所以选择A)。

66.A定义变量时不能连等,所以B)错误,c)选项中,b是指针,c定义为指向指针的指针才可以接受&b,所以c)错误,D)选项,b=1.1前没有类型名,所以错误。

67.A该程序考察的是函数的递归调用,在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。执行结果为l+2+3+…+8+9+10=55。因此A选项正确。

68.A选项A中,8111111+=1/i;i为整型,因此l/i是整型类型,当1/i有小数时,小数部分会被截断。因此l/i结果始终为0,导致结果出错,应改为8111m+=1.0/i。因此答案为A选项。

69.C解析:选项A和B两个表达式都越界了;选项D中,*t[2]是目标变量,即—个整型值,而不是地址值。

70.C

71.C选择:是在数据表中给予一定的条件进行筛选数据。投影:是把表中的某几个属性的数据选择出来。连接:有自然连接、外连接,内连接等,连接主要用于多表之间的数据查询。并:与数学中的并是一样的。两张表进行并操作,要求它们的属性个数相同并且需要相容。

72.A

73.A

\n++a与a++的区别是前者先自加再运算,后者是先运算后自加。

\n

74.D

75.D解析:根据给定的数据输入格式:123<空格>456<空格>789<回车>,第一个scanf语句中,格式字符为“%c”,只能得到一个字符\'1\',第二个scanf语句中格式字符为“%d”,变量i得到的数值为23,第三个scanf语句中格式字符为“%s”,遇到空格就自动结束,因此字符数组s得到的是'456\\0”。因而正确答案为选项D。

76.A

77.D

78.D

79.C

\n在for循环中,当y的值为9、6或3时,执行输出语句,输出表达式--Y的值。Y先自减l,然后再输出y的值。

\n

80.A解析:结构化程序的概念首先是从以往编程过程中无限制地使用转移语句而提出的。转移语句可以使程序的控制流程强制性地转向程序的任一处,在传统流程图中,就是用上节我们提到的“很随意”的流程线来描述这种转移功能。如果一个程序中多处出现这种转移情况,将会导致程序流程无序可寻,程序结构杂乱无章,这样的程序是令人难以理解和接受的,并且容易出错。尤其是在实际软件产品的开发中,更多的追求软件的可读性和可修改性,象这种结构和风格的程序是不允许出现的。

81.(1)错误:for(k=4;k<n;k++)

正确:for(k=4;k<=n;k++)

(2)错误:s2=s;

正确:s2=s;}

【解析】题目中要求计算数列前n项的和,包括第n项,因此“for(k=4;k<n;k++)”中的“k<n”应改为“k<=n”;根据C语言的语法规则,for循环体中的多条语句必须在大括号“{”和“)”之间,因此,要在语句s2=s;后加上}。

82.

题目中要求除了尾部的*号之外,将字符串中其他*号全部删除。首先将所有不是*的字符放在字符串str中,然后将尾部的*接在字符的后面,最后为字符串str加上结束符。

2021年山东省聊城市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.有以下程序:#include<stdio.h>main(){chars[]=“012xy\08s34f4w2”;inti,n=0;for(i=0;s[i]|=0;i++) if(s[i]>=‘0’&&s[i]<=“9”)n++;printf(“%d\n”,n);}程序运行后的输出结果是()。

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

2.二叉树的第三层最少有________个结点。

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

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

A.intN=10;intx[N]:

B.#defineNl0;intx[N];

C.intx[0..10];

D.intx[];

4.

5.

6.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是()。

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

7.有以下函数:intfun(char*x,char*y){intn=0;}while((*x==*y)&&*x!=‘\0’){x++;y++;n++;}returnn;}函数的功能是()。

A.将y所指字符串赋给x所指存储空间

B.查找x和y所指字符串中是否有‘\0’

C.统计x和y所指字符串中最前面连续相同的字符个数

D.统计x和y所指字符串中相同的字符个数

8.有下列程序:程序执行后的输出结果是()。A.Sun,f,90,Sun,f,90

B.Zhao,m,85,Sun,f,90

C.Zhao,m,85,Qian,f,95

D.Sun,f,90,Qian,f,95

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

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

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

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

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

10.若有如下定义,则__________是对数组元素的正确的引用。.

inta[10],*p;p=a;

A.*&a[10]B.a[11]C.*(p+11)D.*p*p*p

11.有以下程序:main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}执行后输出结果是()。

A.77B.88C.810D.1010

12.有以下程序:

程序运行后的输出结果是()。A.4284B.2870C.2668D.3981

13.以下不能作为合法常量的是()。

A.'cd'B.1.234e04C.”\a”D.'\011'

14.若串S1="ABCDEFG",S2="9898",S3="###",S4="012345",执行其结果为()。A.ABC###G0123B.ABCD###2345C.ABC###G1234D.ABCD###1234

15.有如下程序:main{intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++.b++;}printf("a=%d,b=%d\n",a,b);}该程序的输出结果是()。A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

16.在所有的排序方法中,关键字比较的次数与记录的初始排列次序无关的是()。

A.希尔排序B.冒泡排序C.直接插入排序D.直接选择排序

17.有以下程序:#include〈stdio.h〉voidfun(int*s){staticintj=0;do{s[j]=s[j]+s[j+1];}while(++j<2);}main(){inti.a[10]={1,2,3,4,5};for(i=1;i<3;i++)fun(a);for(i=0;i<5;i++)pfintf(“%d”,a[i]);printf(“\n”);}程序运行后的输出结果是()。A.12345B.23445C.34756D.35745

18.以下选项中与“(!a==0)”的逻辑值不等价的表达式是()。

A.(a==!0)B.aC.(a>0||a<0)D.(a!=0)

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

A.用C语言编写的程序只能放在一个程序文件中

B.C语言程序书写格式严格,要求一行内只能写一个语句

C.C语言程序中的注释只能出现在程序的开始位置和语句的后面

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

20.以下叙述正确的是

A.continue语句的作用是结束整个循环的执行

B.只能在循环体内和switch语句体内使用break语句

C.在循环体内使用break语句或continue语句的作用相同

D.从多层循环嵌套中退出时,只能使用goto语句

二、2.填空题(20题)21.若有如下结构体说明:

structSTRU

{inta,b;charc:doubled;

stmctSTRU*p1,*p2;

};

请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型。【】t[20]

22.以下程序段用以统计链表中元素的个数。其中first指向链表第一个结点,count用来统计结点个数。请填空。

structlink

{chardata;

structlink*next;

}

structlink*p,*first;

|

intcount=0;

p=first;

while(【】)

{

【】;

p=【】;

}

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

main()

{

intp[7]=(11,13,14,15,16,17,18};

inti=0,j=0;

while(i<7&&p[i]%2==1)j+=p[i++];

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

}

24.若有下列定义:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;,则值为3的表达式为:______。

25.下列程序的运行结果为【】。

enumweekday{sun=7,mon=1,tue,wed,thu,fri,sat};

main()

{enumweekdayworkday,weekend;

inti,a[8];

workday=tue;

weekend=sun;

printf("\ntueday=%dsunday=%d;",workday,week_end);

workday=sun+tue;

week_end=(enumweekday)3;

printf("tueday=%dsunday=%d;",workday,weekend);

a[sun]=sun;

a[mon]=mon;

a[tue]=rue;

a[wed]=wed;

a[thu]=thu;

a[fri]=fri;

a[sat]=sat;

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

}

26.已知函数isaplha(ch)的功能是判断变量ch是否是字母,若是,则该数值为1,否则为0。下面程序执行后的输出结果是()。

#include<ctype.h>

#include<string.h>

voidfun(chars[])

{inti,j;

for(i=0,j=0;s[i];i++)

s[j]='\0';

}

main()

{charss[80]="goodmorning";

fun(ss);

printf("%s",ss);

}

27.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。

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

typedefunionstudent

{

charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{

STUa[5];

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

}

29.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。

30.数据库系统在其内部分为三级模式,即概念模式、内模式和外模式。其中,______是用户的数据视图,也就是用户所见到的数据模式。

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

32.下述函数统计一个字符串中的单词个数,单词是指处在空格之间的字符序列,请填空。

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】=='')flag=0;

elseif(【】){flag=1;num++}

}

return【】;}

33.在scanf()函数调用语句中,可以在格式字符和%号之间加上一个星号,它的作用是跳过对应的输入数据;当输入以下数据时,100200300400500<回车>,下面语句的执行结果为【】。

main()

{inta,b,C;

scanf("%d%*d%d%d",&a,&b,&c);

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

34.设x和y均为int型变量,且x=1,y=2,则表达式2.0+y/x的值为【】。

35.与十进制数101等值的二进制数为【】。

36.在面向对象程序设计中,从外面看只能看到对象有外部特征,而不知道也无须知道数据的具体结构以及实现操作的算法,这称为对象的______。

37.以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

请填空。

doublefun(doublex){return(x*x-2*x+6);}

{doublex,y1,y2;

printf("Enterx:");scanf("%lf",&x);

y1=fun([6]);

y2=fun([7]);

printf("y1=%lf,y2=%lf\n",y1,y

38.【】是数据库设计的核心。

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

#include<stdio.h>

voidfun()

{staticinta=0;

a+=2;printf("%d",a);

}

main()

{intcc;

for(cc=1;cc<4;cc++)fun();

printf("\n");

}

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

main()

{intarr[10],i,k=0;

for(i=O;i<10;i++)arr[i]=i;

for(i=1;i<4;i++)k+=arr[i]+i;

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

}

三、1.选择题(20题)41.已定义下列函数:intfun(int*p){return*p;)fun函数返回值是()。

A.不确定的值B.一个整数C.形参p中存放的值D.形参p的地址值

42.有以下程序main(){chara,b,c,d;scanf("%c,%c,%d,%d",&a,&b,&c,&d);printf("%c,%c,%c,%c\n",a,b,c,d);}若运行时从键盘上输入:6,5,65,66<回车>。则输出结果是

A.6,5,A,BB.6,5,65,66C.6,5,6,5D.6,5,6,6

43.有下列程序:#include"stdio.h"main(){intx=0;inty=0;while(x<7&&++y){y--;x++;}printf("%d,%d",y,x);}程序的输出结果是()。

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

44.设变量已正确定义,则以下能正确计算n!的程序段是______。

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

B.f=1;for(i=1;i<n;i++)f*=i;

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

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

45.有以下程序

#include<stdio.h>

voidfun(char*t,char*s)

{while(*t!=0)t++;

while((*t++=*s++)!=0);

}

main()

{charss[10]="acc",aa[10]="bbxxyy";

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

}

程序的运行结果是

A.accxyy,bbxxyy

B.acc,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy

46.有以下程序

voidf(int*q)

{inti=0;

for(;i<5;i++)(*q)++;

}

main()

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

f(a);

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

}

程序运行后的输出结果是

A.2,2,3,4,5,B.6,2,3,4,5,C.1,2,3,4,5,D.2,3,4,5,6,

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

A.11,42,3112,22,41

B.11,41,2012,42,20

C.11,21,4011,21,41

D.11,41,2112,42,22

48.结构化程序有3种基本结构组成,3种基本结构组成的算法______。

A.可以完成任何复杂的任务B.只能完成部分复杂的任务C.只能完成符合结构化的任务D.只能完成一些简单的任务

49.设有如下定义:structsk{intn;floatx;}data,*p;若要使p指向data中的n域,正确的赋值语句是

A.p=&data.n;

B.*p=data.n;

C.p=(structsk*)&data.n;

D.p=(structsk*)data.n:

50.设q1和q2是指向一个float型一维数组的指针变量,k为float型变量,则不能正确执行的语句是()。

A.k=*q1+*q2;B.q1=k;C.q1=q2;D.k=*q1*(*q2);

51.下列选项中不属于结构化程序设计方法的是()。

A.自顶向下B.逐步求精C.模块化D.可复用

52.以下程序运行后,输出结果是______。fut(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fut(&p,a);printf("%d\n",*p);}

A.1B.7C.9D.11

53.表达式3.6-5/2+1.2+5%2的值是A.4.3B.4.8C.3.3D.3.8

54.设有以下语句:chara=3,b=6,c;c=ab<<2;则c的二进制值是()。

A.11011B.10100C.11100D.11000

55.有以下程序:#include<stdio.h>intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i];returnsum;{inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;s=fun(a,5)+fun(b,4);printf("%d\n",s);程序执行后的输出结果是()。

A.45B.50C.60D.55

56.若二维数组a有m列,则在a[i][j]刚前的元素个数为()。

A.i*m+j-1B.i*m+jC.j*m+iD.i*m+j+1

57.下面程序main(){intx=32;printf("%d\n",x=x<<1);}的输出是______。

A.100B.160C.120D.64

58.已知字母a的ASCII码为十进制数97,下面程序的输出结果是()。#include<stdio.h>main(){charc1,c2;c1='a'+'6'-'0';c2='a'+'3'-'0';printf("%c,%c\n",c1,c2);}

A.输出无定值B.d,eC.e,fD.g,d

59.有如下说明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

60.拥有PC机并以拨号方式接入网络的用户需要配置()

A.CD-ROMB.ModemC.电话机D.鼠标

四、选择题(20题)61.有以下程序:

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

A.Zhao,111,85,90,Qian,f,95,92

B.Zhao,m,85,90,Zha0,m,85,90

C.Qian,f,95,92,Qian,f,95,92

D.Qian,f,95,92,Zha0,m,85,90

62.已知函数的调用形式:fread(buf,size,count,fp),参数buf的含义是

A.一个整型变量,代表要读入的数据项总数

B.一个文件指针,指向要读的文件

C.一个指针,指向要读入数据的存放地址

D.一个存储区,存放要读的数据项

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

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

64.

65.有以下程序程序运行后的输出结果是()。

66.以下定义语句中正确的是()。

67.有以下程序:

执行程序时,给变量x输入l0,程序运行后的输出结果是()。

A.55B.54C.65D.45

68.以下程序拟实现计算sum=1+1/2+1/3+…+1/50。

程序运行后,不能得到正确结果,出现问题的语句是()。

A.sum+=1/i;B.while(i<50);C.sum.=1.0;D.i++;

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

A.&t[3][2]B.t[3]C.t[1]D.*t[2]

70.

71.右两个关系R和S如下:

则由关系R得到关系S的操作是()。A.自然连接B.并C.选择D.投影

72.

73.

有以下程序:

main

{chara=a,b;

printf("%c,",++a);

printf("%c\n",b=a++):

)

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

A.b,bB.b,cC.a,bD.a,c

74.

75.执行下列程序时输入:123<空格>456<空格>789<回车>输出结果是main(){chars[100];intc,i;scanf("%c",&c);scanf("%d",&i);scanf("%s",s);printf("%c,%d,%s\n",c,i,s);}

A.123,456,789B.1,456,789C.1,23,456,789D.1,23,456

76.

77.设有如下定义:intx=10,y=3,z;则语句printf("%d\n",z=(x%y,x/y));的输出结果是()。

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

78.

79.

有以下程序

#include<stdio.h>

main

{inty=9;

for(;y>0;y--)

if(y%3==0)printf("%d",--y);

}

程序的运行结果是()。

A.741B.963C.852D.875421

80.有三个关系R、S和T如下:

则由关系R和S得到关系T的操作是()。

A.自然连接B.交C.投影D.并

五、程序改错题(1题)81.已知一个数列从0项开始的前3项为0,0,1,以后的各项都是其相邻的前3项之和。下列给定的程序中,函数proc()的功能是:计算并输出该数列前n项的和sum。n的值通过形参传人。例如,当n-20时,程序的输出结果应为42762.000000。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

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

参考答案

1.C根据题意,要求统计字符数组s中阿拉伯数字的个数。“chars[]=“012xy\\08s34f4w2”;”,其元素是字符型。字符‘0的ASCII值是48,字符‘\\0’的ASCII值是0,因此可以计算出‘\\0’之前阿拉伯数字的个数,由字符数组s可知,有3个阿拉伯数字。故本题答案为C选项。

2.B

3.D选项A、B中n为变量,C语言中不允许动态定义数组维数,即维数不能是变量。选项C无此语法。

4.D

5.D

6.B

7.C本题中由循环条件可知,遇到‘\\0’或x与y所指的字符不相等时循环结束。所以函数的功能是统计x和y所指字符串中最前面连续相同的字符个数。故本题答案为C选项。

8.A程序定义结构体类型STU,定义类型STU的全局变量a。main函数定义局部类型为STU变量b,并对它初始化,调用函数f。将局部变量c的各个成员值赋给a,覆盖a的旧值,将a的新值返回并赋给b,此时a、b的各个成

温馨提示

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

评论

0/150

提交评论