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

下载本文档

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

文档简介

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

一、单选题(20题)1.有以下程序:

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

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

2.

3.设有以下语句,其中不是对a数组元素的正确引用的是:_____(其中0≤i<10)inta[10]={0,1,3,4,5,6,7,8,9,},*p=a;

A.a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))

4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储()。

A.数据的处理方法B.数据元素的类型C.数据元素之间的关系D.数据的存储方法

5.下列程序的输出结果是()。#include<stdio.h>main(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}

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

6.有以下程序

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;

*q=*(p+5);

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

}

程序运行后的输出结果是A.运行后报错B.66C.611D.510

7.

8.以下不合法的字符常量是()。

A.‘\\’B.‘\”’C.‘\018’D.‘\xcc’

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

A.改变函数形参的值,不会改变对应实参的值

B.函数可以返回地址值

C.可以给指针变量赋一个整数作为地址值

D.当在程序的开头包含文件stdi0.h时,可以给指针变量赋NULL

10.下列选项中非法的字符常量是()。

A.'\t'B.'\039'C.','D.'\n'

11.若有定义“intx=10;”,则表达式“x-=x+x”的值为()。

A.0B.-20C.-10D.10

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

A.c语言是一种结构化程序设计语言

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

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

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

13.若有定义“inta=3,*p=&a,**q=&p;”,则以下叙述中错误的是()。

A.q是指针变量,*q就是变量a

B.p是指针变量,p指向变量a

C.q指向变量p,所以*q指向变量a

D.*p与**q都代表变量a

14.有以下程序:#include<stdio.h>main(){intt;scanf(“%d”,&t);if(t++<6)printf(“%d\n”,t);elseprintf(“%d\n”,t--);printf(“\n”);}执行时输入6并按<Enter>键,则输出结果是()。A.6B.8C.7D.5

15.以下程序的输出结果是()。#defineM(x,y,z)x*y+zmain(){inta=l,b=2,c=3;printf("%d\n",m(a+b.b+c,c+a));}A.19B.17C.15D.12

16.有下列程序:main{inti,j,x=0;for(i=0,i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++:}x++:}printf("x=%d\n",x);}程序执行后的输出结果是()。A.x=4B.x=8C.x=6D.x=12

17.当用户要求输入的字符串中含有空格时,应使用的输入函数是()。

A.scanfB.getcharC.getsD.getc

18.下列描述错误的是()。

A.继承分为多重继承和单继承

B.对象之间的通信靠传递消息来实现

C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征

D.类是具有共同属性、共同方法的对象的集合

19.有定义语句:“intx,y;”,若要通过“scanf("%d,%d,&x,&y);”语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是

A.1112<回车>B.11,12<回车>C.11,12<回车>D.11,<回车>12<回车>

20.以下程序的输出结果是().A.A.2222B.2468C.222D.246

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

chars[20]="aaaa",*sp=s;

puts(strcat(sp,"AAAAA"));

22.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。

#include<string.h>

main()

{infi,j,[13];charstr[]={"1234567"};

for(i=0,j=strlen(str)[14];i<j;i++,j--)

{k=str[i];str[i]=str[i];str[j]=k;}

printf("%s\n",str);}

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

24.若有定义:inta=10,b=8,c=4;然后顺序执行下列语句后,变量a中的值是()。c=(b-=(a-4));a=(c%2)+(b-1);

25.已知a=1,b=2,则表达式(a&B)&b||b的结果为()。

26.对一组记录{54,38,96,23,15,72,60,45,83}进行直接插入排序时,当插入第5个记录到有序表时,寻找插入位置需比较【】次。

27.若有如下定义,doublea[100];,则a数组元素的下标上限是【】。

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

29.设二进制数A是00101101,若想通过异或运算ab使A的高4位取反,低4位不变,则二进制数B应是【】。

30.在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4;一个double型数据在内存中所占的字节数为【】。

31.以下程序用来输出结构体变量ex所占存储单元的字节数,请填空。

structst

{charname[20];doublescore;};

main()

{structstex;

pfintf("exsize:%d\n",sizeof(______));}

32.下列程序将二维数组a的行和列元素互换后存放到另一个二维数组b中。请填空。

main()

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

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

{for(j=0;j<3;j++)

}

}

33.下面的程序通过函数average计算数组中各元素的平均值,请填空。

floatavetage(int*pa,intn)

{inti;

floatavg=0.0;

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

avg=avg+【】;avg=【】;

returnavg;

}

main()

{inti,a[5]={2,4,6,8,10,};

floatmean;

prinf("%mean=%f\n",mean);

}

34.函数my_cmp()的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s>t时返回正值,s<t时返回负值。请填空。

My_cmp(char*s,char*t)

{while(*s==*t)

{if(*s==′\0)return0;

++s;++t;

}return【】;

}

35.以下程序的功能是计算:s=1+12+123+1234+12345。请填空。

#include<stdio.h>

main()

intt=0.s=0,i:

for(i=1;i<=5;i++){t=i+【】;s=s+t;}

prinff("s=%d\n".s);}

36.下列语句能循环______次。

ints=12;

while(s);

--s;

37.以下程序运行后的输出结果是()。main(){inta,b,c;a=10;b=20;c=(a/b<1)&&(a%b<1);printf("%d%d%d\n",a,b,C);}

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

#include<stdio.h>

main()

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

if(x<y)

if(y<0)z=0;

elsez+=1;

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

}

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

