2022-2023年四川省自贡市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2022-2023年四川省自贡市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2022-2023年四川省自贡市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2022-2023年四川省自贡市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2022-2023年四川省自贡市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

2022-2023年四川省自贡市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.数组A[5][6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,下标从1开始,则元素A[5][5]的地址是()。

A.1175B.1180C.1205D.1120

2.下列对于线性链表的描述中正确的是()

A.存储空间不一定是连续,且各元素的存储顺序是任意的

B.存储空间不一定是连续,且前件元素一定存储在后件元素的前面

C.存储空间必须连续,且前件元素一定存储在后件元素的前面

D.存储空间必须连续,且各元素的存储顺序是任意的

3.有以下程序段

#include<stdio.h>

voidfun(char*fname,char*st)

{FILE*myf;

inti;

myf=fopen(fname,"w");

for(i=0;i<strlen(st);i++)fputc(st[i],myf);

fclose(myf);

}

main()

{fun("test.t","newworld");

fun("test.t","hello,");}

程序执行后,文件test.t中的内容是A.A.hello,

B.newworldhello,

C.newworld

D.hello,rld

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

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

5.若有定义intw[3][5];,则以下不能正确表示该数组元素的表达式是A.*(*w+3)B.*(*w+1)[4]C.*(*(*w+1))D.*(&w[0][0]+1)

6.

7.有以下程序段charch;intk;ch='a';k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII十进制代码为97,则执行上述程序段后输出结果是()。A.因变量类型与格式描述符的类型不匹配输出无定值

B.输出项与格式描述符个数不符,输出为零值或不定值

C.a,97,12k=12

D.a,97,k=12

8.若有定义“intk=7,x=12;”,则以下表达式值为3的是()。

A.(x%=k)-(k%=5)B.x%=(k%=5)C.x%=(k-k%5)D.x%=k-k%5

9.有以下程序#include<stdio.h>main(){charcl,c2;c1=A+8-4c2=A+8-5;printf("%C,%d\n",cl,c2);}已知字母A的ASCIl码为65,程序运行后的输出结果是()。A.E,69B.D,69C.E,DD.输出无定值

10.以下程序的运行结果是#defineMAX(A,B)(A)>(B)?(A):(B)#definePRINT(Y)printf("Y=%d\t",Y)main(){inta=1,b=2,c=3,d=4,t;t=MAX(a+b,c+d);PRINT(t);}

A.Y=3B.存在语法错误C.Y=7D.Y=0

11.

12.有以下程序:#include<stdio.h>main(){inta=123456,b;while(a){b=a%10;a/=10;switch(b){default:printf(“%d”,b++);case1:case2:printf(“%d”,b++);break;case3:printf(“%d”,b++);break;case4:printf(“%d”,b++);}}}程序运行后的输出结果是()。

A.76654321B.12345667C.67564321D.654321

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

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

14.若需要0(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择排序方法是()。A.快速排序B.堆排序C.归并排序D.直接插入排序

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

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

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

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

16.下列不属于软件工程的3个要素的是______。

A.工具B.过程C.方法D.环境

17.有以下程序

#include<stdio.h>

voidfun(intP)

{intd=2;

P=d++;printf(“%d”,P);}

main()

{inta=1;

fun(A);prinff(“%.d\n”,A);}

程序运行后的输出结果是A.32B.12C.21D.22

18.下列不属于软件工程的3个要素的是

A.工具B.过程C.方法D.环境

19.有下列程序:main{intk=5,n=0;while(k>0){switch(k){dcfault:break;case1:n=n+k;case2:case3:n+=k;}k--;}printf("%d\n".n);}程序运行后的输出结果足()。A.0B.4C.6D.7

20.有以下程序:#include<stdio.h>main(){inta=1,b=2,c=3,d=4,r=0;if(a!=1)r=1;if(b==2)r=2;elseif(c!=3)r=3;elseif(d==4)r=4;printf(“%d\n”,r);}程序运行后的输出结果是()。

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

二、2.填空题(20题)21.以下程序的输出结果是()。#definePR(ar)printf("ar=%d”,ar)main(){intj,a[]={1,8,3,7,6,13,17,15},*p=a+5;for(j=3;j;j--)switch(j){case1:case2:PR(*p++);break;case3:PR(*(--p));}}

22.用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间。

st=(char*)【】;

23.开发软件所需要的高成本和产品的低质量之间有着尖锐的矛盾,这种现象被人们称之为【】。

24.以下函数将b字符串连接到a字符串的后面,并返回a中新字符串的长度。

strcen(charaC),charb[])

{intnum=0,n=0;

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

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

return(num);

}

25.______是数据库应用的核心。

26.以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度。请填空。

FILE*myf;longf1;

myf=【】("test,t","rb");

fseek(myf,0,SEEK_END);f1=ftell(myf);

fclose(myf);

printf("%1d\n",f1);

27.定义inta=5,b;,则执行表达式b=++a*--a之后,变量b的值为【】。

28.设一棵完全二叉树共有700个结点,则在该二叉树中有【】个叶子结点。

29.对于长度为n的顺序存储的线性表,当随机插入和删除一个元素时,需平均移动元素的个数为【】。

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

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

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

}

31.fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这N个最大值中的最小的那个数作为函数值返回。请填空。

#include<stdio.h>

#defineN100

intfun(int(*a)[N])

