2021年甘肃省白银市全国计算机等级考试C语言程序设计_第1页
2021年甘肃省白银市全国计算机等级考试C语言程序设计_第2页
2021年甘肃省白银市全国计算机等级考试C语言程序设计_第3页
2021年甘肃省白银市全国计算机等级考试C语言程序设计_第4页
2021年甘肃省白银市全国计算机等级考试C语言程序设计_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

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

文档简介

2021年甘肃省白银市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称为()。

A.存储结构B.逻辑结构C.顺序存储结构D.链式存储结构

2.若有定义:floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是()。A.switch(a+b){case1:prinf("*\n");.case2+1:printf("**(n");}

B.switch(int)x);{case1:print("*\n");.case2:printf(**\n");}

C.switch(x){case1.0:print("*\n");case2.0:print("*\n");}

D.switch(a+b){case1:print("*\n");.casec:pit(**\n");}

3.设无向图G中有n个顶点e条边,则其对应的邻接表中的表头结点和边表接点的个数分别为()。

A.n,eB.e,nC.2n,eD.n,2e

4.对于静态表的顺序查找法,若在表头设置监视哨,则正确的查找方式为()A.从第0个元素往后查找该数据元素

B.从第1个元素往后查找该数据元素

C.从第n个元素往开始前查找该数据元素

D.与查找顺序无关

5.有以下程序:main(){inta[][3]={{1,2,3),{4,5,0)),(*pa)[3],i;pa=a;for(i=0;i<3;i++)if(i<2)pa[1][i]=pa[1][i]-1;elsepa[1][i]=1;printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}执行后输出结果是()。

A.7B.6C.8D.无确定值

6.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为()。

A.O(n)O(n)B.O(n)O(1)C.O(1)O(n)D.O(1)O(1)

7.有以下程序:

运行时,若输入123450<;回车>;,则输出结果是()。

A.66656B.6566456C.66666D.6666656

8.

9.

10.有以下程序:

程序运行后的输出结果是()。A.1B.11C.7D.9

11.软件生命周期是指()。A.软件产品从提出、实现、使用维护到停止使用退役的过程

B.软件从需求分析、设计、实现到测试完成的过程

C.软件的开发过程

D.软件的运行维护过程

12.

13.有下列程序:main{inti,s=0,t[]={1,2,3,4,5,6,7,8,9);for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}程序执行后的输出结果是()。A.45B.20C.25D.36

14.以下选项中,能用作用户标识符的是()。

A._0_B.8_8C.voidD.unsigned

15.以下()不是队列的基本运算

A.从队尾插入一个新元素B.从队列中删除第i个元素C.判断一个队列是否为空D.读取队头元素的值

16.依次读入数据元素序列{a,b,c,d,e,f,g}进栈,元素进栈或出栈顺序是未知的,下列序列中,不可能成为栈空时弹出的元素构成序列的有()

A.{d,e,c,f,b,g,a}

B.{f,e,g,d,a,c,b}

C.{e,f,d,g,c,b,a}

D.{c,d,b,e,f,a,g}

17.折半查找的时间复杂性为()

A.O(n2)B.O(n)C.O(nlogn)D.O(logn)

18.有种数据结构叫跳跃列表(SkipList),它是一种基于并联的链表的随机化数据结构,其效率可比拟于二叉查找树(对于大于数操作需要O(logn)平均时间)。它是按层建造的。底层是一个普通的有序链表。每个更高层都充当下面列表的“快速跑道”,这里在层i中的元素按概率l/p出现在层i+1中。平均起来,每个元素都在p/(p-1)个列表中出现,而最高层的元素(通常是在跳跃列表前段的一个特殊的头元素)在O(logpn)个列表中出现。调节p的大小可以在内存消耗和时间消耗上进行折中。试分析在该数据结构中查找一个元素的平均时间复杂度。

A.O(logn)B.O(n)C.O(n*logn)D.以上都不正确

19.以下程序的输出结果是()。main{intx=0.5;charz=‘a’;printf(“d\n”,(x&1)&&(z<‘z’));}A.0B.1C.2D.3

20.

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

longfun5(intn)

{longs;

if((n==1)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

printff"%1d\n",x);}

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

inti=9;

printf("%o\n",i);

23.结构化程序设计的3种基本结构分别是顺序、选择和______。

24.函数pi的功能是根据以下近似公式求π值:

(π*π)/6=1+1/(2*2)+1/(3*3)+…+1(n*n)

现在请你在下面的函数中填空,完成求π的功能。

#include"math.h"

{doubles=0.0;longi;

for(i=1;i<=n;i++)s=s+【】;

return(sqrt(6*3));

}

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

#include<stdio.h>

main()

{intx=3,y=2,z=1;

if(x<y)

if(y<0)z+0;

elseZ+=1;

primf(“%d\n",z);

}

26.数据库技术的主要特点为数据的集成性、数据的高【】和低冗余性、数据独立性和数据统一管理与控制。

27.阅读下面语句,则程序的执行结果是【】。

#include"stdio.h"

main()

{inta=-1,b=1,k;

if((++a<0)&&!(b--<=0))

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

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

28.关系模型的3类完整性指的是【】、参照完整性、用户定义的完整性。

29.若变量x、y已定义为int类型且X的值为33,y的值为3,请将输出语句printf((),x/y);补充完整,使其输出的计算结果形式为:x/y=11。

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

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

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

请填空。

#include"math.h"

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

main()

{doublex,y1,y2;

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

y1=fun(【】);

y2=fun(【】);

printf("y1=%lf,y2=%lf\n",y1,y2);

}

31.请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。

______(double,double);

main()

{doublex,y;

scanf("%lf%lf",&x.&y);

printf("%lf\n…,max(x,y));

}

doublemax(doublea,doubleB)

{return(a>b?a=B);}

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

33.数据元素之间______的整体称为逻辑结构。

34.有以下程序:

#include<stdio.h>

main()

{charch1,ch2;intn1,n2;

ch1=getchar();ch2=getehar();

n1=ch1-'0';n2=n1*10+(ch2-'0');

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

}

程序运行时输入:12<回车>,执行后的输出结果是【】。

35.下面程序的运行结果是【】。

#inelude<stdio.h>

intf(inta[],intn)

{if(n>1)returna[0]+f(&a[1],n-1);

elsereturna[0];

}

main()

{intaa[3]={1,2,3},s;

s=f(&aa[0],3);printf("%d\n",s);

}

36.下面程序的功能是输出数组s中最大元素的下标,请填空。

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

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

37.已定义charch=′$′;inti=1,j;,执行j!=ch&&i++以后,i的值为【】。

38.以下程序的运行结果是【】。

#include<stdio.h>

main()

{FILE*fp;inta[10]={1,2,3,0,0},i;

fp=fopen("d2.dat","wb");

fwtite(a,sizeof(int),5,fp);

fwrite(a,sizeof(int),5,fp);

fclose(fp);

fp=fopen("d2.dat","rb");

fread(a,sizeof(int),10,fp);

fclose(fp);

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

}

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

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

intf(inta[],intn)

{if(n>=1)returnf(a,n-1)+a[n-1];

elsereturn0;

}

main()

{intaa[5]=(1,2,3,4,5),s;

s=f(aa,5);printf("%d\n",s);

}

三、1.选择题(20题)41.数据结构中,与所使用的计算机无关的是数据的()

A.存储结构B.物理结构C.逻辑结构D.线性结构

42.以下叙述中正确的是

A.用C程序实现的算法必须要有输入和输出操作

B.用C程序实现的算法可以没有输出但必须要有输入

C.用C程序实现的算法可以没有输入但必须要有输出

D.用C程序实现的算法可以既没有输入也没有输出

43.设有以下定义和语句inta[3][2]={1,2,3,4,5,6,},*p[3];p[0]=a[1];则*(p[0]+1)所代表的数组元素是

A.a[0][1]B.a[1][0]C.a[1][1]D.a[l][2]

44.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是A.函数调用可以作为独立的语句存在

B.函数调用可以作为一个函数的实参

C.函数调用可以出现在表达式中

D.函数调用可以作为一个函数的形参

45.设有定义:inta,*p=&a;以下scanf语句中能正确为变量a读入数据的是()。

A.scanf("%d",pa);

B.scanf("%d",a);

C.scanf("%d",&pa);

D.scanf("%d",*pa);

46.以下程序的输出结果是______。longfum(intn){longs;if(n==||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%ld\n",fun(3));}

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

47.有以下函数定义:intfun(doublea,doubleB){returna*b;}若以下选项中所用变量都已正确定义并赋值,错误的函数调用是()。

A.if(fun(x,y)){……}

B.z=fun(fun(x,y),fun(x,y));

C.z=fun(fun(x,y)x,y);

D.fun(x,y);

48.在下列设备中,属于输出设备的是()

A.键盘B.鼠标C.显示器D.软盘

49.程序流程图中有箭头的线段表示的是()。

A.图元关系B.数据流C.控制流D.调用关系

50.阅读下面程序,则程序段的功能是#include"stdio.h"main(){intc[]={23,1,56,234,7,0,34},i,j,t;for(i=1;i<7;i++){t=c[i];j=i-1;while(j>=0&&t>c[j]){c[j+1]=c[j];j--;}c[j+1]=t;}for(i=0;i<7;i++)printf("%d",c[i]);putchar('\n');}

A.对数组元素的升序排列B.对数组元素的降序排列C.对数组元素的倒序排列D.对数组元素的随机排列

51.以下所列的各函数首部中,正确的是______。

A.voidplay(vara:Integer,varb:Integer)

B.voidplay(inta,b)

C.voidplay(inta,intb)

D.Subplay(aasinteger,basinteger)

52.对表进行水平方向和垂直方向的分割,分别对应的关系运算是()

A.选择和投影B.投影和选择C.选择和联接D.投影和联接

53.若有函数内部说明:inta[3][4];则数组a中各元素

A.可在程序的运行阶段得到初值0

B.可在程序的编译阶段得到初值0

C.不能得到确定的初值

D.可在程序的编译或运行阶段得到初值0

54.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。

A.DB包括DBS和DBMSB.DBMS包括DB和DBSC.DBS包括DB和DBMSD.没有任何关系

55.已知字母A的ASCII代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是

A.kk>=′A′&&kk<=′Z′

B.!(kk>=′A′||kk<=′Z′)

C.(kk+32)>=′a′&&(kk+32)<=′Z′

D.isalpha(kk)&&(kk<91)

56.结构化程序设计主要强调的是()。

A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序的易读性

57.有以下程序段:intk=0;while(k=1)k++;while循环执行的次数是______。

A.无限次B.有语法错,不能执行C.一次也不执行D.执行一次

58.有以下程序

#include<stdio.h>

#include<string.h>

voidfun(char*s[],intn)

{char*t;inti,j;

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

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

if(strlen(s[i])>strlen(s[j])){t=s[i];s[i]:s[j];s[j]=t;}

}

main()

{char*ss[]={"bcc","bbcc","xy","aaaacc","aabcc"};

fun(ss,5);printf("%s,%s\n",ss[0],ss[4]);

}

程序的运行结果是

A.xy,aaaaccB.aaaacc,xyC.bcc,aabccD.aabcc,bcc

59.下列说法中不正确的是()。

A.指针是一个变量B.指针中存放的是数值C.指针可以进行加、减等算术运算D.指针变量占用存储空间

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

A.在赋值表达式中,赋值号的左边既可以是变量,也可以是任意表达式

B.实型变量中允许存放整型数

C.若a和b类型相同,在执行了赋值a=b后,b中的值将放入a中,但b中的值不变

D.在C程序中,求余运算符“%”两边的类型相同时才能进行运算

四、选择题(20题)61.

62.

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

A.

B.

C.

D.

64.

65.在下列模式中,能够给出数据库物理存储结构与物理存取方法的是()。

A.外模式B.内模式C.概念模式D.逻辑模式

66.在下列给出的表达式中,与while(E)中的(E)不等价的表达式是()。A.(!E==0)B.(E>0||E<0)C.(E==0)D.(E!=0)

67.

68.负责数据库中查询操作的数据库语言是()。

A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言

69.

70.已知i、j、k为int型变量,若要从键盘输入2、3、4<CR>,使i、j、k的值分别为2、3、4,下列正确的输入语句是()。A.A.scanf("%3d,‰3d,%3d",&i,&j,%k);

B.scanf("%d,%d,%d",&i,8Lj,&k);

C.scanf("%d%d%d",&i,&j,&k);

D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);

71.

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

main

{intx=f;printf("%c\n",A+(x-a+1));}

A.GB.HC.ID.J

72.在面向对象方法中,不属于“对象’’基本特点的是()。A.一致性B.分类性C.多态性D.标识唯一性

73.

74.若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是()。

75.

76.不能把字符串:Hello!赋给数组b的语句是()。

A.charb[10]={’H’,’e’,’l’,’l’,’o’,’!’};

B.charb[10];b="Hello!";

C.charb[10];strcpy(b,"Hello!");

D.charb[10]="Hello!";

77.

78.若有以下定义:chara;intb;floatc;doubled;则表达式a*b+b-c值的类型为()。A.floatB.intC.charD.double

79.设x=011050,则x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

80.

五、程序改错题(1题)81.下列给定程序中函数fun()的功能是:把从主函数中输人的3个数。最大的数放在a中,中间的数放在b中,最小的数放在C中。例如,若输入的数为:55,12,34,输出的结果应当是:a=55.0,b=34.0,c=12.0。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是将s所指字符串中ASCII值为奇数的字符删除,将剩余字符形成的新字符串放在t所指数组中。例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符A的ASCII值为奇数,字符1的ASCII值也为奇数,都应当删除,其他依此类推。最后t所指的数组中的内容应是“BDF24”。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,chart[]){}main(){ chars[100],t[100],Msg[]=“Pleaseenterstrings:”; printf(Msg); scanf(“%s”,s); fun(s,t); printf(“\nTheresuitis:%s\n”,t);}

参考答案

1.C

2.AB)选项中switch((int)x);语句中不应该有最后的分号。

3.A

4.C

5.A解析:本题定义了一个指向由3个元素组成的一维数组的指针变量pa,通过赋值让它指向具有2行3列的数组a,此时用指针变量pa,表示数组元素a[i][j]的形式是pa[i][j]。for循环执行了3次;第一次i值为0,执行pa[1][0]=pa[1][0]-1,执行后a[1][0]的值变为3;第二次i值为1,执行pa[1][1]=pa[1)[1]-1,执行后a[1][1]的值为4;第三次i值为2,执行pa[1][2]=1,执行后a[1][2]的值变为1。故printf语句输入的值为2+4+1=7。所以,A选项为所选。

6.C

7.Bswitch语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个e·*后面的常量表达式的值相等,就执行此ca*后面的语句,执行后遇break语句就退出switch语句;若圆括号中表达式的值与所有ca$e后面的常量表达式都不等,则执行default后面前语句。然后退出。所以输入l时打印65,输入2时打印6,输入3时打印64,输入4时打印5,输入5时打印6。

8.D

9.C

10.D题干中,函数fun的功能是将二维数组p的行下标为1、列下标为1的元素(p[1][1])的值赋给二维地址s指向的*s所指向的存储单元。main函数中定义了整型指针p,动态分配了整型长度的内存空间,调用函数fun将数组元素a[1][1],即9赋给p所指向的空间。本题答案为D选项。

11.A通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。

12.D

13.C在for循环语句中自变量i从0开始,每次自加2,执行s+=*(t+i)语句,因为C语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。因此,*(t+i)代表数组的第i+1个元素。所以程序运行的结果是1+3+5+7+9=25,即变量S的值等于25。

14.AC语言的标识符由字母、数字、下划线组成,且第1个字符必须是字母或下划线。另外,关键字不能作为标识符。B选项中以数字8开头,所以错误。C选项与D选项中用的是关键字“void”与“unsigned”,所以错误。故本题答案为A选项。

15.B

16.B

17.D

18.A

19.B(x&1)&&(z<‘z’)=(0.5&1)&&(‘a’<‘z’)=1&&1=1,故选择B选项。

20.B

21.99解析:考查ifelse语句,n==4不满足条件,所以fun5(4)=4+fun5(3),n==3也不满足条件,fun5(3)=3+funS(2),n==2满足条件fun5(2)=2,故x=4+3+2=9。

22.1111解析:本题考核的知识点是printf()函数的输出格式。本题中定义了一个整型变量i并赋初值为9,然后要求以八进制输出i的值,9的八进制数的表示为11。

23.重复(循环)重复(循环)解析:结构化程序设计包括3种基本的结构:顺序结构、选择结构和重复结构(循环结构),利用这3种结构就足以表达出各种其他形式结构的程序设计方法。其中利用循环结构,可以简化大量的程序执行。

24.1.0/(i*i)或(double)1/(i*i)1.0/(i*i)或(double)1/(i*i)解析:表达式1+1/(2*2)+1/(3*3)+…+1(n*n)可写为1/(1*1)+1/(2*2)+1/(3*3)+…+1(n*n)

n

即;∑1÷(i×i)

i=1

对应的C语言的表达式s=s+1.0/(i*i)。注:必须要写成1.0的形式,否则1/(i*i)返回值为其值截尾取整,即恒为0。

25.11解析:ifelse语句的功能:若表达式的值为真,执行语句1,并跳过其他语句,执行ifelse语句的下一条语句,若表达式的值为假,跳过语句1,执行语句2,依次往下判断。题中,x=3,y=2,第一个if语句的控制条件x<y就不满足,又没有与之配对的else语句,所以直接执行printf语句,在整个过程中变量z的值都没发生变化。

26.共享性共享性解析:数据库技术的主要特点有以下几个方面:数据的集成性,数据的高共享性与低冗余性,数据的独立性,数据统一管理与控制。

27.101,0解析:与运算两边的语句必须同时为真时,结果才为真,当执行完if((++a<0)&&!(b--<=0))时,a,b的值已经发生了变化。

28.实体完整性实体完整性解析:关系模型中的完整性是指数据库中数据的正确性和一致性。为了维护数据库中数据与现实世界的一致性,关系数据库的插入、删除、修改操作必须遵循3类完整性规则。关系模型的3类完整性指的是实体完整性、参照完整性和用户定义的完整性。

29.x/y=%dx/y=%d解析:本题考查prinff语句的输出格式。printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。在编写程序时经常会用到此函数。printf()函数的调用格式为:printf('<格式化字符串>”,<参最表>)其中,格式化字符串包括两部分内容。一部分足正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以“%”开始,后跟一个或几个规定字符,用来确定输出内容格式。参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用“,”分开,且顺序一一

30.x+8sin(x)x+8,sin(x)解析:考查考生对函数调用相关知识的了解。用x+8代替函数fun(doublex)中形式参数x;用sin(x)代替函数fun(doublex)中形式参数x。

31.doublemax或externdoublemaxdoublemax或externdoublemax解析:函数声明是对所用到的函数的特征进行必要的声明,编译系统以函数声明中给出的信息为依据,对调用表达式进行检测,以保证调用表达式与函数之间的参数正确传递.函数声明的一般格式为:类型标识符函数名(类型标识符形参,…);这些信息就是函数定义中的第一行的内容。本题中main()函数需要调用max()函数,在main()之前就需要声明函数max(),并且可以用extern说明符使变量的作用域扩充到需要用到它的函数,所以,填写doublemax(或externdoublemax)。

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

33.逻辑关系逻辑关系

34.1212解析:程序中的ch1与ch2为字符型变量,输入12后,ch1得到字符'1',ch2得到字符'2'。n1=ch1-'0'将字符1,转换为数值1,同理,n2为1*10+2=12。程序执行后输出十进制整数12。

35.66解析:已知aa[3]={1,2,3},n=3,调用函数f,n>1成立,执行a[0]+f(&a[1],n-1);即1+f(&a[1],2),递归调用函数f,将a[1]的地址作为参数传给数组a,使数组a的首地址变为&a[1],数组中的元素只有2,3;2传给n,这时n=2,n>1仍然成立,继续调用a[0]+f(&a[1],n-1);即执行1+2+f(&a[1],1),因为上次递归调用函数f后数组中的元素为2,3,所以此次的a[1]为3,调用后的a[0]为3。所以最后结果为1+2+3=6。

36.k=p;k=p;解析:为要寻找数组中的最大元素的下标,需先预设1个临时最大元素的下标,并顺序逐一考查数组的元素,当发现当前元素比临时最大元素更大时,就用当前元素的下标更新临时最大元素下标。直至考查了数组的全部元素后,这临时最大元素下标就是数组的最大元素下标。通常预设的最大元素下标是数组的首元素下标,考查是从首元素开始顺序向后继元素考查。程序中,存储临时最大元素下标的变量是k,变量p控制顺序考查的循环控制变量。当发现当前元素s[p]比临时最大元素s[k)更大时,应该用p更新k。所以在空框处应填入代码“k=p;”。

37.11解析:在执行逻辑表达式'j=!ch&&i++'时,首先判断j=!ch的值,因为'ch=\'$\''不为0,所以'j=!ch=0',编译系统便不再计算表达式'i++'的值,i的值不变,仍为1。

38.12300123001,2,3,0,0,1,2,3,0,0,解析:本题考查文件读写函数fread和fwrite的用法。fwrite函数将数组a的前5个元素输出到文件fp中两次,共10个字节,再调用fread函数从文件fp中读取这10个字节的数据到数组a中,此时数组a的内容就变为{1,2,3,0,0,1,2,3,0,0},最后的输出结果为'1,2,3,0,0,1,2,3,0,0,'。

39.内模式或物理模式或存储模式内模式或物理模式或存储模式解析:一个数据库只有一个内模式,它是数据物理结构和存储方式的描述,是数据库内部的表示方法。例如,记录的存储方式是顺序存储、索引按照什么方式组织;数据是否压缩存储,是否加密等。

40.1515解析:s=f(aa,5)=f(aa,4)+a[4]=f(aa,3)+a[3]+a[4]=f(aa,2)+a[2]+a[3]+a[4]

=f(aa,1)+a[1]+a[2]+a[3]|a[4]=0+a[0]+a[1]+a[2]+a[3]+a[4]=15。

41.Cc)【解析】数据的逻辑结构反映的是数据元素之间的逻辑关系,与使用的计算机无关。

42.C算法具有的5个特性是:有穷性、确定性、可行性、有0个或多个输入、有一个或多个输出。所以说,用C程序实现的算法可以没有输入,但必须要有输出。因此本题答案选C。

43.C解析:本题中首先定义了一个3行2列的数组a,一个长度为3的指针数组p,接着把地址a[1]赋给P[1]此时p[0]为a[1][0]的地址,p[0]+1为a[1][1]的地址,故*(p[0]+1)代表的元素为s[1][1]。所以,4个选项中选项C符合题意。

44.D解析:本题考查函数的调用。在有参函数调用中,是将主调函数的实参值传给被调函数的形参。按函数在程序中出现的位置来分,有以下三种函数调用形式:

①函数调用作为一条语句。例如:fun();这时不要求函数带回值,只要求函数完成一定的操作。故选项A)正确。

②函数出现在表达式中,这种表达式称为函数表达式。这时要求函数带回一个确定的值以参加表达式的运算。例如:c=5*max(a,b);函数max是表达式的一部分,将其值乘以5后赋给c。故选项C)正确。

③函数调用作为一个函数的实参,例如:m=max(a,max(b,c));其中max(b,c)是一次函数调用,它的值作为max另一次调用的实参。故选项B)正确。

函数调用不可作为一个函数的形参,因为函数调用参数的数据传递是单向传递,即实参传给形参,不能由形参传给实参。故选项D)错误。

45.A解析:本题中定义了整型变量a和一个指向整型数据的指针变量pa,并定义pa是一个存放a的地址的变量。选项B中使用a是变量名而不是内存地址,故选项B不正确。&pa是取指针变量pa的地址,这个地址中存放的应该是地址值,不能正确为变量a读入数据,故选项C不正确。选项D中*pa等价于变量名a,而输入函数地址列表中的参数要求是内存中的地址,故选项D不正确,所以,4个选项中选项A符合题意。

46.A解析:这是一个递归函数。递归的结束条件是,n=1或者n=2。按照程序顺序,即可得出本题结果为1。

47.C

48.C

49.C解析:程序流程图是软件过程设计中常用的图形描述工具之一。构成程序流程图的最基本符号有:→或↓,表示控制流;□表示加工步骤;

表示逻辑条件。

50.B解析:读懂两个循环的关系,是解这个题目的关键,本题的第一个for循环的作用是实现对数组元素的遍历,第二个循环的作用是排序。while(j>=0&&t>c[j]),这个语句是控制排序的关键语句,它即实现了比较两个元素大小的作用,又实现了元素向后移动的作用,不断地把大的数据向前移动,直到找到一个比它小的,或到数据的上界为止。

51.C解析:除选项C项外,其他各项都没有按照C语言中的函数定义规则定义函数。

52.A解析:从关系中找出满足给定条件的那些元组称为选择,是从行的角度进行的运算,即水平方向抽取元组。从关系模式中挑选若干属性组成新的关系称为投影,是从列的角度进行的运算,相当于对关系进行垂直分解。所以,本题选择A。

53.C本题主要考查数组的定义及初始化。在对数组进行定义和初始化时,需要注意以下事项。

(1)数组的内存空间在编译时确定,定义数组时的n值只能使用常量,不能使用变量。

(2)定义数组时可以不标明数组元素的个数,而是通过赋初值的方式确定,编译系统将自动计算花括号内的数据数量作为数组的元素个数。

(3)数组初始化时,当初值的个数小于整型常量n时,编译系统会自动补0。一旦给定初值数超过n,编译系统将报错。

(4)初始化数组的元素类型,必须与定义数组时的类型一致。

(5)数组名记录了数组在内存中的首地址,其值不能更改。

(6)除字符数组外,不能直接用数组名对数组进行整体输入或输出。

本题中定义了一个3行4列的数组,但没有对其进行赋初值操作,可能我们会想在系统编译时会自动补0,这只是在初值个数小于数组定义大小的情况下的操作,如果没有进行赋初值操作,数组中的元素值是不能被确定的。因此,本题答案选C。

54.CC。【解析】数据库系统(DBS)由数据库(DBS)、数据库管理系统(DBMS)、数据库管理员、硬件平台和软件平台五个部分组成,可见DB和DBMS都是DBS的组成部分。

55.B解析:C语言的字符以其ASCII码的形式存在,所以要确定某个字符是大写字母,只要确定它的ASCII码在'A'和'Z'之间就可以了,选项A)和C)符合要求。函数isalpha用来确定一个字符是否为字母,大写字母的ASCII码值的范围为65到90,所以如果一个字母的ASCII码小于91,那么就能确定它是大写字母。