40.在一个容量为32的循环队列中,若头指针front=3,尾指针rear=2,则该循环队列中共有______个元素。

三、1.选择题(20题)41.下列所述中,是软件调试技术的是()。

A.错误推断B.集成测试C.回溯法D.边界值分析

42.以下变量x、y、z均为double类型且已正确赋值,不能正确表示数学式子x/(y*2)的C语言表达式是______。

A.x/y*2B.x*(1/(y*z))C.x/y*1/zD.x/y/z

43.设有下列语句inta=1,b=2,c;c=a^(b《2);执行后,C的值为()。

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

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

A.周部变量说明为static存储类,其生存期将碍到延长

B.全局变量说明为static存储类,其作用域将被扩大

C.任何存储类的变量在未赋初值时,其值都是不确定的

D.形参可以使用的存储类说明符与局部变量完全相同

45.下列叙述中正确的是

A.C语言中既有逻辑类型也有集合类型

B.C语言中没有逻辑类型但有集合类型

C.C语言中有逻辑类型但没有集合类别

D.C语言中既没有逻辑类型也没有集合类型

46.下列程序的输出结果是()。#include<stdio.h>main(){inti;for(i=1;i<=10;i++){if((i*i>=20)&&(i*i<=100))break;}printf("%d\n",i*i);}

A.49B.36C.25D.64

47.已知在ASCⅡ代码中,字母A的序号为65,以下程序的输出结果是______。#include<stdio.h>main(){charc1='A',c2='Y';printf("%d,%d\n",c1,c2);}

A.65,90B.因输出格式不合法,输出错误信息C.A,YD.65,89

48.若a、b、c、d都是int型变量且都已经正确赋初值,则下列不正确的赋值语句是()。

A.a+d;B.a++;C.a=b=c=d=100;D.a=(b=3)+(d=5);

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

A.线性链表中的各元素在存储空间中的位置必须是连续的

B.线性链表中的表头元素一定存储在其他元素的前面

C.线性链表中的各元素在存储空间中的位置不一定是连续的,但表头元素一定存储在其他元素的前面

D.线性链表中的各元素在存储空间中的位置不一定是连续的,且各元素的存储顺序也是任意的

50.执行以下程序后,a,b的值分别是()。#include<stdio.h>main(){inta,b,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;b=(*p1)/(*p2)+7;printf("a=%d\n",a);printf("b=%d\n",b);}

A.-1,5B.1,6C.0,7D.4,10

51.有以下程序:main(){inta=1,b=2,m=0,n=0,k;k=(n=b>A)||(m=a<B);printf("%d,%d\n",k,m);}程序运行后的输出结果是

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

52.下列叙述中,不符合良好程序设计风格要求的是()

A.程序的效率第一,清晰第二B.程序的可读性好C.程序中要有必要的注释D.输入数据前要有提示信息

53.在结构化方法中,软件功能分解属于软件开发中的______阶段。

A.详细设计B.需求分析C.总体设计D.编程调试

54.有以下程序:main(){inti=1,j=2,k=3;if(i++==1&&(++j==3||k++==3))printf("%d%d%d\n",i,j,k);}程序运行后的输出结果是()。

A.123B.234C.223D.233

