2021-2022年安徽省黄山市全国计算机等级考试C语言程序设计_第1页
2021-2022年安徽省黄山市全国计算机等级考试C语言程序设计_第2页
2021-2022年安徽省黄山市全国计算机等级考试C语言程序设计_第3页
2021-2022年安徽省黄山市全国计算机等级考试C语言程序设计_第4页
2021-2022年安徽省黄山市全国计算机等级考试C语言程序设计_第5页
已阅读5页,还剩108页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年安徽省黄山市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.

2.

3.有以下程序.#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);}程序运行后,若从键盘输入(从第l列开始)123<回车>45678<回车>程序运行后,若从键盘输入(从第l列开始)123<回车>45678<回车>则输出结果是()。A.1267B.1256C.1278D.1245

4.在下列运算符中,优先级最低的是()。A.||B.!=C.<D.+

5.若有语句“void*P=malloc(80);”,则以下叙述错误的是()。

A.可以通过指针P直接访问用malloc开辟的这块内存

B.p所指内存可以通过强制类型转换当作具有20个int型元素的一维数组来使用

C.p所指内存可以通过强制类型转换当作具有10个double型元素的一维数组来使用

D.P所指内存可以通过强制类型转换当作具有80个char型元素的一维数组来使用

6.结构化程序所要求的基本结构不包括()。

A.顺序结构B.GOT0跳转C.选择(分支)结构D.重复(循环)结构

7.设a、b和、c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式为()

A.'a'&&'b'

B.a<=b

C.a‖b+c&&b-c

D.!(a-b)&&(!c‖1)

8.在Internet中,域名服务器的主要功能是实现()的转换。

A.IP地址到域名(主机名字)B.域名到IP地址C.主机IP地址和路由器IP地址之间D.路由器IP地址之问

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

10.

11.

12.以下不属于C语言整数的是()。

A.12fB.25uC.-32D.+20L

13.下列排序算法中,()算法可能会出现下面情况:初始数据有序时,花费的时间反而最多。

A.堆排序B.冒泡排序C.快速排序D.希尔排序

14.下列合法的声明语句是()。

A.int_abc=50;

B.doubleint=3+5e2.5;

C.longdo=1L:

D.float3_asd=3e-3;

15.有以下程序

#include<stdio.h>

main()

{charch[3][5]={“AAAA”,”BBB”,”CC”};

printf(“%s\n”,ch[1];)

}

程序运行后的输出结果是()A.A.AAAA

B.CC

C.BBBCC

D.BBB

16.有以下程序:#include<stdio.h>voidfun(char*a,charB){while(*(a++)!=‘0’);while(*(a-1)<B)*(a--)=*(a-1);*(a--)=b;}main(){chars[8]=“pmfc”,r,c;c=getchar();fun(s,c);puts(s);}程序运行时输入k并按<Enter>键,则输出结果为()。

A.pmfkcB.pmfckC.kpmfcD.pmkfc

17.有以下程序:main{inti,j;for(j=10;j<11;j++){for(i=9;i<j;i++)if(!(j%i))break;if(i==j-1)printf("%d",j);}}输出结果是()。A.11B.10C.9D.1011

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

A.在同一源文件中,函数名必须唯一

B.凡是带有返回值的库函数,都不能通过加分号而作为独立的语句出现

C.不同函数中的形式参数可以同名

D.返回基本数据类型的库函数的调用,均可以出现在赋值号右边的表达式中

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

20.有如下程序段:

inta=14,b=15,x;

charc='A';

x=(a&&b)&&(c<'B'):

执行该程序后,x的值为()。A.A.trueB.falseC.0D.1

二、2.填空题(20题)21.下面函数的功能是:找出一维数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。请填空。

#include<stdlib.h>

#include<stdio.h>

voidfun(inta[],intn,int*max,int*d)

{intI;

*max=a[0];

*d=0;

for(I=0;【】;I++)

if(*max<【】)

{*max=a[I];*d=i;}}

main()

{inti,x[20],max,index,n=10;

randomize();

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

{x[i]=rand()%50;printf("%4d",x[i]);}

printf("\n");

fun(x,n,&max,&index);

printf("Max=%5d,Index=%4d\n",max,index);}

22.下列程序的功能是把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中。请填空。

#include"stdio.h"

FILE*fp;

{charch;

if((fp=fopen("bi.dat","w"))==NULL)exit(0);

while(______)fputc(ch,fp);

______;

}

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

24.实体之间的联系可以归结为一对一的联系,一对多的联系与多对多的联系。如果一个学校有许多学生,而一个学生只属于一个学校,则实体集学校与实体集学生之间的联系属于【】的联系。

25.若有如下程序:

main()

{inta[][2]={1,2,6,9,11},(*t)[2];

t=a;

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

}

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

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

#defineMAX(x,y)(x)>(y)?(x):(y)

main()

{

inta=5,b=2;c=3,d=3,t;

t+MAX(a+,b,c+D)*10;

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

}

27.下述程序的输出结果是【】。

#include<stdio.h>

intfun(intx)

{intp;

if(x==0||x==1)

return3;

else

p=x-fun(x-2);

returnp;}

voidmain()

{printf("\n%d",fun(9));}

28.软件定义时期主要包括______和需求分析两个阶段。

29.在算法正确的前提下,评价一个算法的两个标准是【】。

30.若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该是【】。

chara[10],b;scanf("a=%sb=%c",a,&b);

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

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

#include<stdio.h>

main()

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

if(x<y)

if(y<0)z+0;

elseZ+=1;

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

}

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

main()

{inti,sum;

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

sum+=i;

printf("%d",sum);

}

34.以下函数用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。请填空。

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{inti;

*k=0;

【】

if(s[*k]<s[i])*k=i;

return【】;}

main()

