2021年河南省周口市全国计算机等级考试C语言程序设计_第1页
2021年河南省周口市全国计算机等级考试C语言程序设计_第2页
2021年河南省周口市全国计算机等级考试C语言程序设计_第3页
2021年河南省周口市全国计算机等级考试C语言程序设计_第4页
2021年河南省周口市全国计算机等级考试C语言程序设计_第5页
已阅读5页,还剩110页未读 继续免费阅读

下载本文档

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

文档简介

2021年河南省周口市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.当执行下面的程序时,如果输入ABC,则输出结果是()#include<stdio.h>#include<string.h>main(){charss[10]="12345";gets(ss);strcat(ss"6789");printf("%s\n",ss);}

A.ABC6789B.ABC67C.12345ABC6D.ABC456789

2.若a是数值类型,则逻辑表达式(a==1)II(a!=1)的值是()。

A.1B.0C.2D.不知道a的值,不能确定

3.有以下程序#include<stdio.h>main(){char*s=(“ABC);do{printf(“%d”,*s%10);s++;}while(*s);}注意,字母A的ASCII码值为65。程序运行后的输出结果是A.5670B.656667C.567D.ABC

4.设有定义的语句:“charc1=92,c2=92;”,则以下表达式中的值为零的是()。

A.c1^c2B.c1&c2C.~c2D.c1|c2

5.若有以下说明:chars1[]={"tree"},s2[]={"flower"};,则以下对数组元素或数组的输出语句中,正确的是()。

A.printf("%s%s",s1[5],s2[7]);

B.printf("%c%c",s1,s2);

C.puts(s1);puts(s2);

D.puts(s1,s2);

6.下列叙述中错误的是()。A.程序可以由多个程序文件组成

B.一个C语言程序只能实现一种算法

C.程序可以由一个或多个函数组成

D.一个C函数可以单独作为一一个c程序文件存在

7.有以下程序:#include<stdio.h>#include<string.h>main(){chara[]=“TEXT”,*b=“++”,c[3]=“1”;printf(“%d,%d,”,strlen(a),sizeof(a));printf(“%d,%d,”,strlen(b),sizeof(b));printf(“%d,%d,\n”,strlen(c),sizeof(c));}程序运行后的输出结果是()。A.4,5,2,4,1,3,B.4,4,2,2,1,1,C.5,5,3,3,2,2,D.4,4,2,2,1,3

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

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

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

9.在数据流图(DFD)中,带有名字的箭头表示

A.模块之间的调用关系B.程序的组成成分C.控制程序的执行顺序D.数据的流向

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

A.算法的时间复杂度是指算法在执行过程中基本运算的次数

B.算法的时间复杂度是指算法执行所需要的时间

C.算法的时间复杂度是指算法执行的速度

D.算法的复杂度是指算法控制结构的复杂程度

11.对于一个正常运行的C程序,下列叙述中正确的是()。A.A.程序的执行总是从main函数开始,在main函数结束

B.程序的执行总是从程序的第一个函数开始,在main函数结束

C.程序的执行总是从main函数开始,在程序的最后一个函数中结束

D.程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数中结束

12.链表不具有的特点是()。A.A.不必事先估计存储空间

B.可随机访问任意元素

C.插入、删除不需要移动元素

D.所需空间与线性表长度成正比

13.可以判断一个有向图中是否含有回路的方法为()。

A.广度优先遍历B.深度优先遍历C.拓扑排序D.求最短路径

14.C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是()。

A.预定义标识符(如库函数中的函数名)可用做用户标识符,但失去原有含义

B.用户标识符可以由字母和数字任意顺序组成

C.在标识符中大写字母和小写字母被认为是相同的字符

D.关键字可用做用户标识符,但失去原有含义

15.设有以下语句,其中不是对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))

16.

17.以下程序的运行结果是()。#include<stdio.h>main(){st,uctdate{intyear,month,day;}today;printf("%d\n",sizeof(structdate));}

A.6B.8C.10D.12

18.有下列程序:程序执行后的输出结果是()。A.Zhao,m,85,Zhao,m,85

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

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

D.Sun,f,90,Sun,f,90

19.有以下程序:#include<stdio.h>main(){charb[]=“happynewyear”,k;for(k=0;b[k];k++) printf(“%c”,b[k]-‘a’+‘A’);}程序运行后的输出结果是()。

A.hAppynewyeArB.HappynewyearC.HAPPYNEWYEARD.HaPPYNEWYEaR

20.对于如图所示二叉树采用中根遍历,正确的遍历序列应为()A.ABCDEFB.ABECDFC.CDFBEAD.CBDAEF

二、2.填空题(20题)21.若有定义inta[4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},则初始化后,a[1][1]得到的初值是______。

22.若定义#definePI3.14159,则执行完下列程序后输出结果是______。

#definePI3.14159;printf("PI=%f",PI);

23.若x、y和z均是int型变量,则执行下面表达式后的x值为【】。

x=(y=4)+(z=3)

24.对于图书管理数据库,将图书表中"人民邮电出版社"的图书的单价涨价5%。请对下面的SQL语句填空:UPDATE图书【】WHERE出版单位="人民邮电出版社"

25.栈的3种基本运算是:入栈、退栈和______。

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

typedefunionstudent

{charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{STUa[5];

Printf(“%d\n”,sizeof(a));

}

27.以下程序用于判断a、b、c能否构成三角形,若能,输出YES,否则输出NO。当给a、b、c输入三角形三条边长时,确定a、b、c能构成三角形的条件是需同时满足三个条件:a+b>c,a+c>b,b+c>a。请填空。

main()

{floata,b,c;

scanf("%f%f%f",&a,&b,&C);

if(())printf("YES\n");/*a、b、c能构成三角形*/

elseprintf("NO\n");/*a、b、c不能构成三角形*/

}

28.函数调用语句:“fgets(buf,n,fp);”从中指向的文件中读入n个字符放到buf字符数组中,函数返回值为______。

29.与表达式a+=b等价的另一书写形式是______。

30.以下程序的功能是输入任意整数给n后,输出n行由大写字母A开始构成的三角形字符阵列图形。例如,输入整数5时(注意:n不得大于10),程序运行结果如下:

ABCDE

FGHI

JKL

MN

O

请填空完成该程序。

main()

{inti,j,n;charch='A';

scanf("%d",&n);

if(n<11)

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

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

{printf("%2c",ch);

【】;

}

【】;

}

}

elseprintf("nistoolarge!\n")

printf("\n"0);

}

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

10ngfun5(intn)

{longs;

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

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

printf("%1d\n",x);}

32.设有以下定义

stnctss

{intinfo;sEruc5ss*link;}x.y,z;

且已建立如下图所示链表结构:

请写出删除结点y的赋值语句______。

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

main()

{intp=30;

printf("%dkn",(p/3>0?p/10:p%3));

}

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

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

36.通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为【】。

37.用树形结构表示实体之间联系的模型是()。

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

voidaverage();

main()

{floatscore[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,99}};

average(*score,12);

}

voidaverage(p,n)

intn;

float*p;

{inti;

floatsum=0;

for(i=0;i<n;i++,p++)sum+=(*p);

printf("%.2f\n",sum/n);

}

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

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

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

main()

{intX==1,y=0,a=0,b=0;

switch(x)

{case1:switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

}

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

}

三、1.选择题(20题)41.有以下程序:main(){intn=0,m=l,x=2;if(!n)x-=l:if(!m)x-=2;if(!x)x-=3;printf("%d\n",x);}执行后的输出结果是______。

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

42.有如下程序;

intfunc(inta,intb)

{return(a+b);}

main()

{intx=2,y=5,z=8,r;

r=func(func(x,y),z);printf("%\d\n",r);}

该程序的输出的结果是______。

A.12B.13C.14D.15

43.下列一维数组说明中,不正确的是()。

A.intN;

B.floata[]={1,6,6,0,2};scanf("%d",&N);intb[N];

C.#defineS10

D.inta[S+5];

44.下列程序的输出结果是()。

#include<stdio.h>

main()

{inta=2,b=3,p;

p=f(a,B);

pdntf("%d",p);

}

intf(a,B)

{intc;

if(a>B)c=1;

elseif(a==B)c=0;

elSec=-1;

return(C);

}

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

45.若要用函数fopen打开一个新的二进制文件,该文件要既能读也能写,则应以哪种方式打开文件()。

A.wbB.wb+C.rb+D.rb

46.结构化程序设计的三种结构是()。

A.顺序结构、选择结构、转移结构

B.分支结构、等价结构、循环结构

C.多分支结构、赋值结构、等价结构

D.顺序结构、选择结构、循环结构

47.在软件设计中,不属于过程设计工具的是()。

A.PDL(过程设计语言)B.PAD图C.N-S图D.DFD图

48.若有定义语句:floatx[6];则以下对x数组元素的正确引用形式是()。

A.x+2B.&x[6]C.*(x+2)D.*&x[6]

49.标有/$$$/的语句的执行次数是______。inty,i;for(i=0;i<20;i++){if(i%2==0)continue;y+=i;/$$$/;}

A.20B.19C.10D.9

50.下列叙述中正确的是A.数据库系统是一个独立的系统,不需要操作系统的支持

B.数据库设计是指设计数据库管理系统

C.数据库技术的根本目标是要解决数据共享的问题

D.数据库系统中,数据的物理结构必须与逻辑结构一致