55.有以下程序voidss(char*s,chart){while(*s){if(*s==t),s=t-'a'+'A';s++;}}main(){charstr1[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",str1);}程序运行后的输出结果是

A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd

56.有以下程序:#include<stdio.h>voidfun(char*a,char*B){while(*a=='*')a++;while(*b=*A){b++;a++;}}main(){char*s="****a*b****",t[80];fun(s,t);puts(t);}程序的运行结果是()。

A.*****a*bB.a*bC.a*b****D.ab

57.有以下程序:#include<stdio.h>main(){inta[]={2,4,6,8,10},y=0,x,*p;p=&a[1];for(x=1;x<3;x++)y+=p[x];printf("%d\n",y);}程序运行后的输出结果是()。

A.10B.11C.14D.15

58.结构化程序设计主要强调的是

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

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

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

60.下列描述中,正确的一条是______。

A.关系表达式的值是一个逻辑值,即“真”或“假”,可以赋给一个逻辑变量

B.在C语言中,判断一个量是否为:真”时,以0代表“假”,以1代表“真”.

C.设a=3、b=4、c=5,则表达式!(x=a)&&(y=b)&&0的值为0

D.一个数组的各个数组元素可属于不同的数据类型

四、选择题(20题)61.

下列程序的运行结果是()。

#include<stdio.h>

voidfun(int*S,int*p)

{staticintt=3:

*p=s[t];

t--;

}

voidmain

{inta[]={2,3,4,5),k;

intx;

for(k=0,k<4,k++)

{fun(a,&x);

printf("%d,",x);

}

}

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

62.

63.有以下程序:

i

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

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

64.已知inta=1,b=-1;则语句printf("%d\n",(a--,++b));的输出结果是

A.-1B.0C.1D.语句错误

65.(5)下面概念中,不属于面向对象方法的是()

A.对象

B.继承

C.类

D.过程调用

66.有以下程序:

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

A.20B.25C.45D.36

67.下列函数的功能是()

68.

69.数据库、数据库系统和数据库管理系统之间的关系是()。

A.数据库包括数据库系统和数据库管理系统

B.数据库系统包括数据库和数据库管理系统

C.数据库管理系统包括数据库和数据库系统

D.三者没有明显的包含关系

70.

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

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

A.自然连接B.并C.交D.差

72.有以下程序:

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

A.197B.143C.33D.28

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

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

74.

75.对长度为n的线性表排序,在最坏情况下,比较次数是nlog2n的排序方法是()。

A.快速排序B.冒泡排序C.直接插入排序D.堆排序

76.下列选项不符合良好程序设计风格的是()。

A.源程序要文档化B.数据说明的次序要规范化C.避免滥用goto语句D.模块设计原则是高耦合、高内聚

77.

下列程序的运行结果是()。

#include<stdio.h>

voidmain

{ints=0,k;

for(k=7;k>1;k--)

{switch(k)

{case1:

case4:

case7:

s++:

break;

case2:

case3:

case6:break;

case0:

case5:

s+=2:

break;

}}

printf("s=%d",s);

}

A.s=3B.s=4C.s=5D.无输出结果

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

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

79.已定义: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

80.以下关于宏的叙述中正确的是()。

A.宏替换没有数据类型限制

B.宏定义必须位于源程序中所有语句之前

C.宏名必须用大写字母表示

D.宏调用比函数调用耗费时间

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:首先把b所指字符串中的字符按逆序存放,然后将str1所指字符串中的字符和Str2所指字符串中的字符,按排列的顺序交叉合并到str所指数组中,过长的剩余字符接在str所指数组的尾部。例如,当str1所指字符串中的内容为ABCDEFG,str2所指字符串中的内容为1234时,str所指数组中的内容应该为A483C2D1EFG;而当str1所指字符串中的内容为1234,str2所指字符串中的内容为ABCEDFG时,str所指数组中的内容应该为1G2F31:4DCBA。

请修改程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio。h>

#include<string.h>

voidproc(char*strl,char*str2,char*str){

inti,j;charch;

i=0;j=strleu(str2)-1;

//****found****

while(i>j)

{

ch=str2[i];str2[i]=str2[j];str2[j]=ch;

i++;j--;

}

while(*str1||*str2)

{

if(*str1){*str=*str1;str++;str1++;)

if(*str2){*str=*str2;str++;str2++;)

}

//****found****

*str=0:

}

voidmain

{

chars1[100],s2[100],t[200];

system("CLS");

printf("\nEnters1string:");

scanf("%s",sl);

printf("\nEnters2string:");

scanf("%s",s2);

proc(s1,s2,t);

printf("\nTheresultis:%s\n",t);

}

六、程序设计题(1题)82.使用VC++2010打开考生文件夹析下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写程序,实现矩阵(3行、3列)的转置(即行列互换)。例如,若输入下面的矩阵:100200300400500600700800900则程序输出:100400700200500800300600900注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:11#include<stdio.h>2#include<conio.h>3#include<stdlib.h>4voidfun(intarray[3][3])5{67}8voidmain()9{10FILE*wf;11inti,j;12intarray[3][3]={{100,200,300},{400,500,600},{700,800,900}};13system("CLS");14for(i=0;i<3;i++)15{for(j=0;j<3;j++)16printf("%7d",array[i][j]);17printf("\n");18}19fun(array);20printf("Convertedarray:\n");21for(i=0;i<3;i++)22{for(j=0;j<3;j++)23printf("%7d",array[i][j]);24printf("\n");25}26/*********found*********/27wf=fopen("out.datn,"w");28for(i=0;i<3;i++)29{for(j=0;j<3;j++)30fprintf(wf,"%7dn,array[i][j]);31fprintf(wf,"\n");32}33fclose(wf);34/*********found********/35}

参考答案

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

2.D

3.D解析:观察程序可知,a实际上就是数组a的首地址,所以“*(a+i)”表示的就是数组a中的第i个元素的值,进而,我们可以知道*(*(a+i))必然不是对a数组元素的正确引用。

4.C

5.B解析:本题主要考查结构体和联合内存使用的区别:结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立;联合所占用的内存空间为最长的成员所占用的空间。

6.C解析:本题中第一行代码对指针P进行了初始化,其指向数组a的第6个元素,在其后的操作中p的值也没有改变过,所以最后输出*p=*\u3000\u3000(p+0)\u3000\u3000=a\u3000[5]\u3000=6,而第二行代码中对q指向的值进行赋值,等价于*q=a[10]=11,所以输出结果*q为11。

7.C

8.C转义字符中,八进制的表示形式为\\ddd,但是八进制中不能包含数字8,所以C选项不合法。故本题答案为C选项。

9.C指针变量的值只能是存储单元地址,而不能是一个整数,故选项C错误。

10.B水平制表符中,'\t'表示的是横向跳若干格;选项B中,'\039'错误,'\039'是八进制形式表的字符,最大数为7,但其中出现'9',','是字符逗号;选项D中,'\n'表示的是换行。

11.C算术运算符“+”的优先级高于,且“-=”的结合方向为自右向左。所以表达式“x-=x+x”可以表示成“x=x-(x+x)=10-(10+10)=-10”。故本题答案为C选项。

12.BC语言是一种结构化程序设计语言。结构化程序设计是以模块化设计为中心的,有三种基本结构:顺序、选择和循环结构。各模块相互独立,因而可将原来较为复杂的问题化简为一系列简单模块并充分利用现有模块搭建新系统,提高程序的重用性和可维护性。

13.A由题意可知:指针变量p指向变量a,p的值是a的地址;指针变量q指向变量p,q的值是P的地址。q是指针变量,q指向p,*q是变量P,选项A错误;p是指针变量,p指向变量a,选项B正确;由于q指向P,因此*q指向a,选项C正确;*p和**q都代表变量a,选项D正确。故本题答案为A选项。

14.C后缀自增运算“t++”表示先运算,再自加。语句“if(t++<6)printf(“%d\\n”,t);elseprintf(“%d\\n”,t--);”中t的初值为6,则“t++<6”,条件为假,t自增至7,执行“printf(“%d\\n”,t--);”,此时t=7,输出t值为7,之后进行自减操作t=6。因此输出的结果为7。故本题答案为C选项。

15.DM(a+b,b+C,c+a)=a+b*b+c+c+a=1+2*2+3+3+1=12,注意x*y+z而不是(x)*(y)+z。

16.B在第1次外层for循环中,首先x++得到x=1。进入到内层for循环,只有循环j的值为奇数时,变量x的值才自加1,所以在内层for循环执行过程中,变量x的值自加两次,当退出内层for循环时,x=3,然后执行x++,得到x=4。在进入执行第2次外层for循环中,首先x++得到x=5。进入到内层for循环,只有循环变量j的值为奇数时,变量x的值才自加1,所以在内层for循环执行过程中,变量X的值自加1两次,当退出内层for循环时,x=7,然后执行x++,得到x=8,所以打印输出变量x的值为8。

17.C解析:C语言提供了许多输入函数,其中有:getchar(输入字符)、scanf(格式输入)和gets\u3000(输入字符串)等。题目要求输入的是字符串,所以可以排除getchar,而且要求输入的字符串中包含空格,而scanf函数默认将输入的空格字符作为分割符,所以空格不会被输入,故可排除scanf。getc的作用是从文件中输入一个字符,故也不可取。gets函数可以输入一整行作为一个字符串,其中也包括空格字符,故应该选择C。

18.C解析:对象的封装性是指从外面看只能看到对象的外部特性;而对象的内部,其处理能力的实行和内部状态对外是不可见的,是隐蔽的。

19.A解析:本题考核的知识点是scanf()函数的运用。seanf()函数有两个参数,第一个参数为输入格式字符串,第二个参数为输入变量地址列表,在scallf()语句中非格式字符可以作为输入时数据的间隔,输入时必须原样输入,在本题中输入格式串为%d,%d其中“,”为非格式字符,所以输入时必须原样输入。所以4个选项中选项A符合题意。

20.D

21.aaaaAAAAAaaaaAAAAA解析:函数strcat(sp,'AAAAA')的作用是将字符中“AAAAA”连接到字符串sp的末尾,并自动覆盖字符数组sp末尾的\'\\0\'。

22.颠倒一个字符串中的字符,就是首尾对应的元素两两交换。简单地可用两个游标变量i和j,i是前端元素的下标,j是后端元素的下标,交换以这两个变量值为下标的元素str[i]和str[j]。开始时,i的值为0,j的值为字符串末元素的下标(字符串长度减1)。每次交换后,i增1,j减1。继续交换的条件是str[i]位于str[j]的前面,即i<j字符串末元素的下标是它的长度减1,所以在第二个空框处应填入-1。程序为了交换str[i]和str[j],使用了变量k,该变量应在程序的变量定义部分中—起定义,所以在第—个空\r\n\r\n

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

24.22解析:本题考查的是基本赋值运算符和赋值表达式。表达式c=(b-=a-4)等价于c=(b=b-a+4)等价于c=b=2;表达式a(c%2+(b-1))等价于a=1+2-1=2;因此最后a的值为2。

25.1

26.11解析:直接插入排序是在已排好序的序列中用顺序查找法查找插入位置。第5个记录是15,15和23比较,就知道15应放在原23放的位置,23及其以后的记录后移。

27.9999解析:数组的下标是从0开始存放数据的,而不是1,当数组大小为n时,其下标从0开始,到n-1,所以本题的答案为99。

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

29.1111000011110000解析:按位异或运算的一个重要应用是让某个整型变量的二进制位取反,0变成1,而1变成0。这只要设计这样一个位串信息,让要变反的位为1,不要改变的位为0,用这个位串信息与整型变量按位加就能得到希望的结果。要使字节的高4位取反,低4位不变,则需要位串信息是11110000。

30.88解析:在一般系统中,一个float型数据在内存中占4个字节(32位),一个double型数据占8个字节。

31.

32.b[j][i]=a[i][j]b[j][i]=a[i][j]解析:本题考查二维数组的基本知识。它是要将一个二维数组,的行和列元素互换后存放到另一个二维数组b中,只要将数组a的行标和列标互换,然后赋给数组b即可。

33.pa[i]avg/n

34.*s-*t*s-*t解析:两字符串大小比较必须从它们的首字符开始,在对应字符相等情况下循环,直至不相等结束。相等时,若字符串已到了字符串的结束标记符,则两字符串相同,函数返回0值;如还有后继字符,则准备比较下一对字符。对应字符不相同,循环结束。循环结束时,就以两个当前字符的差返回,所以在空框处应填入*s-*t,保证在s>t时,返回正值,当s<t时,返回负值。

35.t*10t*10解析:程序中变量,用于存放表达式1+12+123+1234+12345之和,变量t用于存放其表达式的各项。当i=1时,要使t=1;i=2时,t=12;i=3时,t=123;依此类推。每一次的t值是用上一次的t乘以10再加上此次的i的值,所以本题答案为t*10。

36.无限无限解析:分析程序“while(s)”语句后面有一个“;”不能执行后面的语句,只是执行空语句,所以s=12保持不变,因此,没有条件限制的能循环无限次(即死循环)。

37.1020010200解析:本题考查的是混合运算。“(a/b<1)&&(a%b<1)”的运算顺序为:括号>算术运算符>关系运算符>逻辑运算符。其中a%b=10,a,b=0,所以a%b<1的值为0,a/b<1的值为1,故整个表达式的结果为0,所以输出的a,b,c的值为10200。

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

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

40.3131解析:设队列容量为m,如果:rear>front,则队列中元素个数为rear-front;如果rear<front,则队列中元素个数为m+(rear-front)。本题rear<front,则m=32+(2-3)=31。

41.C解析:软件调试技术包括强行排错法、回溯法和原因排除法。边界值分析、错误推断都是黑盒测试的方法。

42.A解析:按照自左向右的运算逻辑,选项A是先做x/y,然后再乘以x,显然与题意不符。

43.D解析:变量b的初值等于2,所以表达式b<<2表示b的值二进制左移两位,即扩大4倍,所以变量b的等于8。然后与a的值1进行异或运算,得9。

44.A解析:静态局部变量的生存期将一直延长到程序运行结束。故选项A正确;而全局变量的只有一种静态存储类别,故全局变量说明为static存储类,和没有说明为static存储类其生存期都是一直延长到程序运行结束,故选项B不正确;未赋初值的auto型变量的初值是随机的,未赋初值的static型变量的初值是0(故选项C和选项D不正确)。所以,4个选项中选项A符合题意。

45.D解析:本题考核的知识点是c语言数据类型.在C语言中没有逻辑类型,逻辑类型用整型来表示,故选项A和选项C不正确;C语言中没有集合类型,故选项B不正确。所以,D选项为所选。

46.C解析:本题考查if语句.当执行到第一个满足(i*i>=20)&&(i*i<=100)这个条件的i出现时,通过break语句跳出循环,执行下列的printf语句。

47.D解析:在C语言中,将一字符常量赋值给一个变量,是把此字符常量所对应的ASCII码值赋值给此字符变量,所以一个字符既可作为字符形式输出,也可以整数形式输出。

48.A解析:C语言规定,赋值号的右边可以是一个赋值表达式.因此选项C)、选项D)正确:在选项B)中,a++是一个自加1的表达式,a被重新赋值,因此它是一个合法的赋值表达式:选项A)中,a+d是一个算术表达式,虽然最后有一个分号,但这个表达式中没有赋值操作,因此它不是一条赋值语句。