{inta[10]={876,675,896,101,301,401,980,431,451,777},k;

fun(a,10,&k);

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

35.当所有结点的权值都相等时,用这些结点构造的二叉排序树是【】。

36.下列表达式用于判断y是否为闰年。闰年的判断条件是:年号能被4整除但不能被100整除或年号能被400整除,请填空______。

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

#include<stdio.h>

main()

{inti,j;

for(i=0【】;i++)

{j=i*10+6;

if(【】)continue;

printf("%d",j);

}

}

38.数据结构分为逻辑结构与存储结构,线性链表属于【】。

39.表示""整数x的绝对值大于5""时值为""真""的C语言表达式是【】。

40.在面向对象方法中,类之间共享属性和方法的机制称为______。

三、1.选择题(20题)41.下面的程序执行后,文件test.t中内容是______。#include<stdio.h>voidfun(char*fname,char*st){FILE*myf;inti;myf=fopen(fname,"W");for(i=0;i<strlen(st);i++)foutc(st[i]myf;fclose(myf);}main(){fun("test.t","newworld");fun("test.t","hello,");}

A.hello,B.newworldhelloC.newworldD.hello,rid

42.以下程序的输出结果是______。main(){inta=3;printf("%d\n",(a+=a-=a*A));}

A.-6B.1C.2D.-12

43.设有下列二叉树:

对此二叉树中序遍历的结果为______。

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

44.有以下定义和语句:structstudents{intnum;charname[20];charc;struct{intgrade1;intgrade2;}s;};structstudentsw,*pw;*pw=w;下列赋值语句不正确的是()。

A.w.num=1002;B.w.grade1=85;C.pw->num=1002;D.w.s.grade2=85;

45.有程序段:intal,a2;Charcl,c2;scanf("%d%c%d%c",&a1,&cl,&a2,&c2);若要求a1、a2、c1、c2的值分别为10、20、A、B,正确的数据输入()

A.10A20B<CR>B.10A20B<CR>C.10A20B<CR>D.10A20B<CR>

46.设有表示学生选课的三张表,学生s(学号,姓名,性别,年龄,身份证号),课程c(课号,课名),选课SC(学号,课号,成绩),则表sc的关键字(键或码)为()。

A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩

47.已有定义:chara[]="xyz",b[]={'x','y','z'};,下列叙述中正确的是()。

A.数组a和b的长度相同B.a数组长度小于b数组长度C.a数组长度大于b数组长度D.上述三种说法都不对

48.在C语言中,函数返回值的类型最终取决于()。

A.函数定义时在函数首部所说明的函数类型

B.return语句中表达式值的类型

C.调用函数时主调函数所传递的实参类型

D.函数定义时形参的类型

49.以下关于函数的叙述中正确的是______。A.每个函数都可以被其他函数调用(包括main函数)

B.每个函数都可以被单独编译

C.每个函数都可以单独运行

D.在一个函数内部可以定义另一个函数

50.有下列程序段:structSt{intx;int*y;)*pt;inta[]={1,2),b[]={3,4);structstc[2]={10,a,20,b);pt=c;下列选项中表达式的值为11的是()。

A.*pt->yB.pt->xC.++pt->xD.(pt++)->x

51.若有说明inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是______。

A.i=*p;B.*p=*&j;C.i=&j;D.i=**p;

52.下列关于队列的叙述中正确的是______。A.在队列中只能插入数据B.在队列中只能删除数据C.队列是先进先出的线性表D.队列是先进后出的线性表

53.运行下面程序时,从键盘输入字母H,则输出结果是#include<stdio.h>main(){charch;ch=getchar();switch(ch){case'H':printf("Hello!\n");case'G':printf("Goodmorning!\n");default:printf("Bye_Bye!\n");}}

A.Hello!

B.Hello!GoodMoring!

C.Hello!Goodmorning!Bye_Bye!

D.Hello!Bye_Bye!

54.以下不正确的定义语句是

A.doublex[5]={2.0,4.0,6.0,8.0,10.0};

B.inty[5]={0,1,3,5,7,9};

C.charc1[]={'1','2','3','4','5'};

D.charc2[]={'\x10','\xa','\x8'};

55.以下程序的输出结果是______。fun(int*s,int*p){staticintt=3;*p=s[t];t--;}main(){intstr[]={1,2,3,4},i,m=0;for(i=0;i<4;i++){fun(str,&m);printf("%d",m);}printf("\n");}

A.0B.444412C.1234D.4321

56.某二叉树共有60个叶子结点与50个度为1的结点,则该二叉树中的总结点数为()。

A.148B.169C.182D.198

57.当变量c的值不为2、4、6时,值也为"真"的表达式是

A.(c==2)||(c==4)||(c==6)

B.(c>=2&&c<=6)||(c!=3)||(c!=5)

C.(c>=2&&c<=6)&&!(c%2)

D.(c>=2&&c<=6)&&(c%2!=1)

58.在说明语句:int*f();中,标识符f代表的是

A.一个用于指向整型数据的指针变量

B.一个用于指向一维数组的行指针

C.一个用于指向函数的指针变量

D.一个返回值为指针型的函数名

59.下列语句中,正确的是______。

A.staticcharstr[]="China";

B.staticcharstr[];str="China";

C.staticcharstr1[5],str2[]={"China"};strl=str2;

D.staticcharstr1[],str2[];str2={"China"};strcpy(str1,str2);

60.以下叙述中错误的是A.gets函数用于从终端读入字符串

B.getchar函数用于从磁盘文件读入字符

C.fputs函数用于把字符串输出到文件

D.fwrite函数用于以二进制形式输出数据到文件

四、选择题(20题)61.对于循环队列,下列叙述中正确的是()。

A.队头指针是固定不变的

B.队头指针一定大于队尾指针

C.队头指针一定小于队尾指针

D.队头指针可以大于队尾指针,也可以小于队尾指针

62.有以下程序:

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

A.*2*6B.}3*5一C.}5D.*7