56.D解析:程序不仅是编写完就结束了,为了测试和维护程序,往往还有其他人阅读和跟踪程序,因此程序设计的风格应该强调简单和清晰,即程序的易读性,“清晰第一,效率第二”。

57.A解析:本题的循环条件是表达式“k=1”,表达式值永远为1,所以是无限循环。

58.A解析:函数fun(char*s[],intn)的功能是对字符串数组的元素按照字符串的长度从小到大排序。在主函数中执行fun(ss,5)语句后,*ss[]={'xy','bcc','bbcc','aabcc','aaaacc'},ss[0],ss[4]的输出结果为xy,aaaacc。

59.B解析:指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是—个存储单元,而不是一个字节。

60.B解析:选项A),在赋值表达式中,赋值号的左边只能是变量或者是代表某个存储单元的表达式,不能是任意表达式。

在判断选项B)时首先应该建立这杆的概念,整型变量中只能存放整型数,实型变量中能存放实型数,也能存放整型数。

选项C),执行表达式a=b后,将把变量b存储单元中的值赋给变量a,从而覆盖a中原有的值,但b中原有的值并不改变。

选项D),在C程序中,求余运算符“%”两边的类型均为整型数据。

61.C

62.D

63.C解析:选项A中两个变量的定义应当以逗号隔开;选项B中a和b应当分开赋值;选项D中变量类型不相匹配,b应当是指针型变量。