49.D解析:性表的链式存储结构中,各数据结点的存储序号不连续,且各结点在存储空间中的位置关系与逻辑关系也不一致。性链表中,各数据元素之间的前后件关系是由各结点的指针域来指示的。所以,选项D正确。

50.C解析:a=p1==&m;等价于a=(P1==&m);将p1是否等于m的地址的逻辑值(0)赋给变量a;在b=(*p1)/(*p2)+7;语句中,(*P1)/(*p2)=0,因此将表达式的值7赋给变量b。

51.C解析:本题考查“逻辑或”运算的特例。本题中执行语句k=(n=b>a)||(m=a<b)时,首先计算表达式(n=b>a)||(m=a<b)的值,因b=2,a=1,所以b>a成立,即得n=1,故表达式(n=b>a)||(m=a<b)的值为真,不再执行表达式m=a<b,故执行完表达式k=(n=b2>a)||(m=a<b)后,n=1、m=0、k=1。

52.A解析:本题考查软件工程的程序设计风格。软件在编码阶段,力求程序语句简单、直接,不能只为了追求效率而使语句复杂化。除非对效率有特殊的要求,程序编写要做到清晰第一、效率第二。

人们在软件生存期要经常阅读程序,特别是在软件测试和维护阶段,编写程序的人和参与测试、维护的人都要阅读程序,因此要求程序的可读性要好。