63.有以下函数

fun(char*a,char*b)

{

while((*a!=’\0’)&&(*b!=’\0’)&&(*a==*b))

{

a++;b++;

}

return(*a-*b);

}

该函数的功能是

A.计算a和b所指字符串的长度之差

B.将b所指字符串连接到a所指字符串中

C.将b所指字符串连接到a所指字符串后面

D.比较a和b所指字符串的大小

64.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是()。

A.-3B.9C.-12D.6

65.

若希望下列的程序运行后输出25,程序空白处的正确选项是()。

main

{inti,j=50,a[]={7,4,10,5,8};

for()

j+=a[i];

printf("%d",j-40);

}

A.i=l;i<4;++i

B.i=1;i<3;++i

C.i=4;i>2;i--

D.i=2;i<4;++i

66.以下程序段中,不能正确给字符串赋值(编译时系统会提示错误)的是:()

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

A.对象

B.继承

C.类

D.过程调用

68.

69.设有以下定义和语句:

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

A.str数组长度和P所指向的字符串长度相等

B.*P与str[0]的值相等

C.str与P的类型完全相同

D.数组str中存放的内容和指针变量P中存放的内容相同

70.设有定义语句int(*f)(int);,则以下叙述正确的是()。

A.f是基类型为int的指针变量

B.f是指向函数的指针变量,该函数具有一个int类型的形参

C.f是指向int类型一维数组的指针变量

D.f是函数名,该函数的返回值是基类型为int类型的地址

71.排序的一个重要目的是为了对已排序数据进行

A.合并B.打印输出C.查找D.分类

72.

73.

74.下面叙述中,正确的是

A.C语言编译时不检查语法B.C语言的子程序有过程和函数两种

C.C语言的函数可以嵌套定义D.C语言的函数可以嵌套调用

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

main()

{inta,b;

scanf("%2d%3d",&a,&b);

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

}

A.a=12b=34

B.a=123b=45

C.a=12b=345

D.语句有错误

76.有以下程序:

在VC6.0平台上编译运行,程序运行后的输出结果是()。

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

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

78.

79.有以下程序:

main()

{inta[3][3],*p,i;

p=&a[1][1];

for(i=0;i<4;i++)p[i]=i+1;

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

}

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

A)3B)6

C)9D)2

80.有以下程序:

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

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

五、程序改错题(1题)81.下列给定程序中函数proc()的功能是:将长整型数中为偶数的数依次逆向取出,构成一个新数放在t中。高位在低位,低位在高位。例如,当s中的数为12345678时,则t中的数为8642。

请修改函数proc()中的错误,使它能得出正确的结果。

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

试题程序:

六、程序设计题(1题)82.程序定义了M×M的二维数组,并在主函数中自动赋值。请编写函数proc(inta[][M],intn),该函数的功能是使数组左下半三角元素中的值加上n。例如,a数组中的值为:

注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。

试题程序:

参考答案

1.A

2.C

3.Dscanf函数读取的是char型数据,所以回车时输入的换行符也是有效字符。于是cl,c2,c3,c4的内容分别是1,2,3,\n。

4.A

5.A题干中使用malloc函数分配了80个字节的内存单元,void指针p指向该内存单元。在C语言中,void*不能直接使用,必须利用强制类型转换将其转成所需的类型才能使用,选项A错误。int类型的元素占4个字节,所以可以将p指向的内存强制类型转换成具有20个int类型的一维数组来使用,同理,也可以强制类型转换成10个double类型的一维数组来使用,或强制类型转换成80个char类型的一维数组来使用,选项B、C、D正确。故本题答案为A选项。

6.B1966年Boehm和Jacopini证明了程序设计语言仅仅使用顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。

7.D

8.B在Internet中,把域名翻译为IP地址的软件称为域名系统DNS,运行域名系统的主机称为域名服务器。域名服务器的主要功能是实现入网主机名字和IP地址的转换。

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

10.C

11.A

12.AC语言中整型常量,从表示形式来看,有十进制、八进制或十六进制;从符号位来看,有有符号整数和无符号整数两类。选项A的“12f”是float类型的实数,不是整数;选项B的“25u”属于无符号整数;选项C的“-32”是十进制形式的有符号整数;选项D的“+20L”是十进制形式的长整数。故本题答案为A选项。

13.C

14.A解析:C语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。另外C语言规定了一些专用的标识符,它们有着固定的含义,不能更改。int就是表达变量类型的标识符,它不能再用做变量名和函数名,所以选项B)不正确。do是C语言的一个关键字,也不能再用做变量名和函数名,所以选项C)不正确。

15.Dch[1]即输出的为第二个字符串,即BBB。

16.Dmain函数定义一个字符数组s,使用字符串“pmfc”初始化;然后通过getchar读取一个字符k到字符变量c;再将字符串s和字符c传入fun函数。函数fun首先通过while循环遍历字符串s,直到指针a指向字符串结束标识‘\\0’后的一个字符,如下图所示。接着通过while循环逆序遍历字符串s,首先a-1的字符位‘\\0’,它的ASCII值为0,小于b(字符‘k’)的ASCII值107,那么将‘\\0’赋给下标为5的元素位置。接着继续向前遍历,同理,将‘c’(ASCII值为99)赋给下标为4的元素位置,将‘f’(ASCII值为102)赋给下标为3的元素位置。由于‘m’(ASCII值为109)大于b,因此循环结束,将b(字符‘k’)赋给下标为2的元素位置,此时str字符串如下。故本题答案为D选项。

17.B本题考多循环的使用,当j=10,i=9时,循环成立,第一个if条件为假,第二个if条件i==j-1成立,则输出j的值为10,接者执行i++后,i为10;当i为10,for循环不成立,退出内层循环,此时执行j++后,j为11,循环不成立,退出循环。