51.下列程序的输出结果是()。point(char*pt);main(){charb[4]={'a','c','s','f},*pt=b;pt=point(pt);printf("%c\n",*pt);}point(char*p){p+=3;returnp;}

A.sB.cC.fD.a

52.若有定义:“inta[2][3];”,则对a数组的第i行第j列元素的正确引用为()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

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

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

54.将E-R图转换到关系模式时,实体与联系都可以表示成________。

A.属性B.关系C.键D.域

55.按条件f对关系R进行选择,其关系代数表达式是()。

A.R||R

B.

C.f(R)

D.f(R)

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

main()

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

for()

j+=a[i];

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

}

A.i=1;i<4;++iB.i=1;i<3;++iC.i=4;i>2;i--D.i:2;i<4;++i

57.以下程序的输出结果为()。inta,b,C;a=10;b=50;C=30;if(a<b)a=b;b=C;c=a;printf("a=%d,b=%d,c=%d",a,b,C);

A.a=50,b=30,c=30

B.a=10,b=30,c=10

C.a=50,b=30,c=10

D.a=50,b=30,c=50

58.下面函数intfunl(char*x){char*y=x;while(*y++);return(y-x-1);}的功能是_______。

A.求字符串的长度B.比较两个字符串的大小C.将字符串x复制到字符串yD.将字符串x连接到字符串y后面

59.有以下程序:voidchange(intk[]){k[0]=k[5];)main(){intx[10]={1,2,3,4,5,6,7,8,9,10},n=0;while(n<=4)(change(&x[n]);n++;}for(n=0;n<5;n++)printf("%d",x[n]);printf("\n");}程序运行后的输出结果是()。

A.678910B.13579C.12345D.62345

60.以下选项中,合法的一组C语苦数值常量是()。

A.28.5e-3-0xf

B.12OXa234.5

C.1774c1.5Oabc

D.0x8A10,0003.e5

四、选择题(20题)61.下列叙述中错误的是()。

A.一个C语言程序只能实现一种算法

B.c程序可以由多个程序文件组成

C.C程序可以由一个或多个函数组成

D.一个c函数可以单独作为一个C程序文件存在

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

A.对长度为n的有序链表进行查找,最坏情况下需要的比较次数为n

B.对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为n/2

C.对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为log2n

D.对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为nlog2n

63.

64.有以下程序:

#include<stdio.h>

main()

{inta,b,k,m,*pl,*p2;

k=1,m=8;

p1=&k,p2=&m;

a=/*pl-m;b=*p1+*p2+6;

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

}

编译时编译器提示错误信息,你认为出错的语句是()。

A.a=/*pl-m;

B.b=*p1+*p2+6;

C.k=1,m=8;

D.pl=&k,p2-&m;

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

A.zB.0C.元素Ch[5]地址D.字符y的地址

66.

67.若程序中定义了以下函数doublemyadd(doublea,doubleb){return(a+b);}并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是()A.doublemyadd(doublea,b);

B.doublemyadd(double,double);

C.doublemyadd(doubleb,doublea);

D.doublemyadd(doublex,doubley);

68.

69.以下错误的定义语句是()。

70.有以下程序程序运行后的输出结果是()。A.24B.28C.32D.36

71.若有定义intx,y;并已正确给变量赋值,则以下选项中与表达式(x—y)?(x++):(y++)中的条件表达式(x—Y)等价的是()。

A.(x—Y<01Ix—Y>O)B.(x—y<0)C.(x—Y>0)D.(x—Y==0)

72.有以下程序:

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

A.4B.34C.31D.32

73.设有定义:

则以下赋值语句中错误的是()。

A.data2=datal;

B.data2=(2,6.;

C.

D.

74.有以下程序

#include<stdio.h>

voidprt(int*x,int*y,int*z)

{printf("%d,%d,%d\n",++*x,++*y,*z++);}

main()

{inta=10,b=40,c=20;

prt(&a,&b,&c);

prt(&a,&b,&c);

}

程序的输出结果是

75.设有条件表达式:(EXP)?i++;j--,则以下表达式中(EXP)完全等价的是()。

A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)

76.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

77.

78.若有说明语句:double*p,a;则通过scanf语句正确给输入项读人数据的程序段是()。

A.*p=&a;scanf("%1f”,p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%",*p);

D.p=&a;scanf("%1f",p);

79.

80.有以下程序:

当执行程序时从键盘上输入HelloBeijing<;回车>;,则程序运行后的输出结果是()。

A.hellobajiIlg

B.HelloBeijing

C.HELLOBEIJING

D.hELLOBeijing

五、程序改错题(1题)81.下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第l项起,斐波拉契数列为:1,1,2,3,5,8,13,21,…

例如,若给n输入7,则该项的斐波拉契数值为l3。

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

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

试题程序:

#include<stdio.h>

longfun(intg)

{

//****found****

switch(g);

{

case0:return0;

//****found****

casel:case2:return1;

}

return(fun(g-1)+fun(g-2));

}

voidmain

{

longfib;intn;

printf("Inputn:");

scanf("%d",&n);

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

fib=fun(n);

printf("fib=%d\n\n",fib);

}

六、程序设计题(1题)82.请编写一个函数proc,它的功能是:求出1~m(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。

例如,若传给m的值为70,则程序输出:

7111421222833354244495556636670

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

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

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#defineN100

voidproc(intm,int*a,int*n)

{}

voidmain

{

intarr[N],n,k;

system("CLS");

proc(70,arr,&n);

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

if((k+1)%20==0)//每行输出20个数

{printf("%4d",arr[k]);

printf("\n");

}

else

printf("%4d",arr[k]);

printf("\n");

}

参考答案

1.A

2.A由于a==l和a!=1两者互斥,即总有一个为真,因此二者的或也必定为真。

3.C

4.A当值相同时按位异或,则为0,按位或与按位与时仍不变,负数也为非0。

5.C

6.B[解析]在一个C语言程序中可以进行多种算法的实现,对算法的个数没有规定,所以B)错误。

7.Asizeof是运算符,计算数组、指针、类型、对象、函数等所占的字节大小。strlen(*char)是函数,参数必须是字符型指针(char*)。该函数的功能是:返回字符串的长度,不包括字符串结束标识。“sizeof(a)”是求数组a所占空间的大小,包括字符串最后的‘\\0’。所以“sizeof(a)”=5,strlen遇到‘\\0’就结束,“strlen(a)”=4。“strier(b)”是指针指向的字符串长度,“sizeof(b)”是指针的大小。“strlen(c)”是字符串的长度,“sizeof(c)”是数组的长度。因此,输出结果是4,5,2,4,1,3,。故本题答案为A选项。

8.D

9.D解析:数据流相当于一条管道,并有一级数据(信息)流经它。在数据流图中,用标有名字的箭头表示数据流。数据流可以从加工流向加工,也可以从加工流向文件或从文件流向加工,并且可以从外部实体流向系统或从系统流向外部实体。

10.A算法的时间复杂度是指执行算法所需要的计算工作量,其计算工作量是用算法所执行的基本运算次数来度量的。本题答案为A选项。

11.A解析:一个C语言源程序无论包括了多少函数,总是从main函数开始执行,从main函数结束。

12.B链表采用的是链式存储结构,它的结点空间可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,插入、删除不需要移动数据元素。但是链式存储结构也有不足之处:每个结点中的指针域需额外占用存储空间,它是一种非随机存储结构。

13.C

14.A用户标识符不能以数字开头,C语言中标识符是区分大小写的,关键字不能用做用户标识符。

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

16.C

17.A解析:结构体变量的长度是其内部成员总长度之和,在本题中,structdate中包含year,month,day三个整型变量。通常一个整型变量占2个字节,因此,用sizeof求得该结构体变量的长度为6个字节。

18.D程序定义结构体类型STU,main函数定义结构体STU变量b,并将b的地址赋给指针变量a。调用函数f,传入a。在函数f中,定义了STU变量c,并将c的地址赋给d,再用d指向的值赋给a指向的地址,接着输出a指向的值,也就是c的值:Sun,f,90。由于函数f的调用通过指针参数a修改了变量b的值,因此a指向的值也就是b的值等价于c:Sun,f,90。本题答案为D选项。

19.C程序定义一个字符数组b,并使用字符串“happynewyeai”进行初始化。然后通过for循环,遍历字符数组b中的每个字符,再将b中的字符元素修改为大写字母。程序输出:HAPPYNEWYEAR。故本题答案为C选项。

20.D

21.00解析:二维数组可以看成是按矩阵形式排列的,题目中给二维数组赋初值是按行分段赋值的,a[4][4]可以分解为4个一维数组,其数组名分别为a[0]、a[1]、a[2]、a[3],这4个一维数组都有4个元素,a[0]的元素为a[0][0]、a[0][1]、a[0][2]、a[0][3]。

22.PI=3.14159PI=3.14159解析:本题先定义了一个宏名PI,以后在程序中出现PI都用3.14159替代,但是C语言规定:双引号中的宏名是不进行替换的。

23.77解析:x=(y=4)+(z=3)等价于y=4,z=3,x=y+z=4+3=7。

24.SET单价=单价*1.05SET单价=单价*1.05解析:更新表中元组的值,使用UPDATE命令,一次可以更新表中的一个或多个属性值。UPDATE短语之后指定更新数据所属的表,将新的属性值或表达式赋值给对应的属性名(SET单价=单价*1.05),并置于SET短语之后。要求对人民邮电出版社的图书涨5%,需要用WHERE短语对元组进行限制,即对符合条件的元组进行更新。

25.读栈顶元素读栈顶元素解析:栈的基本运算有3种:入栈、退栈和读取栈顶元素。其中,入栈是指在栈顶插入一个新的元素;退栈是指取出栈顶元素并赋值给一个变量;读栈顶元素是将栈顶元素赋值给一个指定的变量,不删除栈顶元素。

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

27.(a+b>C)&&(a+c>B)&&(b+c>A)(a+b>C)&&(a+c>B)&&(b+c>A)解析:本题主要考查运算符逻辑与“&&”的用法。

28.buf的首地址buf的首地址解析:考查fsets()函数的功能,f8ets()函数用来从文件中读入字符串。调用格式为:f8ets(buf,n,fp)。此处,fp是文件指针,buf是存放字符串的起始地址,n是一个int型变量。调用函数fsets()时,最多能读入n-1个字符,系统自动在最后加字符串结束标志,并以buf作为函数值返回。

29.a=a+ba=a+b解析:a+=b与a=a+b等价,作用是把变量a的值加b后再赋给变量a。

30.ch++;或++ch;或ch=ch+1;或ch=1+ch;或ch+=1;priintf("\n");或putchar('\n');ch++;或++ch;或ch=ch+1;或ch=1+ch;或ch+=1;\r\npriintf('\\n');或putchar(\'\\n\');解析:因为ch被初始化为\'A\',而内循环中有—条输出ch的语句,整个程序都没有一条改变ch值的语句。所以,第1空应该填ch++或其它类似的表达式,以使每次输出一个字母后ch都能变为下一个字母。内循环结束后,代表这一行已经输出完毕,此时即将开始下一行的输出,所以在第2空位置应该输出一个换行符,故应填入printf('\\n');或其他等价形式。

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

32.x.link=&z;或x.link=y.link;或x.1ink=x.1ink->link;或x.1ink=*(x.link).link;x.link=&z;或x.link=y.link;或x.1ink=x.1ink->link;或x.1ink=*(x.link).link;解析:本题考核的知识点是链表中结点的删除。要删除结点y,只需要让结点x的指针域指向y结点的指针域所指向的后续结点就可,因此只需把结点2的地址赋给x的指针域就可以了即让结点x的指针域指向结点2。而结点z得地址保存在节点y的指针域中,因此只需把节点y的指针城赋值给节点x的指针域即可。

33.33本试题中,先判断表达式p/3>0,该值为真,所以此表达式等于p/10的值3,故最后输出的值为3。

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

35.逻辑关系逻辑关系

36.软件生命周期软件生命周期解析:软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。

37.层次模型层次模型解析:层次模型是最早发展起来的数据库模型。层次模型的基本结构是树形结构。

38.82.25

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

40.2121解析:外层switch语句后面括号里的x的值为1,所以执行从case1:后面的语句开始执行,而case1:后面语句也为switch语句,这个switch语句后面括号里的y的值为0,所以从该switch语句里的case0:开始执行即执行a++,这时a的值变为1,执行完毕,遇到break语句,退出内层switch语句,又回到外层switch语句,继续执行case1:下面的语句即case2:执行完毕后,a自加1变为2,b自加1变1。所以最后输出的a和b的值为21。

41.B解析:因n=0,故!n为真,执行语句x-=1得x=x-1=2-1=1;条件!m和!x不成立,所以x=1,正确答案为1。

42.D解析:函数func的功能是计算两个形参之和,并将值返回主调函数。所以:r=func(func(x,y),z)=func(func(2,5),8)=func(7,8)=15。

43.A

44.A解析:本题考查ifelse语句。在intf(a,b)中:第一个if语句,先判断条件,发现a>b条件不成立,则执行与其配对的else语句:第二个if语句,先判断条件,发现a==b条件不成立,则执行与其配对的else语句,c=-1。

45.B解析:本题考查文件使用方式标识符。方式“wb”为输出打开一个二进制文件;方式“wb+”为读写建立一个新的二进制文件;方式“rb+”为读写打开一个二进制文件:方式“rb”为输入打开一个二进制文件。

46.D结构化程序设计以模块化设计为中心,采用自顶向下、逐步求精的程序设计方法。任何算法功能都可以通过由程序模块组成的三种基本程序结构的组合:顺序结构、选择结构和循环结构来实现。

47.D解析:PDL一种设计性语言,用于书写软件设计规约。它是软件设计中广泛使用的语言之一。N-S图是无线的流程图,是算法描述工具;PAD图是问题分析图,它用二维树状结构的图表示程序的控制流,将这种图转换为程序代码比较容易。此3类均是过程设计工具,数据流图(DataFunctionDiagram):又名数据功能图表,简称DFD,是采用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。

48.C解析:数组名x为该数组的首地址即第1个元素的地址,x+2表示数组第3个元素的值地址。x[6]表示数组中长度为6,数组元素的下标从0到5,没有x[6]。&为取地址符,取得的是元素的地址。*为间接访问运算符,其运算对象为地址或存放地址的指针变量。*(x+2)为取数组第3个元素的值,因此只有选项C正确引用了数据元素,选项C正确。

49.C解析:程序中标有/$$$/的语句y+=i在for循环中,由于该语句前面的条件语句使循环变量i在对2求余为0时就结束本次循环,直接跳过标有/$$$/的语句,因此该语句执行了10次。

50.C解析:数据库系统需要操作系统的支持,这一点必不可少,故选项A叙述不正确。选项B错误,数据库设计是指设计一个能满足用户要求,性能良好的数据库。选项D也不对,数据库应该具有物理独立性和逻辑独立性,改变其中的一个而不影响另一个。正确答案为选项C。

51.C解析:本题考查函数调用时的参数传递。函数point的参数为字符指针,当执行函数point时,刚开始指针p指向“a”,经过+3操作后,指针p指向“f”,所以最后的输出结果是f。

52.A解析:本题考查如何通过地址来引用数组元素。通过地址来引用数组元素的方法有下列5种:

①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。

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

54.B解析:关系数据库逻辑设计的主要工作是将\ue008E-R\ue009图转换成指定RDBMS中的关系模式。首先,从E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R图中属性也可以转换成关系的属性,实体集也可以转换成关系。

55.C解析:选项A表示关系R与关系R进行自然连接;选项B表示关系R与关系R按条件f做连接运算;选项C表示按条件f对关系R做选择运算;选项D表示在域f上对关系R做投影运算。

56.D解析:要想使程序输出是25,则i-40=25,j=65,而j初值是50,所以填入for循环中的语句,使引用的数组元素累加为65-50=15即可。

57.D解析:a的初值为10,b的初值为50,a<b为真,执行a=b,则a的值为50。继续执行b=c;和c=a;,则b=30,c=50。所以选项D正确。

58.A解析:本题的考查点是while()循环语句。本题首先要注意的是对*y++的运算,由于++和*为同—优先级别,且结合方向为自右向左,因此它相当于*(y++)。由于++在y的右侧是“后加”,因此先对y的原值进行*运算,然后使y的值改变。

59.A解析:本题主要考查数组元素的地址作为实参,当n=0时,把x[0]的地址传递给被调函数change(),即把形参k和实参x指向同一个存储单元,执行被调函数后k[0]=6,即x[0]=6;当n=1时,执行被调函数后x[1]=7,以此类推,最后得到x数组的值为6,7,8,9,10。

60.B

61.A答案A

解析:一个C程序可以有一个或多个程序文件,也可以有一个或多个函数,所以一个C语言程序可以实现多种算法。

62.C\n\tC。【解析】二分法查找只适用于顺序存储的有序表,对于长度为n的有序线性表,最坏情况只需比较log2n次。

63.A

64.A\n本题考查指针,pl=&k表示P指向k的地址,则*p=k,依次类推,在对指针进行赋值时没有错误。a=/*p+m赋值,在c语言中'/*'表示的注释,所以答案选择A。

\n

65.A表达式*(pc+5)先将指针向后移动5

66.A

67.A解析:本题考核的知识点是函数声明的应用。函数声明是对所用到的函数的特征进行必要的声明,编译系统以函数声明中给出的信息为依据,对调用表达式进行检测,以保证调用表达式与函数之间的参数正确传递。函数声明的一般格式为:

类型标识符函数名(类型标识符形参…);

这些信息就是函数定义中的第一行的内容。这里形参的名字是不重要的,重要的是类型标识符,函数声明中也可以不写形参名只写该形参的声明类型,但不能只写形参名而不写该形参的类型。本题中,选项A中doublemyadd(doublea,b),没写出形参b的类型,故选项A不正确。所以,4个选项中选项A符合题意。

68.C

69.A二维数组定义行数可以省略,列数不能省略,所以答案选择A)。

70.A第一次循环返回l2,第二次循环返回l2,累加结果为24。

71.A条件表达式:x=表达式17表达式2:表送式3的含义是:先求解表达式1,若为非0(真),则求解表达芪2,将表达式2的值赋给x。若表达式1的值为0(假),则求辞表达式3,将表达式3的值赋给x。在本题中与表达式1::x—y)等价的是(x—Y<0I|x—Y>O)。

72.C本题重点考察二维数组名作为实参进行参数传递,在主函数中调用了fun函数,实参为二维数组名a和两个整数4.0,这样对应定义fun函数首部有三种形式,这里采用了第一种形式——行指针,这样在fun函数对s[i][j]进行操作实际上就是对主函数中的a[i][j]进行操作,再分析fun函数的作用便可知,是求二维数组第0列中最大的那个元素。因此C选项正确。

73.B选项8需要强制转换数据类型,应该为

(structcomplex){2,6};。

74.B在本题中,程序首先定义了一个prt函数,该函数带有三个整型指针变量,分别为x,y,z,程序体是一条输出语句,由于运算符*和++的优先级一样,且都是自右向左结合的运算符,因此,++*x等价于++(*x),这个操作可描述为:选取值,再加1,最后输出相加后的结果,并将相加后的结果修改到实参中;*z++等价于*(z++),这个操作可描述为:先调用值,然后对其进行自加,最后通过取值运算符*取其值输出,这里还要注意,由于值自加后,没有对其地址进行操作,采用的是传值方式,此次修改并不能改变实参的结果值。

在主函数中,首先定义三个整型变量a、b、c,并分别赋值为10、40和20,然后第一次调用prt函数,用这三个变量的地址值作为实参,即分别使指针变量指向整型变量的值。根据上面对prt函数的分析可知,第一次调用输出的结果分别为11、41和20,第一次调用后实参a,b,c的值分别为11、41和20。然后第二次调用prt函数,同理,输出的结果为12、42和20。因此,本题的正确答案是B。

75.B解析:条件表达式的形式为:“表达式1?表达式2:表达式3”。其含义为:当“表达式1”的值为非零时,求出“表达式2”的值,此时“表达式2”的值就是整个条件表达式的值;当“表达式1”的值为零时,求出“表达式3”的值,此时“表达式3”的值就是整个条件表达式的值。对于本题来说,当表达式EXP为非0值时条件成立,即执行语句i++;当EXP等于0时,执行语句j--;这等同于条件表达式“(EXP!=0)?i++:i++;”。

76.D解析:中序遍历的递归算法定义:①遍历左子树;②访问根结点;③遍历右子树。前序遍历的递归算法定义:①访问根结点;②遍历左子树;③遍历右子树。后序遍历的递归算法定义:①遍历左子树;②遍历右子树;③访问根结点。根据前序遍历的结果可知,a是根结点。由中序遍历的结果dgbaechf可知,d、g、b是左子树的结点,e、c、h、f是右子树的结点。再由前序遍历的结果bdg可知,b是a左边子树的根,由cefh可知,c是a右边子树的根。再由中序遍历的结果dgb可知,d、g是b左边子树的结点,b右边子树无结点。再由前序遍历结果dg可知,d为b左子树的根,g是以d为根的子树的右结点。至此,a的左子树已完全弄清楚了。同样的道理,可以弄清楚以c为根的子树的结点位置。所以可知后序遍历的结果是D。

77.B

78.Ddouble*p,a定义了一个指向双精度型的指针变量P和双精度型变量a,p=&a表示将变量a的地址赋给指针变量p;scanf("%If",p)表示用键盘输入的数赋给指针变量P所指向的地址单元中,scanf函数要求在输入double型数据,格式控制符必须用%1f。否则,数据不能正确输入。所以选项D正确。

79.B

80.C主程序读取整个字符串存于s中,调用fun函数。字符指针c指向数组S。函数fun的功能是把指针C所指向的字符数组中的所有小写字符转换为大写。嚣cts函数可以把空格作为字符串的一部分输入,以回车作为输入结束。如果·c为小写字符,则}C={C一32(转大写)。因此C选项正确。

81.(1)错误:switch(g);

\n正确:switch(g)

\n(2)错误:casel:case2:returnl;

\n正确:casel;case2:returnl;

\n【解析】此题考查C语言的语法规则,switch(表达式)后不应该带有“;”,case语句常量后应该是“:”。

\nswitch语句的一般形式如下:

\nswitch(表达式){

\ncase常量表达式1:语句1;

\ncase常量表达式2:语句2;

\ncase常量表达式n:语句i;

\ndefault:语句n+1;

\n}

\n

82.\n\tvoidproc(intm,int*a,int*n)

\n{

\ninti,j=0;

\nfor(i=1;i<=m;i++)//进行m次循环

\nif(i%7==0||i%11==0)//能被7或11整除的所有整数

\na[j++]=i;//符合条件的数放在数组a中

\n*n=j;//返回这些数的个数

\n}

\n【解析】本题需要先判断1~m每一个整数能否被7或11整除,然后将符合条件的整数放在数组a中,最后将符合条件的数的个数通过形参n返回主函数。\n2021年河南省周口市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.当执行下面的程序时,如果输入ABC,则输出结果是()#include<stdio.h>#include<string.h>main(){charss[10]="12345";gets(ss);strcat(ss"6789");printf("%s\n",ss);}

A.ABC6789B.ABC67C.12345ABC6D.ABC456789

2.若a是数值类型,则逻辑表达式(a==1)II(a!=1)的值是()。

A.1B.0C.2D.不知道a的值,不能确定

3.有以下程序#include<stdio.h>main(){char*s=(“ABC);do{printf(“%d”,*s%10);s++;}while(*s);}注意,字母A的ASCII码值为65。程序运行后的输出结果是A.5670B.656667C.567D.ABC

4.设有定义的语句:“charc1=92,c2=92;”,则以下表达式中的值为零的是()。

A.c1^c2B.c1&c2C.~c2D.c1|c2

5.若有以下说明:chars1[]={"tree"},s2[]={"flower"};,则以下对数组元素或数组的输出语句中,正确的是()。

A.printf("%s%s",s1[5],s2[7]);

B.printf("%c%c",s1,s2);

C.puts(s1);puts(s2);

D.puts(s1,s2);

6.下列叙述中错误的是()。A.程序可以由多个程序文件组成

B.一个C语言程序只能实现一种算法

C.程序可以由一个或多个函数组成

D.一个C函数可以单独作为一一个c程序文件存在

7.有以下程序:#include<stdio.h>#include<string.h>main(){chara[]=“TEXT”,*b=“++”,c[3]=“1”;printf(“%d,%d,”,strlen(a),sizeof(a));printf(“%d,%d,”,strlen(b),sizeof(b));printf(“%d,%d,\n”,strlen(c),sizeof(c));}程序运行后的输出结果是()。A.4,5,2,4,1,3,B.4,4,2,2,1,1,C.5,5,3,3,2,2,D.4,4,2,2,1,3

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

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

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

9.在数据流图(DFD)中,带有名字的箭头表示

A.模块之间的调用关系B.程序的组成成分C.控制程序的执行顺序D.数据的流向

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

A.算法的时间复杂度是指算法在执行过程中基本运算的次数

B.算法的时间复杂度是指算法执行所需要的时间

C.算法的时间复杂度是指算法执行的速度

D.算法的复杂度是指算法控制结构的复杂程度

11.对于一个正常运行的C程序,下列叙述中正确的是()。A.A.程序的执行总是从main函数开始,在main函数结束

B.程序的执行总是从程序的第一个函数开始,在main函数结束

C.程序的执行总是从main函数开始,在程序的最后一个函数中结束

D.程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数中结束

12.链表不具有的特点是()。A.A.不必事先估计存储空间

B.可随机访问任意元素

C.插入、删除不需要移动元素

D.所需空间与线性表长度成正比

13.可以判断一个有向图中是否含有回路的方法为()。

A.广度优先遍历B.深度优先遍历C.拓扑排序D.求最短路径

14.C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是()。

A.预定义标识符(如库函数中的函数名)可用做用户标识符,但失去原有含义

B.用户标识符可以由字母和数字任意顺序组成

C.在标识符中大写字母和小写字母被认为是相同的字符

D.关键字可用做用户标识符,但失去原有含义

15.设有以下语句,其中不是对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))

16.

17.以下程序的运行结果是()。#include<stdio.h>main(){st,uctdate{intyear,month,day;}today;printf("%d\n",sizeof(structdate));}

A.6B.8C.10D.12

18.有下列程序:程序执行后的输出结果是()。A.Zhao,m,85,Zhao,m,85

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

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

D.Sun,f,90,Sun,f,90

19.有以下程序:#include<stdio.h>main(){charb[]=“happynewyear”,k;for(k=0;b[k];k++) printf(“%c”,b[k]-‘a’+‘A’);}程序运行后的输出结果是()。

A.hAppynewyeArB.HappynewyearC.HAPPYNEWYEARD.HaPPYNEWYEaR

20.对于如图所示二叉树采用中根遍历,正确的遍历序列应为()A.ABCDEFB.ABECDFC.CDFBEAD.CBDAEF

二、2.填空题(20题)21.若有定义inta[4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},则初始化后,a[1][1]得到的初值是______。

22.若定义#definePI3.14159,则执行完下列程序后输出结果是______。

#definePI3.14159;printf("PI=%f",PI);

23.若x、y和z均是int型变量,则执行下面表达式后的x值为【】。

x=(y=4)+(z=3)

24.对于图书管理数据库,将图书表中"人民邮电出版社"的图书的单价涨价5%。请对下面的SQL语句填空:UPDATE图书【】WHERE出版单位="人民邮电出版社"

25.栈的3种基本运算是:入栈、退栈和______。

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

typedefunionstudent

{charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{STUa[5];

Printf(“%d\n”,sizeof(a));

}

27.以下程序用于判断a、b、c能否构成三角形,若能,输出YES,否则输出NO。当给a、b、c输入三角形三条边长时,确定a、b、c能构成三角形的条件是需同时满足三个条件:a+b>c,a+c>b,b+c>a。请填空。

main()

{floata,b,c;

scanf("%f%f%f",&a,&b,&C);

if(())printf("YES\n");/*a、b、c能构成三角形*/

elseprintf("NO\n");/*a、b、c不能构成三角形*/

}

28.函数调用语句:“fgets(buf,n,fp);”从中指向的文件中读入n个字符放到buf字符数组中,函数返回值为______。

29.与表达式a+=b等价的另一书写形式是______。

30.以下程序的功能是输入任意整数给n后,输出n行由大写字母A开始构成的三角形字符阵列图形。例如,输入整数5时(注意:n不得大于10),程序运行结果如下:

ABCDE

FGHI

JKL

MN

O

请填空完成该程序。

main()

{inti,j,n;charch='A';

scanf("%d",&n);

if(n<11)

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

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

{printf("%2c",ch);

【】;

}

【】;

}

}