正确的注释能够帮助读者理解程序,可为后续阶段进行测试和维护提供明确的指导。

所以注释不是可有可无的,而是必须的,它对于理解程序具有重要的作用。

I/O信息是与用户的使用直接相关的,因此它的格式应当尽可能方便用户的使用。在以交互式进行输入/输出时,要在屏幕上使用提示符明确提示输入的请求,指明可使用选项的种类和取值范围。经过上述分析可知,选项A是不符合良好程序设计风格要求的。

53.C解析:总体设计过程通常由两个主要阶段组成:系统设计,确定系统的具体实现方案;结构设计,确定软件,结构。为确定软件结构,首先需要从实现角度把复杂的功能进一步分解。分析员结合算法描述仔细分析数据流图中的每个处理,如果一个处理的功能过分复杂,必须把它的功能适当地分解成一系列比较简单的功能。

54.D

55.B解析:在内存中,字符数据以ASCII码存()储,它的存储形式与整数的存储形式类似。C语言中,字符型数据和整型数据之间可以通用,也可以对字符型数据进行算术运算,此时相当于对它们的ASCII码进行算术运算,在本题中,s++相当于s=s+1,即让s指向数组中的下一个元素。

56.C

57.C解析:本程序通过语句p=&a[1];将指针变量p指向存储单元a[1],使得p[0]的值为4,通过for循环,使y的值丸P[1]与p[2]之和,即y=6+8,所以输出的y值为14。

58.D结构化程序设计由迪杰斯特拉(E.W.dijkstra)在1969年提出,他主张“清晰第一,效率第二”,以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,这样使完成每一个模块的工作变得单纯而明确,为设计一些较大的软件打下了良好的基础。