{

introw,col,max,min;

for(row=0;row<N;row++

{

for(max=a[row][0],col=1;col<N;col++)

if(【】)max=a[row][col];

if(row==0)min=max;

elseif(【】)min=max;

}

returnmin;

}

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

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

d[j]=0;

33.关系模型的数据操作即是建立在关系上的数据操作,一般有【】、增加、删除和修改四种操作。

34.在深度为7的满二叉树中,度为2的结点个数为【】。

35.要求使下列程序输出5个整数,请填空。

for(i=0;i<=______;printf("%d\n",i+=2));

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

voiddelete(chars[],inti,intn)

{intj,k,length=0;

while(s[length])

【】;

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

while(k<length)

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

s[j]\'\0';

}

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

38.下面程序的功能:输出100以内能被3整除且个位数为6的所有整数,请填空。

#include<stdio.h>

main()

{inti,j;

for(i=0;i<10或i<=9;i++)

{j=i*10+6;

if(【】)continue;

printf("%d",j);

}

}

39.执行下面程序段后,k的值是【】。

r=1;n=203;k=1

do{k*=n%10*r;n/=10;r++;}while(n);

40.下列程序的运行结果是______。

main()

{inta=1,b=10;

do

{b-=a;a++;}while(b--<0);

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

}

三、1.选择题(20题)41.有下列二叉树,

对此二叉树前序遍历的结果为()。

A.ACFHIBEDGB.ABCDEFGHIC.ABDEGCFHID.ABCDEFHGI

42.以下程序运行后,输出结果是______。main(){char*d[]={"ab","cde"};printf("%x",d[1]);}

A.cdeB.字符c的AScII码值C.字符c的地址D.出错

43.下列程序的输出结果是______。main(){unsignedshorta=65536;intb;printf("%d\n",b:a);}

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

44.若有说明:inta[][4]={0,0};则下面不正确的叙述是()。

A.数组a的每个元素都可得到初值0

B.二维数组a的第一维大小为1

C.当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小

D.只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值

45.设有以下定义:strucksk{inta;floatb;}data;int*p;若要使p指向data中的a域,正确的赋值语句是()。

A.p=&a;B.p=data.a;C.p=&data.a;D.*p=data.a;

46.有如下程序:#include<stdio.h>main(){floatx=2.0,y;if(x<0.0)y=0.0;elseif(x<10.0)y=1.0/x;elsey=1.0;printf("%f\n",y);}该程序的输出结果是()。

A.0B.0.25C.0.5D.1

47.以下不能正确定义二维数组的选项是

A.inta[2][2]={{1},{2}};

B.inta[][2]={1,2,3,4};

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

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

48.以下选项中合法的用户标识符是A.longB._2TestC.3DmaxD.A.dat

49.以下运算符中优先级最高的运算符是______。

A.++B.?:C.!=D.&&

50.已知chara;intb;floate;doubled;则表达式a-b+c-d结果为()型。

A.doubleB.floatC.intD.char

51.有以下程序

#include<stdio.h>

main()

{charc1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar();c6=getchar();

putchar(c1);putchar(c2);

printf("%c%c\n",c5,c6);

}

程序运行后,若从键盘输入(从第1列开始)

123<回车>

45678<回车>

则输出结果是

A.1267B.1256C.1278D.1245

52.有以下程序main(){intx,y,z;x=y=1;z=X++,y++,++y;printf("%d,%d,%d\n",x,y,z);}程序运行后的输出结果是

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

53.以下程序输出的结果为______。main(){char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};char**p;inti;p=alpha;for(i+0;i<4;i++)printf("%s",p[i]);}

A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPD.AEIM

54.若要说明一个类型名STP,使得定义语句STP轧等价于char*s;,以下选项中正确的是()。

A.typedefSTPchar*s;

B.typedef*charSTP;

C.typedefSTP*char;

D.typedefchar*STP;

55.以下程序运行后,输出结果是______。#include<stdio.h>#definePT5.5#difineS(x)PT*x*xmain(){inta=1,b=2;printf("%4.1f/n",S(a+b));}

A.49.5B.9.5C.22D.45

56.有以下程序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.ABCDDEFEGDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd

57.下列函数定义中,会出现编译错误的是______。

A.max(intx,inty,int*z){*z=x>y?x:y;}z=x>y?x:y;

B.intmax(intx,y){intz;returnz;}

C.max(intx,inty){intz;z=x>y?x:y;return(z);}

D.intmax(intx,inty){returnx>y?x:y;}

58.排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的力法,称为______。

A.希尔排序B.冒泡排序C.插入排序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.字符‘0’的ASCⅡ码的十进制数为48,且数组的第0个元素在低位,则以下程序的输出结果是______。#include<stdio.h>main(){union{inti[2];longk;charc[4];}r,*s=&r;s->i[0]=0x39;s->i[1]=0x38;printf("%c\n",s->c[0]);}

A.39B.9C.38D.8

四、选择题(20题)61.某二叉树共有7个结点,其中叶子结点只有l个,则该二叉树的深度为(假设根结点在第1层)()。

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

62.有以下程序:

#include<stdio.h>

main()

{FILE*fp;inti,a[6]={1,2,3,4,5,6};

fp=fopen("d2.dat","w+");

for=(i=o;i<6;,i++)fpintf(fp,"%d\n",a[i]);

rewind(fp);

for(i=0;i%6;i++)fscanf(fp,"%d",&a[5-i]);

fclose(fp);

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

}

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

A.4,5,6,1,2,3,