elseprintf("nistoolarge!\n")

printf("\n"0);

}

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

10ngfun5(intn)

{longs;

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

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

printf("%1d\n",x);}

32.设有以下定义

stnctss

{intinfo;sEruc5ss*link;}x.y,z;

且已建立如下图所示链表结构:

请写出删除结点y的赋值语句______。

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

main()

{intp=30;

printf("%dkn",(p/3>0?p/10:p%3));

}

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

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

36.通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为【】。

37.用树形结构表示实体之间联系的模型是()。

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

voidaverage();

main()

{floatscore[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,99}};

average(*score,12);

}

voidaverage(p,n)

intn;

float*p;

{inti;

floatsum=0;

for(i=0;i<n;i++,p++)sum+=(*p);

printf("%.2f\n",sum/n);

}

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

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

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

main()

{intX==1,y=0,a=0,b=0;

switch(x)

{case1:switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

}

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

}

三、1.选择题(20题)41.有以下程序:main(){intn=0,m=l,x=2;if(!n)x-=l:if(!m)x-=2;if(!x)x-=3;printf("%d\n",x);}执行后的输出结果是______。

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

42.有如下程序;

intfunc(inta,intb)

{return(a+b);}

main()

{intx=2,y=5,z=8,r;

r=func(func(x,y),z);printf("%\d\n",r);}