由于模块相互独立,因此,在设计其中一个模块时,不会受到其他模块的牵连,因而可将原来较为复杂的问题化简为一系列简单模块的设计。模块的独立性还为扩充已有的系统、建立新系统带来了不少的方便,因为可以充分利用现有的模块作为积木式的扩展。

结构化程序设计的基本思想是采用“自顶向下,逐步求精”的程序设计方法和“单入口单出口”的控制结构。自顶向下、逐步求精的程序设计方法从问题本身开始,经过逐步细化,将解决问题的步骤分解为由基本程序结构模块组成的结构化程序框图;“单入口单出口”的思想认为一个复杂的程序,如果它仅是由顺序、选择和循环三种基本程序结构通过组合、嵌套构成,那么这个新构造的程序一定是一个单入口单出口的程序。据此就很容易编写出结构良好、易于调试的程序。

59.A

60.D

61.A

\n依据fun函数,可知其要实现的功能是将S中第(t+1)个元素以前的元素逆置赋给数组P。由于fun中函数定义了静态变量t=3,因此,main函数中调用函数fun(a,&x)时,就是要将数组a中前4个元素逆置赋给数x,最后输出x数组。

\n

62.D

63.C本题考查结构体数组的相关操作,dt为结构体数组,那么指针P指向了结构体数组的一个元素,所以P一>x为1,P一>Y为2,结果为2,3。选项C正确。

64.B表面上看,题目中是给出一个输出函数,实际上是考查printf函数输出表列为逗号表达式的情况。逗号表达式的一般形式为:表达式1,表达式2,……,表达式n,整个逗号表达式的值为表达式n的值。题目中的实际输出是++b的值,初始时,b=-1,先将b进行++运算,然后将结果输出,输出结果为0。

65.DA,B,C属于面向对象方法,D属于面向过程方法,故答案为D。

66.B统计1~9九个数中的奇数和,此题考察指向数组的指针。C语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此·(t+i)代表数组的第i+1个元素。程序运行的结果是l+3+5+7+9=25。

67.A将a数组里元素赋值给b数组,直到数组a的末尾,所以选择A)。

68.A

69.B数据库可以看成是长期存储在计算机内的、大量的、有结构的和可共享的数据集合。数据库可以被直观地理解为存放数据的仓库,只不过这个仓库在计算机的大容量存储器上,例如,硬盘就是一种最常见的计算机大容量存储设备。数据必须按一定的格式存放,因为它不仅需要存放,而且还要便于查找和使用。

数据库管理系统(DBMS)是位于用户与操作系统之间的完成数据管理的系统软件。它是用户与数据库的接口。应用程序一般要通过DBMS才能访问数据库。在数据库建立、运用和维护时对数据库进行统一控制。

数据库系统是指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。数据库是整个数据库系统最基本的成分。数据库管理系统是数据库系统的核心。数据库管理员是数据库系统的责任维护者,负责对数据库系统的整体维护。

综上所述,本题中只有B选项的描述是正确的。

70.D

71.D关系T中的元组是关系R中有面关系s中没有的元组的集合,即从关系R中除去与关系s中相同元组后得到的关系T。所以做的是差运算。

72.B宏定义又称为宏代换,格式为”#define标识符字符串”,其中的标识符就是所谓的符号常量,也称为”宏名”,宏的预处理工作也叫做宏展开,即将宏名替换为字符串。本题中把S(k+j)替换成4*(k+j)*k+j+1,计算结果为l43。

73.D解析:算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度一般是指执行这个算法所需要的内存空间。

74.C

75.D在最坏情况下,快速排序、冒泡排序和直接插入排序需要的比较次数都是n(n一1)/2,堆排序需要比较的次数为nlog2n。

76.D在程序设计中,对于软件设计中的模块设计要保证高内聚和低耦合,源程序要有文档说明,同时对程序中数据的说明要规范化。而goto语句破坏程序的结构,要尽量避免使用。所以选项D不正确。

77.B

\n运行程序,当k=7时switch(7)执行case:7,s++后s=1,break跳出。k--,k=7继续循环switch(6),执行case6;直接跳出循环,k--变成5,继续循环switch(5),执行case5后面的语句s+=2,也相当于s=s+2,此时s为3,break跳出,k变为4,继续循环,执行case4为空,继续执行case7;s++为4跳出循环,k--变为3,继续循环,执行case3,空语句往下执行case6,跳出,k--为2,继续循环,执行case2;空语句往下执行case3,空语句再执行case7,跳出循环,k--为1不符合循环,退出,此时S=4。

\n

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

79.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。

80.A宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头,因此B)选项中宏定义必须位于源程序中所有语句之前是错误的。宏名一般用大写,但不是必须用大写,因此c)选项错误。宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值),因此D)选项错误。

81.\n\t(1)错误:while(i>j)

\n正确:while(i<j)

\n(2)错误:*str=0;

\n正确:*str=\0;

\n【解析】由函数proc可知,变量i和j分别存放的是字符串str前面和后面第i个字符的位置,当i<j时,两个位置的字符交换。因此,“while(i>j)”应改为“while(i<j)”;交叉合并完成后,要为新的字符串添加结束符,因此,“*str=0;”应改为“*str=\0;”,\n