18.B在同一源文件中,函数名必须唯一,选项A正确。函数的调用有两种形式:①出现在表达式中,可以出现在赋值号右边的表达式中;②作为独立的语句完成某种操作。因此选项B错误,选项D正确。不同函数中的形参可以同名,它们的作用域都限制在各自的函数体内,选项C正确。故本题答案为B选项。

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

20.D在C语言中,当表达式成立时用l表示,不成立时用0表示,即x=(a&&b)&&(c<'B')=(14&&15)&&('A'<'B')=1&&1=1,故选择D选项。

21.I<na[I]I<n,a[I]解析:该程序直接使用形参max和d,由于它们都是指针变量,所以要引用它们所指向的变量时,要对它们进行指针运算,即*号运算。

22.(ch=getchar())!='@'fclose(fp)。(ch=getchar())!='@',fclose(fp)。解析:表达式z-=x<y?x++:++y相当于先执行++y,再执行z-=x<y?x:y,最后执行x++,其中z-=x<y?x:y等价于z=z-(x<y?x:y),由于x值为3,y值为3,x<y不成立,返回y的值,z-y的值为-2,赋给z。

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

24.一对多一对多解析:实体之间的联系可以归结为一对一、一对多与多对多。如果一个学校有许多学生,而一个教师只归属于一个学生,则实体集学校与实体集学生之间的联系属于一对多的联系。

25.929,2解析:本题开始定义了一个int型二维数组a,并赋以5个初值,系统使数组的最高维为3,并让a[0][0]=1,a[0][1]=2,a[1][0]=6,a[1][1]=9,a[2][0]=11,a[2][1]因为初值不够而初始化为0。然后定义一个行指针t指向数组a的首地址,因为表达式t[1]表示指向元素a[1][0]的int型指针,t[1]+1表示指向a[1][1]的int型指针,故*(t[1]+1)返回的是a[1][1]的值9。而*t表示指向元素a[0][0]的int型指针,故(*t)[1]返回的是a[0][1]的值2。所以正确答案应该为9,2。

26.77解析:宏替换后,表达式t=MAX(a+b,c+d)*10即变为:t=(a+b)>(c+d)?(a+b):(c+d)*10;由于(a+b)>(c+d)为真,所以t=(a+b),即为7。

27.77解析:本题考查的是函数的递归调用。x=0或x=1是递归的终止条件,然后用回代的方法从一个已知值推出下一个值,直到计算出最终结果。

28.可行性研究可行性研究解析:软件生命周期一般包括可行性研究与需求分析、设计、实现、测试、交付使用及维护等,还可以将软件生命周期分为三个阶段:①软件定义阶段:可行性研究和需求分析;②软件开发阶段:设计、实现和测试;③软件运行维护阶段:交付使用和维护。

29.时间复杂度和空间复杂度时间复杂度和空间复杂度

30.a=123b=5

31.11解析:本题考查两个知识点:一是x/y的值为整型,即为0;二是数1是double类型。

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

33.无定值无定值解析:for(i=1;i<7;i++)决定了循环次数为6次,每次执行的操作是sum+=i,但由于sum没有初始化,并不知道sum的初值是多少,所以结果无定值。

34.for(I=0;I<t;I++)0for(I=0;I<t;I++),0解析:本题中直接使用指针变量k,但在使用时要注意对k的指针运算,此外,一开始应使*k的值为数组中的某一下标值,即*k=0。

35.右子树(单支树)右子树(单支树)解析:二叉排序树对于任意新结点,若大于等于根结点,则在右子树上建立。

36.(y%4==0)&&(y%100!=0)||(y%400==0)(y%4==0)&&(y%100!=0)||(y%400==0)解析:考查逻辑表达。年号能被4整除(y%4==0)但不能被100整除(y%100!=0),两者是与的关系,年号能被400整除即y%400==0,与前两项是或的关系。

37.i<=9或i<10或9>=i或10>ij%3!=0或j%3i<=9或i<10或9>=i或10>i\r\nj%3!=0或j%3

38.存储结构

39.x>5||x<-5x<-5或x<-5||x>5x>5||x<-5,x<-5或x<-5||x>5解析:要使整数x的绝对值大于5,则x大于5或x小于5,用C语言表示即为:x>5||x<-5或者x<-5||x>5。故本题答案为;x>5||x<-5或者x<-5||x>5。

40.继承继承解析:在面向对象的程序设计方法中,某些属性和方法是可以共享的,由于类从父类中继承而来,这样提高了软件的可重用性。

41.A解析:C语言中文件有文本文件与二进制文件,对文件的使用前必须先打开,打开方式有只读、写入、读写等方式。

42.D解析:赋值运算符的结合方向是自右至左,所以表达式a+=a-=a*a先运算最右边的a*a得9,再运算a=a-9,即a=3-9,所以此时a的值由3变成了-6,最后运算a=a-+(-6),即a=(-6)+(-6)=-12。

43.B解析:所谓中序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。

44.B

45.A

46.C学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择C项。

47.A解析:字符数组a[]中用字符串常量“xyz”进行初始化,字符数组a[]的长度为字符的个数,所以其值为3,并不包括字符串结束标记'\\0';字符串数组b[]用3个字符'x'、'y'、'z'来初始化,所以其字符串的长度等于3。

48.A解析:在C语言中,应当在定义函数时指定函数值的类型。凡不加类型说明的函数,默认按整型处理。在定义函数时对函数值说明的类型一般应该和return语句中的表达式类型一致。如果函数值的类型和return语句中的表达式类型不一致,则以函数值的类型为准,由系统自动进行转换,即函数类型决定返回值的类型。