该程序的输出的结果是______。

A.12B.13C.14D.15

43.下列一维数组说明中,不正确的是()。

A.intN;

B.floata[]={1,6,6,0,2};scanf("%d",&N);intb[N];

C.#defineS10

D.inta[S+5];

44.下列程序的输出结果是()。

#include<stdio.h>

main()

{inta=2,b=3,p;

p=f(a,B);

pdntf("%d",p);

}

intf(a,B)

{intc;

if(a>B)c=1;

elseif(a==B)c=0;

elSec=-1;

return(C);

}

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

45.若要用函数fopen打开一个新的二进制文件,该文件要既能读也能写,则应以哪种方式打开文件()。

A.wbB.wb+C.rb+D.rb

46.结构化程序设计的三种结构是()。

A.顺序结构、选择结构、转移结构

B.分支结构、等价结构、循环结构

C.多分支结构、赋值结构、等价结构

D.顺序结构、选择结构、循环结构

47.在软件设计中,不属于过程设计工具的是()。

A.PDL(过程设计语言)B.PAD图C.N-S图D.DFD图

48.若有定义语句:floatx[6];则以下对x数组元素的正确引用形式是()。

A.x+2B.&x[6]C.*(x+2)D.*&x[6]

49.标有/$$$/的语句的执行次数是______。inty,i;for(i=0;i<20;i++){if(i%2==0)continue;y+=i;/$$$/;}