64.A

65.B数据库有三层模式结构,逻辑模式是数据的全局逻辑结构的描述,外模式也称为子模式,是局部数据的逻辑结构描述,而内模式也称为存储模式,是数据库物理存储结构和存取方法的描述。

66.B在while(E)中,表达式E可以是C语言中任意合法的条件表达式,但不能为空,由它来控制循环体是否执行。在选项8中表达式E>0||E<0是一个逻辑表达式。

67.C

68.C数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增加、删除、修改等操作;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。因此本题答案为C)。

69.B

70.B本题主要考查SCANf函数的使用,scarlf函数的调用形式是:scanf(格戈字符串,输入项地址表)。“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的地址。

71.D

\n因为x=f,所以写成A+(x-a+1)=A+(f-a+1)=A+6=J,故选择D选项。

\n

72.A在面向对象方法中,对象的基本特点包括:标识唯一性、分类性、多态性、封装性、模块独立性好。一致性不属于对象的基本特点,因此本题答案为A)。

73.B

74.B一雏数组的定义方式为:类型说明符数组名[常量表达式];注意定义数组时,元素个数不能是变量。因此应该选B选项。

75.A

76.B

77.B

78.D在表达式a*b+d-c中,double的类型最高,C语言中,由低类型自动向高类型转换,所以最后的结果一定是double型。