49.B解析:本题考查函数的一些概念.main()函数是一个程序的主函数,它由系统调用,所以选项A不正确。一个C语言源程序文件可以只包含一个函数,每个源文件都可以被单独编译成。obj文件,最后链接成可执行文件。因此每个函数都可以被单独编译,选项B正确。一个C程序必须从主函数main()开始运行,其他函数只能是直接或间接被main()函数调用才能得以运行,因此选项C错误。C语言不支持函数的嵌套定义,所有函数只能是全局函数,所以选项D错误。故应该选择B。

50.C解析:由题目的已知条件可知,pt指向结构体数组c[2]的第一元素c[0],所以pt->x=10,执行自加运算后为11。

51.B解析:指针是—种用来存放变量地址的特殊变量。本题中指针变量p用于存放整型变量i的地址,改变*p的值即为改变i的值。又因为“&”和“*”两个运算符的优先级相同,按自右而左的方向结合,所以*&j运算选进行&j运算,得j的地址,再进行*运算,取所得地址里面的值,故*&j与j等价。

52.C队列是指允许在一端进行插入、而在另一端进行删除的线性表,选项A和选项B错误。允许插入的一端称为队尾,允许删除的一端称为队头。在队列中,最先插入的元素将最先能够被删除,反之,最后插入的元素将最后才能被删除。所以,队列又称为“先进先出”或“后进后出”的线性表,它体现了“先来先服务”的原则,选项C正确,选项D错误。

53.C解析:本题主要对switch语句进行了考查。switch语句的执行过程为:进入switch结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case,以此作为入口,执行switch结构中后面的各语句,直到遇到break语句,则跳出switch语句,如果各case都不匹配时则执行default后面的语句。本题中ch为字符'H',所以case'H'条件中的语句将被执行,由于没有break语句,所以case'C'后的语句也被执行,由于同样的缺少break语句,所以default后的语句也被执行了。

54.B解析:在一维数组中要注意的是作为下标表达式的常量表达式的值必须是大于等于0,选项B)中定义有5个元素,但赋值时有6个元素,所以是错误的。

55.D解析:程序的功能是将字符数组str中的内容以反序输出。函数fun中t为静态变量,每一次调用函数fun时,t的值为上一次调用函数结束时的值。

56.B解析:本题考查二叉树的性质。叶子结点即度为0的结点,它总是比度为2的结点多一个,所以,具有60个叶子结点的二叉树有59个度为2的结点。总结点数等于个叶子结点加上59个度为2的结点再加上50个度为1的结点的和,一共为169个结点。

57.B解析:满足表达式(c>=2&&c<=6)的整型变量c的值是2,3,4,5,6。当变量c的值不为2,4,6时,其值只能为3或5,所以表达式c!=3和c!=5中至少有一个为真,即不论c为何值,选项B中的表达式都为'真'。

58.D解析:带回指针值的函数,其一般定义形式为:

类型标识符*函数名(参数表);

例如;int*f(x,y);

其中,f是函数名,调用它以后能得到一个指向整型数据的指针(地址),x,y是函数f的形参。在f的两侧分别为*运算符和()运算符,而()优先级高于*,因此f先与()结合,显然是函数形式。这个函数前面有一个*,表示此函数是指针型函数(函数值是指针)。前面的int表示返回的指针指向整型变量。

59.A

60.B其中B选项的getchar函数用于从终端读入字符。故本题答案为B选项。

61.D循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列结构,所以队头指针有时可能大于队尾指针,有时也可能小于队尾指针。

62.Ddo……while语句是先执行后判断,所以第一次先执行循环体,判断i%3==1的条件,由于i为5,所以余数为2,条件不成立,执行i++,i的值为6,判断while条件为真;第二次执行循环体,同第一次循环的执行过程一样,i的值变为7,判断while条件为真;第三次执行循环体,此时i%3==1,条件成立,再判断i%5==2也成立,打印*与i的值,即*7,然后执行break语句,跳出循环。所以选择D选项。

63.D字符串的比较规则是对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到’\\0’为止,若全部字符相同,则认为相等;若出现不相同的字符,则以第一个不相同的字符的比较结果为准,该函数就实现了此功能,如果两字符串相等,则返回0,否则返回第一个不等字符串的ASCII码的差值。

64.C解析:本题中首先定义一个整型变量a并给它赋初值为3,在表达式中,从右开始执行,即先执行“a-=a*a;”等价于a=a-a*a即a=3-3*3=-6,此时a的值为-6,接着执行“a+=a-;”相当于执行a=a+a即a=-6+(-6)=-12,此时a的值为-12。所以,4个选项中选项C符合题意。

65.D

\n要想使程序输出是25,则在printf中,j-40=25,j=65,而j初值是50,“j+=a[i];”也可写成i=j+a[i];,j=50+a[i]=65,当a[i]=15,条件满足,数组下标由0开始,当i=2时,指向元素10,i=3时,10+5=15,退出循环体,所以选项D正确。

\n

66.C字符串赋初值对于字符数组只能在定义时进行。因此选项A的赋初值是正确的。因为数组名是一个固定指针,不能再让其指向其他内存单元。选项C的赋初值是错误的。但选项D是用strcpy函数将字符串“abcdefg”复制到S数组的内存中,是正确的。选项B的tel=”abcdefg”,是利用字符串的长度决定数组长度(串长加1)并同时赋初值。对于字符指针,可以在定义时就指向别的内存单元,*s=t,也是正确的。所以只有C项不正确。

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

68.B

69.BP是字符串指针,所指向的字符串为”Program”,其长度为7,而数组str中元素的个数为25,因此选项A)和D)是错误的;p=str;后,指针P指向str的首地址,*P=str[0],因此选项B)是正确的;str是数组,不是指针变量,所以选项c)也是错误的。

70.B本题考查的是指向函数的指针。语句“int(*f)(int);”是对一个函数的声明,其中f是指向该函数的指针,该函数有一个整型的参数,函数返回值类型为整型。故答案选B)。