B.1,2,3,3,2,1,

C.1,2,3,4,5,6,

D.6,5,4,3,2,1,

63.

64.C源程序中不能表示的数制是

A.十进制B.八进制

C.二进制D.十六进制

65.

66.有以下程序

main()

{inti=010,j=0X10;

pirntf("%d,%d\n",i,j);

}

该程序的输出结果是

A.10,10B.8,10

C.8,16D.10,16

67.有下列程序:

main

{inty=10;

do{y--;}while(--y);

printf("%d\n",--y);

)

当执行程序时,输出的结果是()。

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

68.假定已建立以下链表结构,且指针P和q已指向如图所示的结点:

则以下选项中可将q所指结点从链表中删除并释放该结点的语句组是()。

A.p一>next=q一>next;flee(q);

B.p=q一>next;free(q);

C.p=q;free(q);

D.(*p).next=(幸q).next;ffee(p);

69.有以下程序:

#include<stdio.h>

main()

{FILE*fp;charstr[10];

fp=fopen("myfile,dat","");

{puts("abe",ip);fclose(fp);

fp=fopen("myfile.dat","a*");

fprintf(fp,"%d",28);

rewind(fp);

fscanf(fp,"%S",str);puts(str);

fclose(fp);

}

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

A.abcB.28cC.abc28D.内类型不一致而出错

70.

71.

72.有以下程序段

#include"stdio.h"

main()

{intj,i,k=0;

for(j=50;j<=60;j++)

{if(!(k%10))printf("\n");

for(i=2;i<j;i++)if(!(j%i))

break;

if(i>=j-1)

{printf("%d",j);

k++;}

}

}

程序执行后输出的结果是

A.5359B.5953

C.3595D.9535

73.定义如下变量和数组:inti,x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句for(i=0;i<3;i++)printf("%d",x[i][2-i]);的输出结果是()

A.159B.147C.357D.369

74.

75.

76.

77.具有3个结点的二叉树有

A.2种形态B.4种形态C.7种形态D.5种形态

78.有以下程序

#include<stdio.h>

voidfun(ints[])

{staticintj=0;

do

s[j]+=s[j+1];

while(++j<2);

}

main()

{

intk,a[10]={1,2,3,4,5};

for(k=1;k<3;k++)fun(a);

for(k=0;k<5;k++)

printf("%d",a[k]);

}

程序的运行结果是

A.34756B.23445

C.35745D.12345

79.

有以下程序段:

intx=3;

do

{printf("%d",x-=2);)

while(!(--x));

其输出结果是()。

A.1B.30C.1-2D.死循环

80.C语言用_______表示逻辑“真”值。

A.trueB.t或yC.非零整型值D.整型值0

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:根据整型参数m,计算如下公式的值:y=1/(100100)+1/(200200)+1/(300300)+…+1/(mm)例如,若m=4000,则应输出0.000162。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.编写函数fun,其功能是:求出1~1000之间能被7或11整除,但不能同时被7和11整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。

注意:部分原程序在文件PROGl.C中。

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

参考答案

1.D

2.A本题考查的是线性单链表、双向链表与循环链表的结构及其基本运算。\n在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。故本题答案为A。

3.D本题主要考查文件的操作。在本题的程序中,首先定义了一个无返回值的函数fun,该函数带有两个指针类型的形参,其中第一个形参指向需要被操作文件的文件名,而第二个形参指向被操作的字符串。在函数体中,首先定义一个文件指针,然后以只写的方式打开第一个形参所指向的文件,接着执行for循环,循环结束的条件是循环变量小于被操作字符串的长度,循环体中的程序fputc(st[i],myf);的功能是将字符串中的当前字符输入到文件中。由这些分析我们可以知道,函数fun的作用是将字符串的内容写入到文件中。

在主函数中,两次调用函数fun,当第一次调用时,写入文件的内容为newworld,然后第二次调用函数,此时打开文件,文件的指针重新回到开始,然后往文件中写内容“hello,”,由于此时文件中已经有内容“newworld”,则需要覆盖前面一部分的内容,因此,程序的最终输出结果是hello,rld,本题的正确答案选D。

4.C解析:栈和队列都是操作受限制的线性表,只允许在端点插入和删除。不同点是:栈只允许在表的一端进行插入和删除操作,而队列允许在表的一端进行插入操作,而在另一端进行删除操作。

5.C在C语言中,二维数组的名字表示的是二维数组的地址,表达式*(W+1)表示的是二维数组的第一行的第二个元素。在其前面再加上*(*(w+1))就是错误的表达式。

6.C

7.D解析:在用基本输出函数printf时,格式说明与输出项的个数应该相同。如果格式说明的个数少于输出项的个数,多余的输出项不予输出;如果格式说明个数多于输出项个数,则对于多余的格式项输出不定值或0。

8.A选项A中,表达式“x%=k”结果为5,表达式“k%=5”结果为2,5-2结果为3;选项B中,“k%=5”结果为2,“x%=2”结果为0;选项C中,“k%5”结果为2,“k-k%5”结果为5,“x%5”结果为2;选项D中,“k%5”结果为2,“k-k%5”结果为5,x%5结果为2。故本题答案为A选项。

9.A本值输出两个值,%c为输出一个字母,0/4d输出一个数字。“A”的ASCIl码为65,再加4之后为69,也就是字母E,所以本题A正确。

10.C解析:宏替换不像函数调用要进行参数值的计算、传递等,而只是简单按照原格式进行字符串的替换。注意:宏定义的命令格式。

11.D

12.C程序中变量a的初值为123456,while循环的终止条件是a为0。循环开始将a的最后一位数字赋给b,a除以10后(丢弃最后一位)重新赋给a。在循环过程中,变量a和b的取值分别为:124566、123455、12344、1233、122、11。循环体中,执行switch(b)语句,当b的数值不等于1、2、3、4时,首先执行default语句,输出b并将b自增1,再执行case1、case2语句,输出自增后的b值;当b的数值等于1、2、3、4时,只执行case语句,输出b的值。综上,当b为6、5时,分别输出67、56;当b为4、3、2、1时,分别输出4、3、2、1。最终程序输出结果为67564321。故本题答案为C选项。

13.B

14.C

15.D

16.D解析:本题考查了软件工程的基本概念。软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成;过程支持软件开发的各个环节的控制和管理。

17.C程序运行后,首先输出的是p的值,然后再输出a的值。p=d++,得到p的值为d的初始值2;a的值不变,仍为1。

18.D解析:本题考查了软件工程的基本概念。软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成;过程支持软件开发的各个环节的控制和管理。

19.D本题主要考查while循环语句和switchcase语句的使用方法。其执行步骤为:k=5时,跳出switch语句,然后k自减1;当k=4时,跳出switch语句,然后k自减1;当k=3时,n=13+k=0+3=3,跳出switch语句,然后k自减1;当k=2时n=n+k=3+2=5,跳出switch语句,然后k自减l;当k=1时,case1:n=n+k一5+1=6,没有break继续执行CaSe3;n=n+k=6+1=7,跳出switch语句,然后k自减1;当k=0时,退出循环,所以输出结果为7。

20.D第1个if语句是单独的一条语句,所以执行完第1个if语句后,r的值仍为初值0。第2个if语句与后续的两个elseif都是嵌套的,所以只会执行其中的一个语句,即“if(b==2)r=2;”这条语句。故本题答案为D选项。

21.ar=6ar=6ar=13ar=6ar=6ar=13解析:通过*p=a+5将指针P指向a[5],第1次循环,i=3时,switch(3),执行case3,*(-p)-a[4]=6,所以输出ar=6;第2次循环,j=2时,switch(2),执行case2,(*p++)是先引用a[4]的值6,输出ar=6,再将指针P移位指向a[5];第3次循环,j=1时,switch(1),执行case1,case1后没有break语句,接着执行case2,(*p++)是先引用a[5]的值13,输出ar=13,再将指针P移位指向a[6]。

22.malloc(11)或malloc(sizeof(char*)11)malloc(11)或malloc(sizeof(char*)11)解析:该题主要考查malloc函数的使用。一个字符在内存中占一个字节,因此malloc的参数为11。也可按指向字符指针的大小来分配。

23.软件危机软件危机

24.\0n++

25.数据库设计数据库设计

26.fopen

27.2525解析:#NAME?

28.350350解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。在根据完全二叉树的定义,在一棵完全二叉树中,最多有1个度为1的结点。因此,设一棵完全二叉树具有n个结点,若n为偶数,则在该二叉树中有n/2个叶子结点以及n/2-1个度为2的结点,还有1个是度为1的结点:若n为奇数,则在该二叉树中有[n/2]+1个叶子结点以及[n/2]个度为2的结点,没有度为1的结点。本题中,完全二叉树共有700个结点,700是偶数,所以,在该二叉树中有350个叶子结点以及349个度为2的结点,还有1个是度为1的结点。所以,本题的正确答案为350。

29.n/2n/2解析:删除一个元素,平均移动的元素个数为(n-1+n-2+…+0)/n=(n-1)/2;插入一个元素,平均移动元素个数为(n+n-1+n-2+…+1)/n=(n+1)/2;所以总体平均移动元素个数为n/2。

30.3535解析:函数swap(int*a,int*b)的功能是实现*a和*b中两个数据的交换,在主函数中调用swap(p,q)后,形参指针变量a和b分别指向i和j,在swap(int*a,int*b)执行完后,指针变量a和b分别指向j和i,而指针变量p,q所指向变量的值没有发生变化,所以输出结果为35。

31.a[row][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[row][col)max<min或min>max或max<=min或min>=maxa[row][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[row][col)\r\nmax<min或min>max或max<=min或min>=max解析:本题有两层for循环,主函数中定义了整型变量row、col、max和min,其中row用来存放外循环中的循环次数,col用来存放内循环中的次数,max记录每行中的最大值,min记录所有行中最大值中的最小值。在内循环中,首先给max赋初值为每行的第0列元素值,然后从第一列开始依次与max进行比较。如果大于max则将其值赋给max,当每一行循环结束,max记录了每一行的最大值。所以第一个空应该填a[row][col]>max或a[row][col]>=max。退出内循环,在第一次退出内循环时,将min赋初值为第0行的max,然后在每次退出内循环时,将min和每行的max比较,如果大于max,则将max值赋min,所以第二个空应该填max>min或mm>max,当退出外循环时,min为所有行中的最大值的最小值。

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

33.查询查询解析:关系模型的数据操作即是建立在关系上的数据操作,一般有查询、增加、删除和修改四种操作。数据查询是指用户可以查询关系数据库中的数据,它包括一个关系内的查询以及多个关系间的查询。数据删除的基本单位是一个关系内的元组,它的功能是将指定关系内的指定元组删除。数据增加仅对一个关系而言,在指定关系中插入一个或多个元组。数据修改是在一个关系中修改指定的元组和属性。

34.63或26-163或26-1解析:在满二叉树中,每层结点都是满的,即每层结点都具有最大结点数。深度为k的满二叉树,一共有2k-1个结点,其中包括度为2的结点和叶子结点。因此,深度为7的满二叉树,一共有27-1个结点,即127个结点。根据二叉树的另一条性质,对任意一棵二叉树,若终端结点(即叶子结点)数为n0,而其度数为2的结点数为n2,则n0=n2+1。设深度为7的满二叉树中,度为2的结点个数为x,则改树中叶子结点的个数为x+1。则应满足x+(x+1)=127,解该方程得到,x的值为63。结果上述分析可知,在深度为7的满二叉树中,度为2的结点个数为63。

35.88解析:本题考查基本的for循环条件,i+=2表示i每次递增2,从0开始,输出5个整数则需要的条件是i<=8。

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

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

38.j%3!=0或j%3j%3!=0或j%3解析:题目要求输出100以内能被3整除且个位数为6的所有整数,且通过for循环实现,循环体内j=i*10+6;这也就满足了个位数为6的条件,所以第1个空格填入i<10或i<=9;if语句中的continue说明如果条件不成立则不输出j,所以第2空填j%3!=0或j%3。

39.00解析:本题考查的是do厀hile循环。第一次执行循环体,因为k=1,r=1,n=20,所以k=1*20%10*1=0,n=20/10=2,r=2;第二次执行循环体,k=0*2%10*2=0,n=10/10=1,r=3;第三次执行循环体,k=0*1%10*3=0,n=1/10=0,r=4,所以k的值为0。

40.282,8解析:do…while语句的功能是:首先执行循环体语句,然后检测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环。这里程序初始时a=1,b=10,经过操作b-=a;a++后b=9,a=2,判断条件b--<O不成立,退出循环,但b的值被减1,因此结果为:a=2,b=8。

41.C解析:对二叉树的前序遍历是指先访问根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。

42.C解析:指针数组中的每一个元素都相当于一个指针变量。一维指针数组的定义形式为:类型名*数组名[数组长度],在本题main函数中定义指针数组d,它有两个元素,其初值分别是“ab”、“cde”的首地址。d[1]的值为“cde”的首地址。%x是指以十六进制数形式输出整数。

43.A

44.D解析:本题考查二维数组的基本概念。对于二维数组,只可以省略第一个括号中的常量表达式,而不能省略第二个括号中的常量表达式。数组中未赋初值的元素系统会自动对它们赋初值0。

45.C解析:p定义为指针变量。选项A中对结构体分量a的引用错误,应为data.a。选项B中data.a是取分量的值,它是一个整型数据,而p的值应为地址,所以不能将data.a赋值给p。&为取地址符,取分量data.a的地址赋值给p,是正确的赋值语句。*是间接访问运算符,选项D中的浯句是将分量data.a的值赋值给p所指存储单元,*p相当于一个变量,而不能实现使p指向data中的a域。

46.C解析:该题目考查对if-elseif结构的理解。由于x的值满足x<10.0的关系,所以程序执行y=1.0/x;语句,y的值等于0.5。用printf函数按%f格式输出时,结果为小数点后保留6位。

47.D解析:二维数组的定义和初始化在定义中如果对所有元素赋初值,其第一维的长度可以省略;二维数组初始化也可以只对每行或前若干行的前若干个元素赋初值;在二维数组定义时不能省略第二维的长度。

48.B解析:本题考查C语言标识符的命名.在C语言中,合法的标识符由字母,数字和下划线组成,并且第一个字符必须为字母或者下划线,long为C语言的保留字,不能作为用户标识符,故选顷A错误.3Draax开头的第一个为数字,而C语言规定,第一个字符必须为字母或者下划线,故选项C错误;A.dat中的字符“.”不符合C语言中用户标识符只能由字母、数字和下划线组成的规定,故选项D错误.只有迭项B正确。

49.A解析:四个运算符的优先级由高到低依次是:++,&&,?:,!=。

50.A解析:C语言中允许进行不同数据类型的混合运算,但在实际运算时,要先将不同类型的数据转化成同一类型再进行运算。类型转换的一般规则是:①运算中将所有char型转换成int型,float型转换成double型;②低级类型服从高级类型,并进行相应的转换,数据类型由低到高的顺序为:*char->int->unsigned->long->float->double;③赋值运算中最终结果的类型,以赋值运算符左边变量的类型为准,即赋值运算符右端值的类型向左边变量的类型看齐,并进行相应转换。

51.D解析:putchar(c1)输出1,putchar(c2)输出2,printf('%c%c\\n',c5,c6)输出45。

52.C解析:整型变量x、y的初值都为1,“x++,y++,++y”是一个逗号表达式,程序执行“z=x++,y++,++y”后,x的值为2,y的值为3,z取豆号表达式中第二个表达式的值,为1。

53.C解析:alpha[0]指向“ABCD”的首地址;alpha[1]指向“EFGH”的首地址;alpha[2]指向“IJKL”的首地址,依此类推。当执行p=alpha后,p指向指针数组alpha的首地址。for循环中输出了4个字符串。

54.D解析:指针类型的自定义的形式如下:typedef类型说明符*用户类型名。不难看出只有选项D是正确的定义形式。所以,D选项为所选。

55.B解析:C语言中宏替换只是字符替换,因此:S(a+b)=PT*a+b*a+b=5.5*1+2*1+2=9.5。

56.B

57.B解析:在C语言中,不可以在函数的参数声明列表中用一个类型名指定多个参数。故选项B是错误的。其正确的表示方式应为:

intmax(intx,inty){…}

intmax(:1

intx,y;

{…)

58.A解析:希尔排序法的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。

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.D根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总比度为2的结点多一个,因此本题中度为2的结点为l一1=0个,据此可以知道本题目中的二叉树的每一个结点都有一个分支,所以共7个结点共7层,即深度为7,选择D)。

62.D\n这个是对文件的操作,把数组的数写到文件里,然后再从文件里倒序读出。所以输出结果为6,5,4,3,2,1。

\n

63.B

64.C本题考查C语言基础知识,C语言中只能够表示十进制整数、八进制整数和十六进制整数。

65.D

66.C本题主要考查八进制数与十六进制数的十进制输出。做这类题目的关键是对数据进行数制转换。

在程序中,首先定义了两个变量i和j,其中i的初值为一个八进制数10,而j的初值为一个十六进制数10,然后输出它们的十进制数。

一般情况下,八进制数与十进制数的转换通过二进制来实现,即先将八进制数转换为二进制数,然后将二进制转换为十进制数。八进制数的一位对应二进制数的三位,那么将八进制数10转换成二进制应该为001000,再将这个值转换为十进制,即2的三次方,结果为8。

将十六进制数转换为十进制数也可以通过二进制来实现。一位十六进制数对应四位二进制数,转换后为00010000,再将这个值转换为十进制数,即2的四次方,结果为16。

因此本题程序最后输出的结果为8,16。

67.A

\n本题考查do-while循环。当--y是0(即y是o)时结束循环,输出--y,先将y的值减1再输出Y的值。

68.A本题考查删除链表中的结点操作,其方法是将要删除结点的上个结点的下个结点指向要删除结点的下个结点,然后释放该要删除结点,所以选项A正确。

69.C\n本题考查文件的操作,首先打开文件,进行写操作,把“abc”写入“myfile”文件,再打开“myfile.data'文件,输入28,在键盘上接收字符,输出并关闭文件。本题结果为abc28。

\n

70.D

71.A\r\n

72.A在本题中,程序首先定义了三个整型变量,并将变量k赋值为0,然后开始循环,循环开始时变量j的值为50,结束时变量j的值为60,每循环一次,变量j自加1,即循环10次。

当j=50,k=0时,“!(k%10)”为真,输出换行,即循环开始时,输出从新的一行开始,执行第二重循环,此时的i=2,“!(j%i)”为真,运行break语句,即跳出本层循环(从这里我们可以看出,j如果可以被i整除,则跳出本层循环),然后判断i是否不小于j-1,如果是,则输出此时j的值,否则k自加1。

从程序执行的过程来看,这个题目确实非常复杂,循环的次数太多,但经过对上面一次循环过程的分析,我们可以发现,其实这个程序的作用是找出50~60之间除1和本身外,不能被其他小于本身的数据整除的数,并从小到大输出这样的数。这样就能很容易地得到答案是5359。因此本题的正确答案是A。

73.C

74.D

75.B

76.C

77.D解析:因为二叉树有左、右子树之分,所以有3个结点的二叉树具有5种不同的形态。

78.C在本题中,首先定义了一个fun函数,函数中的形参是一个数组,该函数中首先定义了一个静态整型变量j并赋了初值,注意,静态变量的作用域是整个程序,而非该函数。从该函数的程序段不难看出该函数的作用是通过一个循环求形参数组中相邻两个元素(具体根据j确定)的和,并保存。

在主函数中,定义了一个数组并赋初值,然后用循环调用fun函数。

当k=1时,调用fun函数,此时刚开始j的值为0,那么fun函数分别计算数组a中的第一个元素与第二个元素的和与第二个元素与第三个元素的和,并分别保存为数组的第一个元素和第二个元素,结果分别为3和5。

当k=2时,调用fun函数,此时j的值为2,那么fun函数只计算数组a中的第三个元素与第四个元素的和,并保存为数组的第三个元素,结果为7。

循环结束,经过该层循环后,数组a中各元素的值分别为3、5、7、4、5,最后用循环输出结果为35745。因此,答案选C。

79.C

\n本题考查do-while循环,先执行d0输出的x的值为1,接着执行while语句,此时--x的值为0,x也为0,而非0为1,循环成立,接着执行do输出X值为-2,执行--x后,表达式为-2,而!(--x)为0,退出循环。

\n

80.C

81.(1)错误:proc(intm)

正确:doubleproc(intm)

(2)错误:for(i=100,i<=m,i+=100)

正确:for(i=100;i<=m;i+=100)

【解析】由主函数中的函数调用和函数proc()的返回值可知,函数proc()的返回值类型为double型数据。因此,“proc(intm)”应改为“doubleproc(iram)”;根据C语言的语法规则,for循环的3个条件之间为分号间隔,因此,“for(i=100。i<=m,i+=100)”应改为“for(i=100;i<=m;i+=100)”。

82.

【考点分析】

本题考查:if语句,用来判断能被7整除或者能被11整除,但是又不能同时被7和11整除的数,在这里充分理解”逻辑与”和”逻辑或”的区别;for循环语句的循环变量用来控制取值范围。

【解题思路】

该题需要运用循环判断结构来实现,其中循环语句比较容易,只要确定循环变量的范围即可,下面来看判断语句,题目要求找出能被7或11整除,但不能同时被7和11整除的所有整数。能同时被7和ll整除的整数一定能被77整除,且不能被

77整除的数不一定就是能被7或11整除的数,所以可得出程序中的if语句。注意:(i%7==0||i%11==0)两边必须要有小括号。2022-2023年四川省自贡市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.数组A[5][6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,下标从1开始,则元素A[5][5]的地址是()。

A.1175B.1180C.1205D.1120

2.下列对于线性链表的描述中正确的是()

A.存储空间不一定是连续,且各元素的存储顺序是任意的

B.存储空间不一定是连续,且前件元素一定存储在后件元素的前面

C.存储空间必须连续,且前件元素一定存储在后件元素的前面

D.存储空间必须连续,且各元素的存储顺序是任意的

3.有以下程序段

#include<stdio.h>

voidfun(char*fname,char*st)

{FILE*myf;

inti;

myf=fopen(fname,"w");

for(i=0;i<strlen(st);i++)fputc(st[i],myf);

fclose(myf);

}

main()

{fun("test.t","newworld");

fun("test.t","hello,");}

程序执行后,文件test.t中的内容是A.A.hello,

B.newworldhello,

C.newworld

D.hello,rld

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

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

5.若有定义intw[3][5];,则以下不能正确表示该数组元素的表达式是A.*(*w+3)B.*(*w+1)[4]C.*(*(*w+1))D.*(&w[0][0]+1)

6.

7.有以下程序段charch;intk;ch='a';k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII十进制代码为97,则执行上述程序段后输出结果是()。A.因变量类型与格式描述符的类型不匹配输出无定值

B.输出项与格式描述符个数不符,输出为零值或不定值

C.a,97,12k=12

D.a,97,k=12

8.若有定义“intk=7,x=12;”,则以下表达式值为3的是()。

A.(x%=k)-(k%=5)B.x%=(k%=5)C.x%=(k-k%5)D.x%=k-k%5

9.有以下程序#include<stdio.h>main(){charcl,c2;c1=A+8-4c2=A+8-5;printf("%C,%d\n",cl,c2);}已知字母A的ASCIl码为65,程序运行后的输出结果是()。A.E,69B.D,69C.E,DD.输出无定值

10.以下程序的运行结果是#defineMAX(A,B)(A)>(B)?(A):(B)#definePRINT(Y)printf("Y=%d\t",Y)main(){inta=1,b=2,c=3,d=4,t;t=MAX(a+b,c+d);PRINT(t);}

A.Y=3B.存在语法错误C.Y=7D.Y=0

11.

12.有以下程序:#include<stdio.h>main(){inta=123456,b;while(a){b=a%10;a/=10;switch(b){default:printf(“%d”,b++);case1:case2:printf(“%d”,b++);break;case3:printf(“%d”,b++);break;case4:printf(“%d”,b++);}}}程序运行后的输出结果是()。

A.76654321B.12345667C.67564321D.654321

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

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

14.若需要0(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择排序方法是()。A.快速排序B.堆排序C.归并排序D.直接插入排序

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

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

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

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

16.下列不属于软件工程的3个要素的是______。

A.工具B.过程C.方法D.环境

17.有以下程序

#include<stdio.h>

voidfun(intP)

{intd=2;

P=d++;printf(“%d”,P);}

main()

{inta=1;

fun(A);prinff(“%.d\n”,A);}

程序运行后的输出结果是A.32B.12C.21D.22

18.下列不属于软件工程的3个要素的是

A.工具B.过程C.方法D.环境

19.有下列程序:main{intk=5,n=0;while(k>0){switch(k){dcfault:break;case1:n=n+k;case2:case3:n+=k;}k--;}printf("%d\n".n);}程序运行后的输出结果足()。A.0B.4C.6D.7

20.有以下程序:#include<stdio.h>main(){inta=1,b=2,c=3,d=4,r=0;if(a!=1)r=1;if(b==2)r=2;elseif(c!=3)r=3;elseif(d==4)r=4;printf(“%d\n”,r);}程序运行后的输出结果是()。

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

二、2.填空题(20题)21.以下程序的输出结果是()。#definePR(ar)printf("ar=%d”,ar)main(){intj,a[]={1,8,3,7,6,13,17,15},*p=a+5;for(j=3;j;j--)switch(j){case1:case2:PR(*p++);break;case3:PR(*(--p));}}

22.用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间。

st=(char*)【】;

23.开发软件所需要的高成本和产品的低质量之间有着尖锐的矛盾,这种现象被人们称之为【】。

24.以下函数将b字符串连接到a字符串的后面,并返回a中新字符串的长度。

strcen(charaC),charb[])

{intnum=0,n=0;

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

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

return(num);

}

25.______是数据库应用的核心。

26.以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度。请填空。

FILE*myf;longf1;

myf=【】("test,t","rb");

fseek(myf,0,SEEK_END);f1=ftell(myf);

fclose(myf);

printf("%1d\n",f1);

27.定义inta=5,b;,则执行表达式b=++a*--a之后,变量b的值为【】。

28.设一棵完全二叉树共有700个结点,则在该二叉树中有【】个叶子结点。

29.对于长度为n的顺序存储的线性表,当随机插入和删除一个元素时,需平均移动元素的个数为【】。

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

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

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

}

31.fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这N个最大值中的最小的那个数作为函数值返回。请填空。

#include<stdio.h>

#defineN100

intfun(int(*a)[N])

{

introw,col,max,min;

for(row=0;row<N;row++

{

for(max=a[row][0],col=1;col<N;col++)

if(【】)max=a[row][col];

if(row==0)min=max;

elseif(【】)min=max;

}

returnmin;

}

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

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

d[j]=0;

33.关系模型的数据操作即是建立在关系上的数据操作,一般有【】、增加、删除和修改四种操作。

34.在深度为7的满二叉树中,度为2的结点个数为【】。

35.要求使下列程序输出5个整数,请填空。

for(i=0;i<=______;printf("%d\n",i+=2));

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

voiddelete(chars[],inti,intn)

{intj,k,length=0;

while(s[length])

【】;

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

while(k<length)

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

s[j]\'\0';

}

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

38.下面程序的功能:输出100以内能被3整除且个位数为6的所有整数,请填空。

#include<stdio.h>

main()

{inti,j;

for(i=0;i<10或i<=9;i++)

{j=i*10+6;

if(【】)continue;

printf("%d",j);

}

}

39.执行下面程序段后,k的值是【】。

r=1;n=203;k=1

do{k*=n%10*r;n/=10;r++;}while(n);

40.下列程序的运行结果是______。

main()

{inta=1,b=10;

do

{b-=a;a++;}while(b--<0);

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

}

三、1.选择题(20题)41.有下列二叉树,

对此二叉树前序遍历的结果为()。

A.ACFHIBEDGB.ABCDEFGHIC.ABDEGCFHID.ABCDEFHGI

42.以下程序运行后,输出结果是______。main(){char*d[]={"ab","cde"};printf("%x",d[1]);}

A.cdeB.字符c的AScII码值C.字符c的地址D.出错

43.下列程序的输出结果是______。main(){unsignedshorta=65536;intb;printf("%d\n",b:a);}

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

44.若有说明:inta[][4]={0,0};则下面不正确的叙述是()。

A.数组a的每个元素都可得到初值0

B.二维数组a的第一维大小为1

C.当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小

D.只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值

45.设有以下定义:strucksk{inta;floatb;}data;int*p;若要使p指向data中的a域,正确的赋值语句是()。

A.p=&a;B.p=data.a;C.p=&data.a;D.*p=data.a;

46.有如下程序:#include<stdio.h>main(){floatx=2.0,y;if(x<0.0)y=0.0;elseif(x<10.0)y=1.0/x;elsey=1.0;printf("%f\n",y);}该程序的输出结果是()。

A.0B.0.25C.0.5D.1

47.以下不能正确定义二维数组的选项是

A.inta[2][2]={{1},{2}};

B.inta[][2]={1,2,3,4};

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

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

48.以下选项中合法的用户标识符是A.longB._2TestC.3DmaxD.A.dat

49.以下运算符中优先级最高的运算符是______。

A.++B.?:C.!=D.&&

50.已知chara;intb;floate;doubled;则表达式a-b+c-d结果为()型。

A.doubleB.floatC.intD.char

51.有以下程序

#include<stdio.h>

main()

{charc1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar();c6=getchar();

putchar(c1);putchar(c2);

printf("%c%c\n",c5,c6);

}

程序运行后,若从键盘输入(从第1列开始)

123<回车>

45678<回车>

则输出结果是

A.1267B.1256C.1278D.1245

52.有以下程序main(){intx,y,z;x=y=1;z=X++,y++,++y;printf("%d,%d,%d\n",x,y,z);}程序运行后的输出结果是

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

53.以下程序输出的结果为______。main(){char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};char**p;inti;p=alpha;for(i+0;i<4;i++)printf("%s",p[i]);}

A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPD.AEIM

54.若要说明一个类型名STP,使得定义语句STP轧等价于char*s;,以下选项中正确的是()。

A.typedefSTPchar*s;

B.typedef*charSTP;

C.typedefSTP*char;

D.typedefchar*STP;

55.以下程序运行后,输出结果是______。#include<stdio.h>#definePT5.5#difineS(x)PT*x*xmain(){inta=1,b=2;printf("%4.1f/n",S(a+b));}

A.49.5B.9.5C.22D.45

56.有以下程序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.ABCDDEFEGDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd

57.下列函数定义中,会出现编译错误的是______。

A.max(intx,inty,int*z){*z=x>y?x:y;}z=x>y?x:y;

B.intmax(intx,y){intz;returnz;}

C.max(intx,inty){intz;z=x>y?x:y;return(z);}

D.intmax(intx,inty){returnx>y?x:y;}

58.排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的力法,称为______。

A.希尔排序B.冒泡排序C.插入排序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.字符‘0’的ASCⅡ码的十进制数为48,且数组的第0个元素在低位,则以下程序的输出结果是______。#include<stdio.h>main(){union{inti[2];longk;charc[4];}r,*s=&r;s->i[0]=0x39;s->i[1]=0x38;printf("%c\n",s->c[0]);}

A.39B.9C.38D.8

四、选择题(20题)61.某二叉树共有7个结点,其中叶子结点只有l个,则该二叉树的深度为(假设根结点在第1层)()。

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

62.有以下程序:

#include<stdio.h>

main()

{FILE*fp;inti,a[6]={1,2,3,

温馨提示

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

评论

0/150

提交评论