82.1voidfun(intarray[3][3])2{3inti,j,t;4for(i=0;i<3;i++)/*将上三角和下三角对换,实现行列互换*/5for(j=i+l;j<3;j++)6{t=array[i][j];7array[i][j]=array[j][i];8array[j][i]=t;9}10}要实现矩阵转置,即将上三角数组元素和下三角数组元素对换,本题通过数组元素交换方法,完成矩阵转置操作。因为对矩阵转置后仍然存回其本身,所以只能循环矩阵中的一本程序选择的是上三角)。控制上三角的方法是在内层循环中从i+1或i开始循环变量j。2021-2022年甘肃省庆阳市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.有以下程序:

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

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

2.

3.设有以下语句,其中不是对a数组元素的正确引用的是:_____(其中0≤i<10)inta[10]={0,1,3,4,5,6,7,8,9,},*p=a;

A.a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))

4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储()。

A.数据的处理方法B.数据元素的类型C.数据元素之间的关系D.数据的存储方法

5.下列程序的输出结果是()。#include<stdio.h>main(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}

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

6.有以下程序

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;

*q=*(p+5);

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

}

程序运行后的输出结果是A.运行后报错B.66C.611D.510

7.

8.以下不合法的字符常量是()。

A.‘\\’B.‘\”’C.‘\018’D.‘\xcc’

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

A.改变函数形参的值,不会改变对应实参的值

B.函数可以返回地址值

C.可以给指针变量赋一个整数作为地址值

D.当在程序的开头包含文件stdi0.h时,可以给指针变量赋NULL

10.下列选项中非法的字符常量是()。

A.'\t'B.'\039'C.','D.'\n'

11.若有定义“intx=10;”,则表达式“x-=x+x”的值为()。

A.0B.-20C.-10D.10

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

A.c语言是一种结构化程序设计语言

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

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

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

13.若有定义“inta=3,*p=&a,**q=&p;”,则以下叙述中错误的是()。

A.q是指针变量,*q就是变量a

B.p是指针变量,p指向变量a

C.q指向变量p,所以*q指向变量a

D.*p与**q都代表变量a

14.有以下程序:#include<stdio.h>main(){intt;scanf(“%d”,&t);if(t++<6)printf(“%d\n”,t);elseprintf(“%d\n”,t--);printf(“\n”);}执行时输入6并按<Enter>键,则输出结果是()。A.6B.8C.7D.5

15.以下程序的输出结果是()。#defineM(x,y,z)x*y+zmain(){inta=l,b=2,c=3;printf("%d\n",m(a+b.b+c,c+a));}A.19B.17C.15D.12

16.有下列程序:main{inti,j,x=0;for(i=0,i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++:}x++:}printf("x=%d\n",x);}程序执行后的输出结果是()。A.x=4B.x=8C.x=6D.x=12

17.当用户要求输入的字符串中含有空格时,应使用的输入函数是()。

A.scanfB.getcharC.getsD.getc

18.下列描述错误的是()。

A.继承分为多重继承和单继承

B.对象之间的通信靠传递消息来实现

C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征

D.类是具有共同属性、共同方法的对象的集合

19.有定义语句:“intx,y;”,若要通过“scanf("%d,%d,&x,&y);”语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是

A.1112<回车>B.11,12<回车>C.11,12<回车>D.11,<回车>12<回车>

20.以下程序的输出结果是().A.A.2222B.2468C.222D.246

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

chars[20]="aaaa",*sp=s;

puts(strcat(sp,"AAAAA"));

22.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。

#include<string.h>

main()

{infi,j,[13];charstr[]={"1234567"};

for(i=0,j=strlen(str)[14];i<j;i++,j--)

{k=str[i];str[i]=str[i];str[j]=k;}

printf("%s\n",str);}

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

24.若有定义:inta=10,b=8,c=4;然后顺序执行下列语句后,变量a中的值是()。c=(b-=(a-4));a=(c%2)+(b-1);

25.已知a=1,b=2,则表达式(a&B)&b||b的结果为()。

26.对一组记录{54,38,96,23,15,72,60,45,83}进行直接插入排序时,当插入第5个记录到有序表时,寻找插入位置需比较【】次。

27.若有如下定义,doublea[100];,则a数组元素的下标上限是【】。

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

29.设二进制数A是00101101,若想通过异或运算ab使A的高4位取反,低4位不变,则二进制数B应是【】。

30.在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4;一个double型数据在内存中所占的字节数为【】。

31.以下程序用来输出结构体变量ex所占存储单元的字节数,请填空。

structst

{charname[20];doublescore;};

main()

{structstex;

pfintf("exsize:%d\n",sizeof(______));}

32.下列程序将二维数组a的行和列元素互换后存放到另一个二维数组b中。请填空。

main()

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

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

{for(j=0;j<3;j++)

}

}

33.下面的程序通过函数average计算数组中各元素的平均值,请填空。

floatavetage(int*pa,intn)

{inti;

floatavg=0.0;

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

avg=avg+【】;avg=【】;

returnavg;

}

main()

{inti,a[5]={2,4,6,8,10,};

floatmean;

prinf("%mean=%f\n",mean);

}

34.函数my_cmp()的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s>t时返回正值,s<t时返回负值。请填空。

My_cmp(char*s,char*t)

{while(*s==*t)

{if(*s==′\0)return0;

++s;++t;

}return【】;

}

35.以下程序的功能是计算:s=1+12+123+1234+12345。请填空。

#include<stdio.h>

main()

intt=0.s=0,i:

for(i=1;i<=5;i++){t=i+【】;s=s+t;}

prinff("s=%d\n".s);}

36.下列语句能循环______次。

ints=12;

while(s);

--s;