71.C排序是计算机程序中一种重要的操作,它的功能是将任意一个数据元素序列排成有序的数据元素序列;而查找是要在数据元素序列中找到一个与之相符的结果。不难看出,如果数据元素序列有序,则查找起来就方便很多。因此,排序的一个重要目的是为了对已排序数据进行查找。

72.C

73.C

74.D本题主要考查我们对C语言一些基础知识的掌握情况。下面分别分析本题的四个选项。

C语言程序在编译时的主要任务就是检查程序的语法是否符合规定,因此选项A的描述不正确。

一个程序一般都是从主函数开始运行,之后主程序调用的其他程序段叫子程序。由于C语言的程序段都是以函数形式存在的,所以除了主程序main()函数以外,其他程序中出现的子程序都是函数,而非过程。因此,选项B的描述不正确。

在C语言中,函数是不允许被定义在其他函数里面的,即嵌套定义的。因此,选项C的描述是错误的。

在C语言中,函数不能嵌套定义,但可以嵌套调用和递归调用。嵌套调用是指一个函数在执行过程中,调用了另一个函数,而被调函数在执行时,还可以调用其他函数。因此,本题正确的答案选D。

75.C严格按照格式进行输入和输出。%2d%3d,a是两位输入,b是三位,输出时亦是这个格式。

76.DC语言中利用sizeof()函数判断数据类型长度,在VC6.0平台中,整型int占有4个字节,doable型数据占有8个字节。

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

78.B

79.D

80.Cstrcpy:字符串拷贝函数;strlen:求字符串长度函数(注意:不包含字符串结束标识符‘、0’);strcat:字符串连接函数。执行完语句strcat(P,r);后,P数组中存储的元素为a,b,c,d,a,b,C,d,8;执行语句strcpy(P+strlen(q),q);得到的结果是将q所指向的字符串拷贝至P+strlen(q)开始的存储位置,因为strlen的值为3,即从P+3开始存储q中的元素。所以执行完strcpy(P+str|en(q),q)语句后,字符数组P[20]的存储元素为a,b,c,a,b,o;所以strlen(P)的结果为6。因此C选项正确。

81.(1)错误:if(d%2!=0)

正确:if(d%2==0)

(2)错误:t=d*s1+t;

正确:*t=d*s1+*t;

【解析】题目要求长整型数中每一位上为偶数的数依次逆向取出,构成一个新数放在t中。首先要判断每一位上的数是否为偶数,因此“if(d%2!=0)”应改为“if(d%2==0)”;变量t是一个指针变量,其是直接运算操作的内存地址,因此“t=d*sl+t;”应改为“*t=d*s1+*t;”。

82.

【解析】使数组左下半三角元素中的值加上n,首先要找出数组中下半三角元素。数组中下半三角元素的特点是,其列下标小于等于行下标。根据这个特点找出所有的下半三角元素再加上n放在原来的位置上。

2021-2022年安徽省黄山市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.

2.

3.有以下程序.#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);}程序运行后,若从键盘输入(从第l列开始)123<回车>45678<回车>程序运行后,若从键盘输入(从第l列开始)123<回车>45678<回车>则输出结果是()。A.1267B.1256C.1278D.1245

4.在下列运算符中,优先级最低的是()。A.||B.!=C.<D.+

5.若有语句“void*P=malloc(80);”,则以下叙述错误的是()。

A.可以通过指针P直接访问用malloc开辟的这块内存

B.p所指内存可以通过强制类型转换当作具有20个int型元素的一维数组来使用

C.p所指内存可以通过强制类型转换当作具有10个double型元素的一维数组来使用

D.P所指内存可以通过强制类型转换当作具有80个char型元素的一维数组来使用

6.结构化程序所要求的基本结构不包括()。

A.顺序结构B.GOT0跳转C.选择(分支)结构D.重复(循环)结构

7.设a、b和、c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式为()

A.'a'&&'b'

B.a<=b

C.a‖b+c&&b-c

D.!(a-b)&&(!c‖1)

8.在Internet中,域名服务器的主要功能是实现()的转换。

A.IP地址到域名(主机名字)B.域名到IP地址C.主机IP地址和路由器IP地址之间D.路由器IP地址之问

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

10.

11.

12.以下不属于C语言整数的是()。

A.12fB.25uC.-32D.+20L

13.下列排序算法中,()算法可能会出现下面情况:初始数据有序时,花费的时间反而最多。

A.堆排序B.冒泡排序C.快速排序D.希尔排序

14.下列合法的声明语句是()。

A.int_abc=50;

B.doubleint=3+5e2.5;

C.longdo=1L:

D.float3_asd=3e-3;

15.有以下程序

#include<stdio.h>

main()

{charch[3][5]={“AAAA”,”BBB”,”CC”};

printf(“%s\n”,ch[1];)

}

程序运行后的输出结果是()A.A.AAAA

B.CC

C.BBBCC

D.BBB

16.有以下程序:#include<stdio.h>voidfun(char*a,charB){while(*(a++)!=‘0’);while(*(a-1)<B)*(a--)=*(a-1);*(a--)=b;}main(){chars[8]=“pmfc”,r,c;c=getchar();fun(s,c);puts(s);}程序运行时输入k并按<Enter>键,则输出结果为()。

A.pmfkcB.pmfckC.kpmfcD.pmkfc

17.有以下程序:main{inti,j;for(j=10;j<11;j++){for(i=9;i<j;i++)if(!(j%i))break;if(i==j-1)printf("%d",j);}}输出结果是()。A.11B.10C.9D.1011

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

A.在同一源文件中,函数名必须唯一

B.凡是带有返回值的库函数,都不能通过加分号而作为独立的语句出现

C.不同函数中的形式参数可以同名