79.A本题考查按位与运算,按位与就是相同为1,不同为0,把x=011050化成二进制为0001001000101000,把01252化成二进制为0000001010101010,两者相与得0000001000101000。

80.A

81.(1)错误:float*k;

正确:floatk;

(2)错误:if(*a>*c)

正确:if(*a<*c)

【解析】变量定义首先要判断变量的类型,给定程序的赋值语句中,k是以变量形式进行赋值的,所以k不是指针,定义为指针是不正确的;由给出程序可以看出,if语句是为了将小于*C的值放入*C中,所以应该改为“if(*a<*c)”。

82.voidfun(char*s,chart[]){ inti,j=0,n; n=strlen(s);/*遍历整个数组*/ for(i=0;i<=""p="">/*如果元素的ASCII值为偶数*/ if(s[i]%2==0) {/*将元素保存到t中*/ t[j]=s[i]; j++; } t[j]=-‘\0’;}要删除ASCII值为奇数的字符,也就是要保留ASCII值为偶数的字符,将ASCII值为偶数的字符保存到新字符串。所以本题的算法是对原字符串从头到尾进行扫描,找出ASCII值为偶数的字符并依次存入数组。2021年甘肃省白银市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称为()。

A.存储结构B.逻辑结构C.顺序存储结构D.链式存储结构

2.若有定义:floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是()。A.switch(a+b){case1:prinf("*\n");.case2+1:printf("**(n");}

B.switch(int)x);{case1:print("*\n");.case2:printf(**\n");}

C.switch(x){case1.0:print("*\n");case2.0:print("*\n");}

D.switch(a+b){case1:print("*\n");.casec:pit(**\n");}

3.设无向图G中有n个顶点e条边,则其对应的邻接表中的表头结点和边表接点的个数分别为()。

A.n,eB.e,nC.2n,eD.n,2e

4.对于静态表的顺序查找法,若在表头设置监视哨,则正确的查找方式为()A.从第0个元素往后查找该数据元素

B.从第1个元素往后查找该数据元素

C.从第n个元素往开始前查找该数据元素

D.与查找顺序无关

5.有以下程序:main(){inta[][3]={{1,2,3),{4,5,0)),(*pa)[3],i;pa=a;for(i=0;i<3;i++)if(i<2)pa[1][i]=pa[1][i]-1;elsepa[1][i]=1;printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}执行后输出结果是()。

A.7B.6C.8D.无确定值

6.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为()。

A.O(n)O(n)B.O(n)O(1)C.O(1)O(n)D.O(1)O(1)

7.有以下程序:

运行时,若输入123450<;回车>;,则输出结果是()。

A.66656B.6566456C.66666D.6666656

8.

9.

10.有以下程序:

程序运行后的输出结果是()。A.1B.11C.7D.9

11.软件生命周期是指()。A.软件产品从提出、实现、使用维护到停止使用退役的过程

B.软件从需求分析、设计、实现到测试完成的过程

C.软件的开发过程

D.软件的运行维护过程

12.

13.有下列程序:main{inti,s=0,t[]={1,2,3,4,5,6,7,8,9);for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}程序执行后的输出结果是()。A.45B.20C.25D.36

14.以下选项中,能用作用户标识符的是()。

A._0_B.8_8C.voidD.unsigned

15.以下()不是队列的基本运算

A.从队尾插入一个新元素B.从队列中删除第i个元素C.判断一个队列是否为空D.读取队头元素的值

16.依次读入数据元素序列{a,b,c,d,e,f,g}进栈,元素进栈或出栈顺序是未知的,下列序列中,不可能成为栈空时弹出的元素构成序列的有()

A.{d,e,c,f,b,g,a}

B.{f,e,g,d,a,c,b}

C.{e,f,d,g,c,b,a}

D.{c,d,b,e,f,a,g}

17.折半查找的时间复杂性为()

A.O(n2)B.O(n)C.O(nlogn)D.O(logn)

18.有种数据结构叫跳跃列表(SkipList),它是一种基于并联的链表的随机化数据结构,其效率可比拟于二叉查找树(对于大于数操作需要O(logn)平均时间)。它是按层建造的。底层是一个普通的有序链表。每个更高层都充当下面列表的“快速跑道”,这里在层i中的元素按概率l/p出现在层i+1中。平均起来,每个元素都在p/(p-1)个列表中出现,而最高层的元素(通常是在跳跃列表前段的一个特殊的头元素)在O(logpn)个列表中出现。调节p的大小可以在内存消耗和时间消耗上进行折中。试分析在该数据结构中查找一个元素的平均时间复杂度。

A.O(logn)B.O(n)C.O(n*logn)D.以上都不正确

19.以下程序的输出结果是()。main{intx=0.5;charz=‘a’;printf(“d\n”,(x&1)&&(z<‘z’));}A.0B.1C.2D.3

20.

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

longfun5(intn)

{longs;

if((n==1)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

printff"%1d\n",x);}

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

inti=9;

printf("%o\n",i);

23.结构化程序设计的3种基本结构分别是顺序、选择和______。

24.函数pi的功能是根据以下近似公式求π值:

(π*π)/6=1+1/(2*2)+1/(3*3)+…+1(n*n)

现在请你在下面的函数中填空,完成求π的功能。

#include"math.h"

{doubles=0.0;longi;

for(i=1;i<=n;i++)s=s+【】;

return(sqrt(6*3));

}

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

#include<stdio.h>

main()

{intx=3,y=2,z=1;

if(x<y)

if(y<0)z+0;

elseZ+=1;

primf(“%d\n",z);

}

26.数据库技术的主要特点为数据的集成性、数据的高【】和低冗余性、数据独立性和数据统一管理与控制。

27.阅读下面语句,则程序的执行结果是【】。

#include"stdio.h"

main()

{inta=-1,b=1,k;

if((++a<0)&&!(b--<=0))

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

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

28.关系模型的3类完整性指的是【】、参照完整性、用户定义的完整性。

29.若变量x、y已定义为int类型且X的值为33,y的值为3,请将输出语句printf((),x/y);补充完整,使其输出的计算结果形式为:x/y=11。

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

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

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

请填空。

#include"math.h"

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

main()

{doublex,y1,y2;

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

y1=fun(【】);

y2=fun(【】);

printf("y1=%lf,y2=%lf\n",y1,y2);

}

31.请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。

______(double,double);

main()

{doublex,y;

scanf("%lf%lf",&x.&y);

printf("%lf\n…,max(x,y));

}

doublemax(doublea,doubleB)

{return(a>b?a=B);}

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

33.数据元素之间______的整体称为逻辑结构。

34.有以下程序:

#include<stdio.h>

main()

{charch1,ch2;intn1,n2;

ch1=getchar();ch2=getehar();

n1=ch1-'0';n2=n1*10+(ch2-'0');

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

}

程序运行时输入:12<回车>,执行后的输出结果是【】。

35.下面程序的运行结果是【】。

#inelude<stdio.h>

intf(inta[],intn)

{if(n>1)returna[0]+f(&a[1],n-1);

elsereturna[0];

}

main()

{intaa[3]={1,2,3},s;

s=f(&aa[0],3);printf("%d\n",s);

}

36.下面程序的功能是输出数组s中最大元素的下标,请填空。

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

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

37.已定义charch=′$′;inti=1,j;,执行j!=ch&&i++以后,i的值为【】。

38.以下程序的运行结果是【】。

#include<stdio.h>

main()

{FILE*fp;inta[10]={1,2,3,0,0},i;

fp=fopen("d2.dat","wb");

fwtite(a,sizeof(int),5,fp);

fwrite(a,sizeof(int),5,fp);

fclose(fp);

fp=fopen("d2.dat","rb");

fread(a,sizeof(int),10,fp);

fclose(fp);

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

}

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

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

intf(inta[],intn)

{if(n>=1)returnf(a,n-1)+a[n-1];

elsereturn0;

}

main()

{intaa[5]=(1,2,3,4,5),s;

s=f(aa,5);printf("%d\n",s);

}

三、1.选择题(20题)41.数据结构中,与所使用的计算机无关的是数据的()

A.存储结构B.物理结构C.逻辑结构D.线性结构

42.以下叙述中正确的是

A.用C程序实现的算法必须要有输入和输出操作

B.用C程序实现的算法可以没有输出但必须要有输入

C.用C程序实现的算法可以没有输入但必须要有输出

D.用C程序实现的算法可以既没有输入也没有输出

43.设有以下定义和语句inta[3][2]={1,2,3,4,5,6,},*p[3];p[0]=a[1];则*(p[0]+1)所代表的数组元素是

A.a[0][1]B.a[1][0]C.a[1][1]D.a[l][2]

44.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是A.函数调用可以作为独立的语句存在

B.函数调用可以作为一个函数的实参

C.函数调用可以出现在表达式中

D.函数调用可以作为一个函数的形参

45.设有定义:inta,*p=&a;以下scanf语句中能正确为变量a读入数据的是()。

A.scanf("%d",pa);

B.scanf("%d",a);

C.scanf("%d",&pa);

D.scanf("%d",*pa);

46.以下程序的输出结果是______。longfum(intn){longs;if(n==||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%ld\n",fun(3));}

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

47.有以下函数定义:intfun(doublea,doubleB){returna*b;}若以下选项中所用变量都已正确定义并赋值,错误的函数调用是()。

A.if(fun(x,y)){……}

B.z=fun(fun(x,y),fun(x,y));

C.z=fun(fun(x,y)x,y);

D.fun(x,y);

48.在下列设备中,属于输出设备的是()

A.键盘B.鼠标C.显示器D.软盘

49.程序流程图中有箭头的线段表示的是()。

A.图元关系B.数据流C.控制流D.调用关系

50.阅读下面程序,则程序段的功能是#include"stdio.h"main(){intc[]={23,1,56,234,7,0,34},i,j,t;for(i=1;i<7;i++){t=c[i];j=i-1;while(j>=0&&t>c[j]){c[j+1]=c[j];j--;}c[j+1]=t;}for(i=0;i<7;i++)printf("%d",c[i]);putchar('\n');}

A.对数组元素的升序排列B.对数组元素的降序排列C.对数组元素的倒序排列D.对数组元素的随机排列

51.以下所列的各函数首部中,正确的是______。

A.voidplay(vara:Integer,varb:Integer)

B.voidplay(inta,b)

C.voidplay(inta,intb)

D.Subplay(aasinteger,basinteger)

52.对表进行水平方向和垂直方向的分割,分别对应的关系运算是()

A.选择和投影B.投影和选择C.选择和联接D.投影和联接

53.若有函数内部说明:inta[3][4];则数组a中各元素

A.可在程序的运行阶段得到初值0

B.可在程序的编译阶段得到初值0

C.不能得到确定的初值

D.可在程序的编译或运行阶段得到初值0

54.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。

A.DB包括DBS和DBMSB.DBMS包括DB和DBSC.DBS包括DB和DBMSD.没有任何关系

55.已知字母A的ASCII代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是

A.kk>=′A′&&kk<=′Z′

B.!(kk>=′A′||kk<=′Z′)

C.(kk+32)>=′a′&&(kk+32)<=′Z′

D.isalpha(kk)&&(kk<91)

56.结构化程序设计主要强调的是()。

A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序的易读性

57.有以下程序段:intk=0;while(k=1)k++;while循环执行的次数是______。

A.无限次B.有语法错,不能执行C.一次也不执行D.执行一次

58.有以下程序

#include<stdio.h>

#include<string.h>

voidfun(char*s[],intn)

{char*t;inti,j;

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

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

if(strlen(s[i])>strlen(s[j])){t=s[i];s[i]:s[j];s[j]=t;}

}

main()

{char*ss[]={"bcc","bbcc","xy","aaaacc","aabcc"};

fun(ss,5);printf("%s,%s\n",ss[0],ss[4]);

}

程序的运行结果是

A.xy,aaaaccB.aaaacc,xyC.bcc,aabccD.aabcc,bcc

59.下列说法中不正确的是()。

A.指针是一个变量B.指针中存放的是数值C.指针可以进行加、减等算术运算D.指针变量占用存储空间

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

A.在赋值表达式中,赋值号的左边既可以是变量,也可以是任意表达式

B.实型变量中允许存放整型数

C.若a和b类型相同,在执行了赋值a=b后,b中的值将放入a中,但b中的值不变

D.在C程序中,求余运算符“%”两边的类型相同时才能进行运算

四、选择题(20题)61.

62.

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

A.

B.

C.

D.

64.

65.在下列模式中,能够给出数据库物理存储结构与物理存取方法的是()。

A.外模式B.内模式C.概念模式D.逻辑模式

66.在下列给出的表达式中,与while(E)中的(E)不等价的表达式是()。A.(!E==0)B.(E>0||E<0)C.(E==0)D.(E!=0)

67.

68.负责数据库中查询操作的数据库语言是()。

A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言

69.

70.已知i、j、k为int型变量,若要从键盘输入2、3、4<CR>,使i、j、k的值分别为2、3、4,下列正确的输入语句是()。A.A.scanf("%3d,‰3d,%3d",&i,&j,%k);

B.scanf("%d,%d,%d",&i,8Lj,&k);

C.scanf("%d%d%d",&i,&j,&k);

D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);

71.

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

main

{intx=f;printf("%c\n",A+(x-a+1));}

A.GB.HC.ID.J

72.在面向对象方法中,不属于“对象’’基本特点的是()。A.一致性B.分类性C.多态性D.标识唯一性

73.

74.若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是()。

75.

76.不能把字符串:Hello!赋给数组b的语句是()。

A.charb[10]={’H’,’e’,’l’,’l’,’o’,’!’};

B.charb[10];b="Hello!";

C.charb[10];strcpy(b,"Hello!");

D.charb[10]="Hello!";

77.

78.若有以下定义:chara;intb;floatc;doubled;则表达式a*b+b-c值的类型为()。A.floatB.intC.charD.double

79.设x=011050,则x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

80.

五、程序改错题(1题)81.下列给定程序中函数fun()的功能是:把从主函数中输人的3个数。最大的数放在a中,中间的数放在b中,最小的数放在C中。例如,若输入的数为:55,12,34,输出的结果应当是:a=55.0,b=34.0,c=12.0。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是将s所指字符串中ASCII值为奇数的字符删除,将剩余字符形成的新字符串放在t所指数组中。例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符A的ASCII值为奇数,字符1的ASCII值也为奇数,都应当删除,其他依此类推。最后t所指的数组中的内容应是“BDF24”。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,chart[]){}main(){ chars[100],t[100],Msg[]=“Pleaseenterstrings:”; printf(Msg); scanf(“%s”,s); fun(s,t); printf(“\nTheresuitis:%s\n”,t);}

参考答案

1.C

2.AB)选项中switch((int)x);语句中不应该有最后的分号。

3.A

4.C

5.A解析:本题定义了一个指向由3个元素组成的一维数组的指针变量pa,通过赋值让它指向具有2行3列的数组a,此时用指针变量pa,表示数组元素a[i][j]的形式是pa[i][j]。for循环执行了3次;第一次i值为0,执行pa[1][0]=pa[1][0]-1,执行后a[1][0]的值变为3;第二次i值为1,执行pa[1][1]=pa[1)[1]-1,执行后a[1][1]的值为4;第三次i值为2,执行pa[1][2]=1,执行后a[1][2]的值变为1。故printf语句输入的值为2+4+1=7。所以,A选项为所选。

6.C

7.Bswitch语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个e·*后面的常量表达式的值相等,就执行此ca*后面的语句,执行后遇break语句就退出switch语句;若圆括号中表达式的值与所有ca$e后面的常量表达式都不等,则执行default后面前语句。然后退出。所以输入l时打印65,输入2时打印6,输入3时打印64,输入4时打印5,输入5时打印6。

8.D

9.C

10.D题干中,函数fun的功能是将二维数组p的行下标为1、列下标为1的元素(p[1][1])的值赋给二维地址s指向的*s所指向的存储单元。main函数中定义了整型指针p,动态分配了整型长度的内存空间,调用函数fun将数组元素a[1][1],即9赋给p所指向的空间。本题答案为D选项。

11.A通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。

12.D

13.C在for循环语句中自变量i从0开始,每次自加2,执行s+=*(t+i)语句,因为C语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。因此,*(t+i)代表数组的第i+1个元素。所以程序运行的结果是1+3+5+7+9=25,即变量S的值等于25。

14.AC语言的标识符由字母、数字、下划线组成,且第1个字符必须是字母或下划线。另外,关键字不能作为标识符。B选项中以数字8开头,所以错误。C选项与D选项中用的是关键字“void”与“unsigned”,所以错误。故本题答案为A选项。

15.B

16.B

17.D

18.A

19.B(x&1)&&(z<‘z’)=(0.5&1)&&(‘a’<‘z’)=1&&1=1,故选择B选项。

20.B

21.99解析:考查ifelse语句,n==4不满足条件,所以fun5(4)=4+fun5(3),n==3也不满足条件,fun5(3)=3+funS(2),n==2满足条件fun5(2)=2,故x=4+3+2=9。

22.1111解析:本题考核的知识点是printf()函数的输出格式。本题中定义了一个整型变量i并赋初值为9,然后要求以八进制输出i的值,9的八进制数的表示为11。

23.重复(循环)重复(循环)解析:结构化程序设计包括3种基本的结构:顺序结构、选择结构和重复结构(循环结构),利用这3种结构就足以表达出各种其他形式结构的程序设计方法。其中利用循环结构,可

温馨提示

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

最新文档

评论

0/150

提交评论