37.以下程序运行后的输出结果是()。main(){inta,b,c;a=10;b=20;c=(a/b<1)&&(a%b<1);printf("%d%d%d\n",a,b,C);}

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

#include<stdio.h>

main()

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

if(x<y)

if(y<0)z=0;

elsez+=1;

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

}

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

40.在一个容量为32的循环队列中,若头指针front=3,尾指针rear=2,则该循环队列中共有______个元素。

三、1.选择题(20题)41.下列所述中,是软件调试技术的是()。

A.错误推断B.集成测试C.回溯法D.边界值分析

42.以下变量x、y、z均为double类型且已正确赋值,不能正确表示数学式子x/(y*2)的C语言表达式是______。

A.x/y*2B.x*(1/(y*z))C.x/y*1/zD.x/y/z

43.设有下列语句inta=1,b=2,c;c=a^(b《2);执行后,C的值为()。

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

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

A.周部变量说明为static存储类,其生存期将碍到延长

B.全局变量说明为static存储类,其作用域将被扩大

C.任何存储类的变量在未赋初值时,其值都是不确定的

D.形参可以使用的存储类说明符与局部变量完全相同

45.下列叙述中正确的是

A.C语言中既有逻辑类型也有集合类型

B.C语言中没有逻辑类型但有集合类型

C.C语言中有逻辑类型但没有集合类别

D.C语言中既没有逻辑类型也没有集合类型

46.下列程序的输出结果是()。#include<stdio.h>main(){inti;for(i=1;i<=10;i++){if((i*i>=20)&&(i*i<=100))break;}printf("%d\n",i*i);}

A.49B.36C.25D.64

47.已知在ASCⅡ代码中,字母A的序号为65,以下程序的输出结果是______。#include<stdio.h>main(){charc1='A',c2='Y';printf("%d,%d\n",c1,c2);}

A.65,90B.因输出格式不合法,输出错误信息C.A,YD.65,89

48.若a、b、c、d都是int型变量且都已经正确赋初值,则下列不正确的赋值语句是()。

A.a+d;B.a++;C.a=b=c=d=100;D.a=(b=3)+(d=5);

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

A.线性链表中的各元素在存储空间中的位置必须是连续的

B.线性链表中的表头元素一定存储在其他元素的前面

C.线性链表中的各元素在存储空间中的位置不一定是连续的,但表头元素一定存储在其他元素的前面

D.线性链表中的各元素在存储空间中的位置不一定是连续的,且各元素的存储顺序也是任意的

50.执行以下程序后,a,b的值分别是()。#include<stdio.h>main(){inta,b,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;b=(*p1)/(*p2)+7;printf("a=%d\n",a);printf("b=%d\n",b);}

A.-1,5B.1,6C.0,7D.4,10

51.有以下程序:main(){inta=1,b=2,m=0,n=0,k;k=(n=b>A)||(m=a<B);printf("%d,%d\n",k,m);}程序运行后的输出结果是

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

52.下列叙述中,不符合良好程序设计风格要求的是()

A.程序的效率第一,清晰第二B.程序的可读性好C.程序中要有必要的注释D.输入数据前要有提示信息

53.在结构化方法中,软件功能分解属于软件开发中的______阶段。

A.详细设计B.需求分析C.总体设计D.编程调试

54.有以下程序:main(){inti=1,j=2,k=3;if(i++==1&&(++j==3||k++==3))printf("%d%d%d\n",i,j,k);}程序运行后的输出结果是()。

A.123B.234C.223D.233

55.有以下程序voidss(char*s,chart){while(*s){if(*s==t),s=t-'a'+'A';s++;}}main(){charstr1[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",str1);}程序运行后的输出结果是

A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd

56.有以下程序:#include<stdio.h>voidfun(char*a,char*B){while(*a=='*')a++;while(*b=*A){b++;a++;}}main(){char*s="****a*b****",t[80];fun(s,t);puts(t);}程序的运行结果是()。

A.*****a*bB.a*bC.a*b****D.ab

57.有以下程序:#include<stdio.h>main(){inta[]={2,4,6,8,10},y=0,x,*p;p=&a[1];for(x=1;x<3;x++)y+=p[x];printf("%d\n",y);}程序运行后的输出结果是()。

A.10B.11C.14D.15

58.结构化程序设计主要强调的是

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

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

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

60.下列描述中,正确的一条是______。

A.关系表达式的值是一个逻辑值,即“真”或“假”,可以赋给一个逻辑变量

B.在C语言中,判断一个量是否为:真”时,以0代表“假”,以1代表“真”.

C.设a=3、b=4、c=5,则表达式!(x=a)&&(y=b)&&0的值为0

D.一个数组的各个数组元素可属于不同的数据类型

四、选择题(20题)61.

下列程序的运行结果是()。

#include<stdio.h>

voidfun(int*S,int*p)

{staticintt=3:

*p=s[t];

t--;

}

voidmain

{inta[]={2,3,4,5),k;

intx;

for(k=0,k<4,k++)

{fun(a,&x);

printf("%d,",x);

}

}

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

62.

63.有以下程序:

i

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

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

64.已知inta=1,b=-1;则语句printf("%d\n",(a--,++b));的输出结果是

A.-1B.0C.1D.语句错误

65.(5)下面概念中,不属于面向对象方法的是()

A.对象

B.继承

C.类

D.过程调用

66.有以下程序:

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

A.20B.25C.45D.36

67.下列函数的功能是()

68.

69.数据库、数据库系统

温馨提示

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

评论

0/150

提交评论