D.返回基本数据类型的库函数的调用,均可以出现在赋值号右边的表达式中

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

20.有如下程序段:

inta=14,b=15,x;

charc='A';

x=(a&&b)&&(c<'B'):

执行该程序后,x的值为()。A.A.trueB.falseC.0D.1

二、2.填空题(20题)21.下面函数的功能是:找出一维数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。请填空。

#include<stdlib.h>

#include<stdio.h>

voidfun(inta[],intn,int*max,int*d)

{intI;

*max=a[0];

*d=0;

for(I=0;【】;I++)

if(*max<【】)

{*max=a[I];*d=i;}}

main()

{inti,x[20],max,index,n=10;

randomize();

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

{x[i]=rand()%50;printf("%4d",x[i]);}

printf("\n");

fun(x,n,&max,&index);

printf("Max=%5d,Index=%4d\n",max,index);}

22.下列程序的功能是把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中。请填空。

#include"stdio.h"

FILE*fp;

{charch;

if((fp=fopen("bi.dat","w"))==NULL)exit(0);

while(______)fputc(ch,fp);

______;

}

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

24.实体之间的联系可以归结为一对一的联系,一对多的联系与多对多的联系。如果一个学校有许多学生,而一个学生只属于一个学校,则实体集学校与实体集学生之间的联系属于【】的联系。

25.若有如下程序:

main()

{inta[][2]={1,2,6,9,11},(*t)[2];

t=a;

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

}

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

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

#defineMAX(x,y)(x)>(y)?(x):(y)

main()

{

inta=5,b=2;c=3,d=3,t;

t+MAX(a+,b,c+D)*10;

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

}

27.下述程序的输出结果是【】。

#include<stdio.h>

intfun(intx)

{intp;

if(x==0||x==1)

return3;

else

p=x-fun(x-2);

returnp;}

voidmain()

{printf("\n%d",fun(9));}

28.软件定义时期主要包括______和需求分析两个阶段。

29.在算法正确的前提下,评价一个算法的两个标准是【】。

30.若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该是【】。

chara[10],b;scanf("a=%sb=%c",a,&b);

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

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

#include<stdio.h>

main()

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

if(x<y)

if(y<0)z+0;

elseZ+=1;

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

}

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

main()

{inti,sum;

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

sum+=i;

printf("%d",sum);

}

34.以下函数用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。请填空。

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{inti;

*k=0;

【】

if(s[*k]<s[i])*k=i;

return【】;}

main()

{inta[10]={876,675,896,101,301,401,980,431,451,777},k;

fun(a,10,&k);

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

35.当所有结点的权值都相等时,用这些结点构造的二叉排序树是【】。

36.下列表达式用于判断y是否为闰年。闰年的判断条件是:年号能被4整除但不能被100整除或年号能被400整除,请填空______。

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

#include<stdio.h>

main()

{inti,j;

for(i=0【】;i++)

{j=i*10+6;

if(【】)continue;

printf("%d",j);

}

}

38.数据结构分为逻辑结构与存储结构,线性链表属于【】。

39.表示""整数x的绝对值大于5""时值为""真""的C语言表达式是【】。

40.在面向对象方法中,类之间共享属性和方法的机制称为______。

三、1.选择题(20题)41.下面的程序执行后,文件test.t中内容是______。#include<stdio.h>voidfun(char*fname,char*st){FILE*myf;inti;myf=fopen(fname,"W");for(i=0;i<strlen(st);i++)foutc(st[i]myf;fclose(myf);}main(){fun("test.t","newworld");fun("test.t","hello,");}

A.hello,B.newworldhelloC.newworldD.hello,rid

42.以下程序的输出结果是______。main(){inta=3;printf("%d\n",(a+=a-=a*A));}

A.-6B.1C.2D.-12

43.设有下列二叉树:

对此二叉树中序遍历的结果为______。

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

44.有以下定义和语句:structstudents{intnum;charname[20];charc;struct{intgrade1;intgrade2;}s;};structstudentsw,*pw;*pw=w;下列赋值语句不正确的是()。

A.w.num=1002;B.w.grade1=85;C.pw->num=1002;D.w.s.grade2=85;

45.有程序段:intal,a2;Charcl,c2;scanf("%d%c%d%c",&a1,&cl,&a2,&c2);若要求a1、a2、c1、c2的值分别为10、20、A、B,正确的数据输入()

A.10A20B<CR>B.10A20B<CR>C.10A20B<CR>D.10A20B<CR>

46.设有表示学生选课的三张表,学生s(学号,姓名,性别,年龄,身份证号),课程c(课号,课名),选课SC(学号,课号,成绩),则表sc的关键字(键或码)为()。

A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩

47.已有定义:chara[]="xyz",b[]={'x','y','z'};,下列叙述中正确的是()。

A.数组a和b的长度相同B.a数组长度小于b数组长度C.a数组长度大于b数组长度D.上述三种说法都不对

48.在C语言中,函数返回值的类型最终取决于()。

A.函数定义时在函数首部所说明的函数类型

B.return语句中表达式值的类型

C.调用函数时主调函数所传递的实参类型

D.函数定义时形参的类型

49.以下关于函数的叙述中正确的是______。A.每个函数都可以被其他函数调用(包括main函数)

B.每个函数都可以被单独编译

C.每个函数都可以单独运行

D.在一个函数内部可以定义另一个函数

50.有下列程序段:structSt{intx;int*y;)*pt;inta[]={1,2),b[]={3,4);structstc[2]={10,a,20,b);pt=c;下列选项中表达式的值为11的是()。

A.*pt->yB.pt->xC.++pt->xD.(pt++)->x

51.若有说明inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是______。

A.i=*p;B.*p=*&j;C.i=&j;D.i=**p;

52.下列关于队列的叙述中正确的是______。A.在队列中只能插入数据B.在队列中只能删除数据C.队列是先进先出的线性表D.队列是先进后出的线性表

53.运行下面程序时,从键盘输入字母H,则输出结果是#include<stdio.h>main(){charch;ch=getchar();switch(ch){case'H':printf("Hello!\n");case'G':printf("Goodmorning!\n");default:printf("Bye_Bye!\n");}}

A.Hello!

B.Hello!GoodMoring!

C.Hello!Goodmorning!Bye_Bye!

D.Hello!Bye_Bye!

54.以下不正确的定义语句是

A.doublex[5]={2.0,4.0,6.0,8.0,10.0};

B.inty[5]={0,1,3,5,7,9};

C.charc1[]={'1','2','3','4','5'};

D.charc2[]={'\x10','\xa','\x8'};

55.以下程序的输出结果是______。fun(int*s,int*p){staticintt=3;*p=s[t];t--;}main(){intstr[]={1,2,3,4},i,m=0;for(i=0;i<4;i++){fun(str,&m);printf("%d",m);}printf("\n");}

A.0B.444412C.1234D.4321

56.某二叉树共有60个叶子结点与50个度为1的结点,则该二叉树中的总结点数为()。

A.148B.169C.182D.198

57.当变量c的值不为2、4、6时,值也为"真"的表达式是

A.(c==2)||(c==4)||(c==6)

B.(c>=2&&c<=6)||(c!=3)||(c!=5)

C.(c>=2&&c<=6)&&!(c%2)

D.(c>=2&&c<=6)&&(c%2!=1)

58.在说明语句:int*f();中,标识符f代表的是

A.一个用于指向整型数据的指针变量

B.一个用于指向一维数组的行指针

C.一个用于指向函数的指针变量

D.一个返回值为指针型的函数名

59.下列语句中,正确的是______。

A.staticcharstr[]="China";

B.staticcharstr[];str="China";

C.staticcharstr1[5],str2[]={"China"};strl=str2;

D.staticcharstr1[],str2[];str2={"China"};strcpy(str1,str2);

60.以下叙述中错误的是A.gets函数用于从终端读入字符串

B.getchar函数用于从磁盘文件读入字符

C.fputs函数用于把字符串输出到文件

D.fwrite函数用于以二进制形式输出数据到文件

四、选择题(20题)61.对于循环队列,下列叙述中正确的是()。

A.队头指针是固定不变的

B.队头指针一定大于队尾指针

C.队头指针一定小于队尾指针

D.队头指针可以大于队尾指针,也可以小于队尾指针

62.有以下程序:

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

A.*2*6B.}3*5一C.}5D.*7