A.20B.19C.10D.9

50.下列叙述中正确的是A.数据库系统是一个独立的系统,不需要操作系统的支持

B.数据库设计是指设计数据库管理系统

C.数据库技术的根本目标是要解决数据共享的问题

D.数据库系统中,数据的物理结构必须与逻辑结构一致

51.下列程序的输出结果是()。point(char*pt);main(){charb[4]={'a','c','s','f},*pt=b;pt=point(pt);printf("%c\n",*pt);}point(char*p){p+=3;returnp;}

A.sB.cC.fD.a

52.若有定义:“inta[2][3];”,则对a数组的第i行第j列元素的正确引用为()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

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

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

54.将E-R图转换到关系模式时,实体与联系都可以表示成________。

A.属性B.关系C.键D.域

55.按条件f对关系R进行选择,其关系代数表达式是()。

A.R||R

B.

C.f(R)

D.f(R)

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

main()

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

for()

j+=a[i];

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

}

A.i=1;i<4;++iB.i=1;i<3;++iC.i=4;i>2;i--D.i:2;i<4;++i

57.以下程序的输出结果为()。inta,b,C;a=10;b=50;C=30;if(a<b)a=b;b=C;c=a;printf("a=%d,b=%d,c=%d",a,b,C);

A.a=50,b=30,c=30

B.a=10,b=30,c=10

C.a=50,b=30,c=10

D.a=50,b=30,c=50

58.下面函数intfunl(char*x){char*y=x;while(*y++);return(y-x-1);}的功能是_______。

A.求字符串的长度B.比较两个字符串的大小C.将字符串x复制到字符串yD.将字符串x连接到字符串y后面

59.有以下程序:voidchange(intk[]){k[0]=k[5];)main(){intx[10]={1,2,3,4,5,6,7,8,9,10},n=0;while(n<=4)(change(&x[n]);n++;}for(n=0;n<5;n++)printf("%d",x[n]);printf("\n");}程序运行后的输出结果是()。

A.678910B.13579C.12345D.62345

60.以下选项中,合法的一组C语苦数值常量是()。

A.28.5e-3-0xf

B.12OXa234.5

C.1774c1.5Oabc

D.0x8A10,0003.e5

四、选择题(20题)61.下列叙述中错误的是()。

A.一个C语言程序只能实现一种算法

B.c程序可以由多个程序文件组成

C.C程序可以由一个或多个函数组成

D.一个c函数可以单独作为一个C程序文件存在

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

A.对长度为n的有序链表进行查找,最坏情况下需要的比较次数为n

B.对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为n/2

C.对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为log2n

D.对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为nlog2n

63.

64.有以下程序:

#include<stdio.h>

main()

{inta,b,k,m,*pl,*p2;

k=1,m=8;

p1=&k,p2=&m;

a=/*pl-m;b=*p1+*p2+6;

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

}

编译时编译器提示错误信息,你认为出错的语句是()。

A.a=/*pl-m;

B.b=*p1+*p2+6;

C.k=1,m=8;

D.pl=&k,p2-&m;

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

A.zB.0C.元素Ch[5]地址D.字符y的地址

66.

67.若程序中定义了以下函数doublemyadd(doublea,doubleb){return(a+b);}并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是()A.doublemyadd(doublea,b);

B.doublemyadd(double,double);

C.doublemyadd(doubleb,doublea);

D.doublemyadd(doublex,doubley);

68.

69.以下错误的定义语句是()。

70.有以下程序程序运行后的输出结果是()。A.24B.28C.32D.36

71.若有定义intx,y;并已正确给变量赋值,则以下选项中与表达式(x—y)?(x++):(y++)中的条件表达式(x—Y)等价的是()。

A.(x—Y<01Ix—Y>O)B.(x—y<0)C.(x—Y>0)D.(x—Y==0)

72.有以下程序:

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

A.4B.34C.31D.32

73.设有定义:

则以下赋值语句中错误的是()。

A.data2=datal;

B.data2=(2,6.;

C.

D.

74.有以下程序

#include<stdio.h>

voidprt(int*x,int*y,int*z)

{printf("%d,%d,%d\n",++*x,++*y,*z++);}

main()

{inta=10,b=40,c=20;

prt(&a,&b,&c);

prt(&a,&b,&c);

}

程序的输出结果是

75.设有条件表达式:(EXP)?i++;j--,则以下表达式中(EXP)完全等价的是()。

A.(EXP==0)B.(EXP!=0)C.(EXP==1)

温馨提示

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

评论

0/150

提交评论