63.有以下函数

fun(char*a,char*b)

{

while((*a!=’\0’)&&(*b!=’\0’)&&(*a==*b))

{

a++;b++;

}

return(*a-*b);

}

该函数的功能是

A.计算a和b所指字符串的长度之差

B.将b所指字符串连接到a所指字符串中

C.将b所指字符串连接到a所指字符串后面

D.比较a和b所指字符串的大小

64.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是()。

A.-3B.9C.-12D.6

65.

若希望下列的程序运行后输出25,程序空白处的正确选项是()。

main

{inti,j=50,a[]={7,4,10,5,8};

for()

j+=a[i];

printf("%d",j-40);

}

A.i=l;i<4;++i

B.i=1;i<3;++i

C.i=4;i>2;i--

D.i=2;i<4;++i

66.以下程序段中,不能正确给字符串赋值(编译时系统会提示错误)的是:()

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

A.对象

B.继承

C.类

D.过程调用

68.

69.设有以下定义和语句:

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

A.str数组长度和P所指向的字符串长度相等

B.*P与str[0]的值相等

C.str与P的类型完全相同

D.数组str中存放的内容和指针变量P中存放的内容相同

70.设有定义语句int(*f)(int);,则以下叙述正确的是()。

A.f是基类型为int的指针变量

B.f是指向函数的指针变量,该函数具有一个int类型的形参

C.f是指向int类型一维数组的指针变量

D.f是函数名,该函数的返回值是基类型为int类型的地址

71.排序的一个重要目的是为了对已排序数据进行

A.合并B.打印输出C.查找D.分类

72.

73.

74.下面叙述中,正确的是

A.C语言编译时不检查语法B.C语言的子程序有过程和函数两种

C.C语言的函数可以嵌套定义D.C语言的函数可以嵌套调用

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

main()

{inta,b;

scanf("%2d%3d",&a,&b);

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

}

A.a=12b=34

B.a=123b=45

C.a=12b=345

D.语句有错误

76.有以下程序:

在VC6.0平台上编译运行,程序运行后的输出结果是()。

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

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

78.

79.有以下程序:

main()

{inta[3][3],*p,i;

p=&a[1][1];

for(i=0;i<4;i++)p[i]=i+1;

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

}

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

A)3B)6

C)9D)2

80.有以下程序:

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

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

五、程序改错题(1题)81.下列给定程序中函数proc()的功能是:将长整型数中为偶数的数依次逆向取出,构成一个新数放在t中。高位在低位,低位在高位。例如,当s中的数为12345678时,则t中的数为8642。

请修改函数proc()中的错误,使它能得出正确的结果。

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

试题程序:

六、程序设计题(1题)82.程序定义了M×M的二维数组,并在主函数中自动赋值。请编写函数proc(inta[][M],intn),该函数的功能是使数组左下半三角元素中的值加上n。例如,a数组中的值为:

注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。

试题程序:

参考答案

1.A

2.C

3.Dscanf函数读取的是char型数据,所以回车时输入的换行符也是有效字符。于是cl,c2,c3,c4的内容分别是1,2,3,\n。

4.A

5.A题干中使用malloc函数分配了80个字节的内存单元,void指针p指向该内

温馨提示

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

评论

0/150

提交评论