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

下载本文档

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

文档简介

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

一、单选题(20题)1.

2.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用()最节省时间。

A.单链表B.单循环链表C.带尾指针的单循环链表D.带头结点的双循环链表

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

A.对于double类型数组,不可以直接用数组名对数组进行整体输入或输出

B.数组名代表的是数组所占存储区的首地址,其值不可改变

C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息

D.可以通过赋初值的方式确定数组元素的个数

4.以下说法错误的是A.A.高级语言都是用接近人们习惯的自然语言和数学语言作为语言的表达形式

B.计算机只能处理由0和1的代码构成的二进制指令或数据

C.C语言源程序经过C语言编译程序编译之后生成一个后缀为.EXE的二进制文件

D.每一种高级语言都有它对应的编译程序

5.有以下程序

#include<stdio.h>

main()

{structnode{intn;structnode*next;}*p;

structnodex[3]={{2,x+1},{4,x+2},{6,NULL}};

p=x:

printf("%d,",p->n);

printf("%d\n",P->next->n);

}

程序运行后的输出结果是A.A.2,3B.2,4C.3,4D.4,6

6.

7.若有函数首部“intfun(doublex[10],int*n)”,则下列针对此函数的函数声明语句中正确的是()。

A.intfun(double,int);

B.intfun(double*,int*);

C.intfun(double*x,intn);

D.intfun(doublex,int*n);

8.下列定义数组的语句中错误的是()。

A.intnum[][3]={{1,2},3,4,5,6};

B.intnum[2][4]={{1,2},{3,4},{5,6}};

C.intnum[]={1,2,3,4,5,6};

D.intnum[][4]={1,2,3,4,5,6};

9.有以下程序:#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

10.有以下程序:#include<stdi0.h>#include<string.h>structA{inta;charb[10];doubleC;);voidf(structAt);main(){structAa={"1001,"ZhangDa",l098,0};f(a);printf("%d,%S,%6.1f\n",a.a,a.b,a.c);}voidf(structAt){t.a=1002;strcpy(t.b,"ChangRon9");t.c=1202.0;}程序运行后的输出结果是()。A.1001,ZhangDa,1098.0

B.1002,ChangRong,1202.0

C.1001,ChangRong,1098.0

D.1002,ZhangDa,1202.0

11.

12.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式()。

A.从左起输出该字串,右补空格B.按原字符长从左向右全部输出C.右对齐输出该字串,左补空格D.输出错误信息

13.有以下程序:#include<stdio.h>main(){chars[]="012xy\O8s34f4w2‘;inti;n=0;,for(i=0;s[i]!=0;i++)if(s[i]>=0s[i]<=9)n++;printf("%d\n",n);}程序运行后的输出结果是()。A.0B.3C.7D.8

14.

15.以下程序的输出结果是______。main(){inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1];a[3][0]);}

A.650B.1470C.5430D.输出值不定

16.标准库函数fgets(s,n,file)的功能是()。

A.从文件file中读取长度为n的字符串存入字符数组s中

B.从文件file中读取长度不超过n-1个字符的字符串放到字符数组s中

C.从文件file中读取n个字符串存入字符数组s中

D.从文件file中读取长度为n-1个字符的字符串存入字符数组s中

17.对初始状态为递增序列的数组按递增顺序排序,最省时间的是插入排序算法,最费时间的算法是()

A.堆排序B.快速排序C.插入排序D.归并排序

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

A.m=4

B.m=2

C.m=6

D.m=5

19.

20.已知二叉树后序遍历序列是dabeC,中序遍历序列是debaC,它的前序遍历序列是()。

A.aChedB.deCabC.deabeD.Cedba

二、2.填空题(20题)21.以下函数用来求出两整数之和,并通过形参将结果传回,请填空。

voidfunc(intx,inty,【】z)

{*z=x+y;}

22.若输入字符串:abcde,则以下while循环体将执行【】次。

while((ch=getchar())=='e')printf("*");

23.若有以下程序

intf(intx,inty)

{return(y-x)*x;}

main()

{inta=3,b=4,c=5,d;

d=f(f(3,4),f(3,5));

ptintf("%d\n",D);

执行后输出结果是______。

24.软件测试分为白箱(盒)测试和黑箱(盒)测试。等价类划分法属于【】测试。

25.单元测试又称模块测试,一般采用【】测试。

26.已知head指向一个带头结点的单向链表,链表中每个结点包含数据域(data)和指针域(next),数据域为整型。以下函数求出链表中所有链结点数据域的和值,作为函数值返回。请在下划线内填入正确内容。

{intdata;structlink*next;}

main()

{structlink*head;

sum(head);

┆}

sum(【】);

{structlink*p;ints=0;

p=head->next;

while(p){s+=p->data;p=p->next;}

return(s);}

27.在宏定义#defineP13.14159中,用宏名PI代替一个______。

28.类是一个支持集成的抽象数据类型,而对象是类的【】。

29.软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和【】的设计来实现。

30.在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种;前序遍历、【】遍历和后序遍历。

31.下面程序的功能是调用sub函数计算数组a中字符串的长度,请填空。

sub(chars[])

{intn;

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

return【】;

}

main()

{char*a;intk;

gets(a);

【】

printf("%d",k);

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

#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);

}

33.下面程序的输出结果是【】。

charb[]="ABCD";

main()

{

charb[30];

strcpy(&b[0],"GH");

strcpy(&b[1],"GH”);

strcpy(&b[2],"GH");

printf("%s\n",B);

}

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

#include<stdio.h>

main()

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

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

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

case3:a++;b++;

}

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

}

35.下面程序的功能是建立一个有3个结点的单循环链表,然后求各个结点数值域data中数据的和,请填空。

#include<stdio.h>

#include<stdlib.h>

structNODE{intdata;

structNODE*next;

};

main()

{structNODE*p,*q,*r;

intsum=0;

p=(structNODE*)malloc(sizeof(structNODE));

q=structNODE*)malloc(sizeof(structNODE));

r=(structNODE*)malloc(sizeof(structNODE));

p->data=100;q->data=200;r->data=300;

p->next=q;q->next=r;r->next=p;

sum=p->data+p->next->data+r->next->next【】;

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

}

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

white(s[i]){d[j]=【】;j++;}

d[j]=0;

37.strcmp函数的功能是【】。

38.若运行输入:3<回车>,则以下程序的输出结果是()。main(){inta,b;scanf("%d",&A);b=(a>=0)?a:-a;printf("b=%d",B);}

39.若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为【】。

40.语句“int(*ptr)();”的含义是______是指向函数的指针,该函数返回一个int型数据。

三、1.选择题(20题)41.下列叙述中正确的是A.线性表是线性结构B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构

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

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

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

C.(kk+32)>='a'&&(kk+32)<='z'

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

43.以下程序的输出结果是main(){inta=5,b=4,c=6,d;printf((“%d\n”,d=a>b?)(a>c?a:c):(b));}

A.5B.4C.6D.不确定

44.对下述程序的判断中,正确的是voidmain(){char*p,s[128];p=s;while(strcmp(s,"End")){printf("Inputastring:");gets(s);while(*p)putchar(*p++);}}

A.此程序循环接收字符串并输出,直到接收字符串"End"为止

B.此程序循环接收字符串,接收到字符串"End"则输出,否则程序终止

C.此程序循环接收字符串并输出,直到接收字符串"End"为止,但因为代码有错误,程序不能正常工作

D.此程序循环接收字符串并将其连接在一起,直到接收字符串"End"为止,输出连接在一起的字符串

45.有以下程序:#include<stdio.h>#include"string.h"voidfun(char*s[],intn){char*t;inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strlen(s[i])>strlen(s[j])){t=s[i];s[i]=s[j];s[j]=t;}}main(){char*ss[]={"bee","bbcc","xy","aaaacc","aabcc"};fun(ss,5);printf("%s,%s\n",ss[0],ss[4]);}程序的运行结果是()。

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

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

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

47.以下程序的输出结果是______。#include<stdio.h>#include<string.h>fun(char*w,intn){chart,*s1,*s2;s1=w;s2=w+n-1;while(s1<s2){t=*s1++;*s1=*s2-;*s2=t;}}main(){char*p;p="1234567";fun(p,strlen(p));puts(p);}

A.1234567B.7654321C.1711717D.7177171

48.在一个C语言程序中A.main()函数必须出现在所有函数之前

B.main()函数可以在任何地方出现

C.main()函数必须出现在所有函数之后

D.main()函数必须出现在固定位置

49.有以下程序main(){inta=3,b=4,c=5,d=2;if(a>B)if(b>C)printf("%d",d+++1);elseprintf("%d",++d+1);printf("%d\n",D);}程序运行后的输出结果是

A.2B.3C.43D.44

50.以下不能正确进行字符串赋初值的语句是

A.charstr[5]=“good!”;

B.charstr[]=“good!”;

C.char*str=“good!”;

D.charstr[5]={'g','o','o','d'};

51.下面四个选项中,均是不合法的用户标识符的选项是()。

A.AP_0doB.floatla0_AC.b-agotointD._123tempint

52.下列说法正确的是()。

A.在C语言中,可以使用动态内存分配技术,定义元素个数可变的数组

B.在C语言中,数组元素的个数可以不确定,允许随机变动

C.在C语言中,数组元素的数据类型可以不一致

D.在C语言中,定义了一个数组后,就确定了它所容纳的元素的个数

53.请阅读以下程序:#include<stdio.h>main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;}case2:a++,b++;break;}printf("a=%d,b=%d\n",a,b);上面程序的输出结果是

A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

54.若有以下说明:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则值为6的表达式是_______。

A.*p+6B.*(p+6)C.*p+=5D.p+5

55.有以下程序:main(){union{unsignedintn;unsignedcharc;}u1;u1.c='A';printf("%c\n",u1.n);}执行后输出结果是()。

A.产生语法错误B.随机值C.AD.65

56.以下程序的输出结果是_________。#include<stdio.h#defineFUDGE(y)2.84+y#definePR(A)printf("%d",(int)(A))#definePRINT1(A)PR(A);putchar('\n')main(){intx=2;PRINT1(FUDGE(5)*X);}

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

57.有以下程序:#include<studio.h>#defmeF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%d\n",F(a++,b++));}程序运行后的输出结果是()。

A.12B.15C.16D.20

58.下列程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为______。#include<stdio.h>#include<string.h>fuch(charstr[]){intnum=0;while(*(str+num)!='\0')num++;return(num);}main(){charstr[10],*p=str;gets(p);printf("%d\n",fuch(p));}

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

59.以下描述中正确的是()。

A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

B.do-while循环由do开始,用while结束,在while(表达式.后面不能写分号

C.在do-while循环体中,是先执行一次循环,再进行判断

D.do-while循环中,根据情况可以省略while

60.数据的存储结构是指()。

A.数据所占的存储空间

B.数据的逻辑结构在计算机中的存放形式

C.数据在计算机中的顺序存储方式

D.存储在计算机外存中的数据

四、选择题(20题)61.

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

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

63.数据库设计中,用E—R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的()。

A.需求分析阶段B.逻辑设计阶段C.概念设计阶段D.物理设计阶段

64.有以下程序

#include<stdio.h>

#include<stdlib.h>

intfun(intt)

{int*p;

p=(int*)malloc(sizeof(int));

*p=t;return*p;

}

main()

{inta;

a=fun(8);

printf("%d\n",a+fun(10));

}

程序的运行结果是

A.0B.10

C.18D.出错

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

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

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

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

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

66.在下列语句中,其含义为“q是一个函数指针,该指针指向整型数据”的定义语句是()。

A.int**q;B.int(*q);C.int*q;D.int*q;

67.若有定义语句:inta[4][10],*P,*q[4];且0<=i<4,则错误的赋值是()。

A.P=aB.q[i]=a[i]C.p=a[i]D.p=&a[2][1]

68.有下列程序:

main

{inti,s=0,t[]={1,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+=2)s+=*(t+i);

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

}

程序执行后的输出结果是()。A.A.45B.20C.25D.36

69.以下叙述中正确的是()。A.A.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失

B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖

C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据

D.c语言中的文件是流式文件,因此只能顺序存取数据

70.(20)数据库设计包括两个方面的设计内容,它们是()

A.概念设计和逻辑设计

B.模式设计和内模式设计

C.内模式设计和物理设计

D.结构特性设计和行为特性设计

71.以下程序段中的变量已正确定义:

程序段的输出结果是()。

A.********B.****C.**D.*

72.已知字母A的ASCII码为十进制的65,下面程序的输出为()。

voidmain()

{charch1,ch2;

ch1=’A’+’5’-’3’;

ch2=’A’+6-3;

printf("%d,%c\n",ch1,ch2);

}

A.67,DB.B,CC.C,DD.不确定的值

73.有以下程序:main{union{charch[2];intd;}s;d=0x4321;printf("%x,%x\n",S.ch[0],S.ch[l]);}在16位编译系统上,程序执行后的输出结果是()A.21,43B.43,21C.43,00D.21,00

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

A.数据库不需要操作系统的支持

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

C.数据库是存储在计算机存储设备中的、结构化的相关数据的集合

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

75.有以下程序:

#include<stdio.h>

#include<string.h>

main()

{charstr[][20][{"One*World","One*Dream!"},*p=str[1];

prinft("%d,",strlen(p));printf("%s\n",p);

}

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

A.9,0ne*World

B.9,0ne*Dream!

C.10,One*Dream!

D.10,Ome*World

76.

以下程序的输出结果是()。

main

{inta=3:

printf("%d\n",(a+a-=a*a));

}

A.-6B.12C.0D.-12

77.设fun函数的定义形式为

voidfun(charch,floatx){…}

则下列对函数fun的调用语句中,正确的是()。A.A.fun("abc",3.0);B.t=fun('D'.16.5);

C.fun('65',2.8);

D.fun(32,32);

78.在黑盒测试方法中,设计测试用例的主要根据是()。

A.程序外部功能B.程序内部逻辑C.程序数据结构D.程序流程图

79.(56)下列不属于软件调试技术的是()

A.强行排错法

B.集成测试法

C.回溯法

D.原因排除法

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

A.123456B.14C.1234D.12

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是根据整型形参n,计算如下公式的值:

Y=1-1/(22)+1/(33)-1/(44)+…+(-1)(n+1)/(nn)

例如,n中的值为l0,则应输出0.817962。

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

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

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdiOh>

doubleproc(intn)

{

doubley=1.0;

//****found****

intJ=1;.

inti;

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

{

j=-l*j;//****found****

y+=1/(i*i);

}

return(y);

}

voidmain

{

intn=10:

system("CLS"):

printf("\nTheresultis%1f\n",proc(n));

}

六、程序设计题(1题)82.请编写函数proc,其功能是:将str所指字符串中除下标为偶数、同时ASCIl码值为奇数的字符外,其余的字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。例如,若str所指字符串中的内容为ABCDEFGl2345,其中字符B的ASCIl码值为偶数,所在元素的下标为奇数,因此必须删除;而字符A的ASCIl码值为奇数,所在数组中的下标为偶数,因此不应当删除。依此类推,最后t所指的数组中的内容应是ACEG。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所写的若干语句。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>voidproc(char*str,chart[]){}voidmain{charstr[100],t[100];system("CLS");printf("\nPleaseenterstringstr:");scanf("%S",str);proc(str,t);printf("\nTheresultiS:%s\n",t);

参考答案

1.D

2.C

3.C解析:在C语言中,除字符数组外,一个数组不能通过数组名对数姐进行整体引用,因此选项A是对的。数组名中存放的是一个地址常量,它代表整个数组的首地址,因此选项B是对的。C语言程序在运行过程中,系统不自动检验数组元素的下标是否越界,因此选项C是错误的。C语官规定可以通过赋初值来定义数组的大小,这时数组说明符的一对方括号中可以不指定数组的大小,因此选项D也是正确的。所以,4个选项中选项C符合题意。

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

由于高级程序设计语言具有可读写、可理解性好等特点,这就要求高级程序设计语言用接近人们习惯的自然语言和数学语言作为语言的表达形式,选项A的说法正确。

在计算机中,机器可以接受和处理的只能是由0和1组成的二进制代码,用高级语言编写的程序都需要经过编译和连接,使其转化为二进制代码才能被机器执行。因此,选项B的说法正确。

C语言源程序经过C语言编译程序编译之后生成一个后缀为.OBJ的二进制文件(称为目标文件);最后要由“连接程序”把此.OBJ文件与C语言提供的各种库函数连接起来生成一个后缀为.EXE的可执行文件。因此,选项C的说法不正确。

由于高级语言编写的程序都需要经过编译和连接,才能被计算机执行,因此,每一种高级语言都有它对应的编译程序,D选项的说法正确。

5.B解析:p指向x的第一个元素,所以p->n的值为2,p->next指向x+1,即指向x的第二个元素,所以p->next->n为4。

6.C

7.B函数声明有两种形式:①类型说明符函数名(类型形参,类型形参……);②类型说明符被调函数名(类型,类型……)。由于函数首部为“intfun(doublex[10],int*n)”。故本题答案为B选项。

8.BB选项中定义的数组为2行4列,而赋值时却赋成了3行,所以错误。故本题答案为B选项。

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

10.A将结构变量作为形参,通过函数间形参与实参相结合的方式将整个结构传递给函数,这种传递方式是值传递。在被调用函数中,对结构形参变量值进行的任何修改都不会影啊到调凋函数中的结构变量。

11.A

12.B

13.B考查简单的C程序数组和循环。for循环是指i=0,如果s/[3]!=0,则i自动加1。if循环指的是s[i]中的元素大于等于0且小于等于9,则n加l,所以答案为B。

14.B

15.A解析:对未给出初始值的整数数组元素,被默认初始化为零。

16.B解析:字符串输入函数fgets()的调用形式为:fgets(s,n,fp)。fgets函数参数说明:“s”可以是一个字符数组名,也可以是指向字符串的指针;“n”为要读取的最多的字符个数;“fp”是指向该文件的文件型指针。fgets函数的功能是:从fp所指向的文件中读取长度不超过n-1个字符的字符串,并将该字符串放到字符数组s中;读入字符串后会自动在字符串末尾加入“'\\0'”结束符,表示字符串结束。

17.B

18.C[解析]第一次外循环的值为1.第一次内循环的值为3.不满足条件执行m*=j即m的值为3;第二次的值为2.不满足条件执行m*=*j,即m的值为6;第三次的值为1.不满足条件执行m*=j,即m的值仍为6.第二次外循环的值为2.j的值为3.满足条件,执行break语句,跳出循环。

19.A

20.D二叉树的遍历有3种:前序、中序和后序。①前序遍历访问根结点,然后按左右顺序遍历子结点;②中序首先遍历左子树,然后访问根结点,最后遍历右子树;③后序遍历首先遍历左子树,然后遍历右子树,最后访问根结点。本题根据后序和中序遍历的结果可以得出二叉树的结构,然后再对其进行前序遍历,正确答案选项为D。

21.int*int*解析:从题中代码可知:z应该是一个整型指针,因此应填int*。

22.00解析:函数getchar()是从键盘得用户输入的一个字符。用户输入的第1个字符a,不管后面输入的是什么ch的值都是'a',因此条件(ch=getchar())=='e'为假,这个循环不会被执行。

23.99解析:在主函数中函数f(f(3,4),f(3,5))的返回值赋给d。函数的第一个参数为f(3,4)的返回值,函数f(9,4)返回值为(4-3)*3=3,f(3,5)返回值为(5-3)*3=6,那么函数f(f(3,4),f(3,5))等价于函数f(3,6)其返回值为(6-3)*3=9。因此d被赋值为9;所以输出9。

24.黑箱或黑盒黑箱或黑盒解析:黑箱测试是根据程序规格说明所规定的功能来设计测试用例,它不考虑程序的内部结构和处理过程。常用的黑箱测试技术分为等价类划分、边界分析、错误猜测以及因果图等。

25.白盒法白盒法

26.structlink*headstructlink*head解析:因为本题中是用结构体变量构成了链表,所以要从链表头节点逐个节点的引用结构体的数据域,需要有个指向结构体变量的指针依次指向各个节点,即p=p->next,而用指针引用结构体成员数据的方法为:p->data。注意:结构体变量和共用体变量之间的区别为联系。

27.本题考查字符替换格式:#define标识符字符串。

28.实例将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。所以,类是对象的抽象,对象则是其对应类的一个实例。

29.测试实例测试实例解析:进行软件测试时,应精心设计测试实例和选择测试数据,以对系统进行全面测试。

30.中序中序解析:在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、中序遍历和后序遍历.前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。中序遍历指在访问根结点、遍历左了树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树:并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历右子树,然后访问根结点,最后遍历左子树;并且遍历左、右子树时,仍然光遍历右子树,然后访问根结点,最后遍历左子树。

31.s[n]!='\0';或s[n];nk=sub(a);s[n]!='\\0';或s[n];\r\nn\r\nk=sub(a);解析:函数sub()通过for循环计算字符串的长度,当字符串没有结束时循环,因此判断循环与否的条件是看字符串是否结束。故第1空应该填写s[n];或其他等价表达式。循环结束返回字符串长度值,循环变量n中累计了循环的次数即字符串的长度,故第2空应该填n。主函数中的空白处应该是一条调用函数sub()的语句,将字符串的首地址作为实参传递给形参,并将返回值赋值给变量k。故第3空应该填k=sub(a);。

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

33.GGGHGGGH解析:由于在函数main中定义了数组变量b,其将屏蔽全局变量b。对于一维数组变量,其值为一常数,等于数组首元素地址。strcpy(&b[0],'GH'),是将字符串,'GH',复制到数组b中从首元数开始的空间中,此是b中的字符串为'GH';strcpy(&b[1],'GH'),是将字符串“GH'复制到数组b中从第二个元素开始的空间中,此是b中的字符串为'GH'。执行第三次strcpy函数后,b中的字符串为'GGGH'。

34.a=2b=1a=2,b=1解析:本题考查了switch结构的内容。C语言中,程序执行完一个case标号的内容后,如果没有break语句,控制结构会转移到下一个case继续执行,因为case常量表达式只是起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部switch结构后,继续执行了外部switch结构的case2:分支,最后a和b的值分别为2和1。

35.->next->data->next->data解析:主函数中前面大部分语句都是用来建立题中所述的链表的,我们只需要补充完整倒数第2条语句,实现题目要求的求3个结点之和就可以了。p->data是p所指结点中的数据;p->next->data是p的下一结点(q所指结点)中的数据。所以下划线位置只要填入->next->data就是剩下的r所指结点的数据了。因为链表是循环的,r->next->next->next的值就等于r,你甚至还可以填入->next->next->next->next->data,只要保证整个式子->next的个数是3的倍数都可以。

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

37.字符串的比较strcmp函数的原型是intstrcmp(char*s1,char*s2);功能是对s1和s2所指字符串进行比较,若s1<s2返回负数,若s1==s2返回0,若s1>s2返回正数。

38.b=3b=3解析:条件表达式的基本格式为:“表达式1?表达式2:表达式3”;其功能是:表达式1的值若非0,则计算表达式2的值,且为最终结果;若表达式1的值为0,则计算表达式3的值,且为最终结果。因为a=3,则a>=0成立,所以b=a=3。

39.88解析:fabs函数功能是求x的绝对值,计算结果为double型。pow功能是计算x的y次方的值,计算结果同样为double型。所以本题表达式相当于2.0的3.0次方,结果为8.000000。

40.ptrptr解析:本题考查函数指针的概念。函数指针的定义格式是:类型标识符(*指针变量名)()。注:“类型标识符”为函数返回值的类型。

41.A根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件:1,有且只有一根节结点,2,每一个结点最多有一个前件,也最多有一个后件,则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。

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

43.C解析:在C语言中问号表达式(如:a>c?a:c;)的计算规则为:如果a>c为真,那么表达式的值为a的值;否则表达式的值为c的值。本题中的printf()函数中的输出表达式,首先计算括号内的条件表达式,它的值为6(a>c?a:C中a>c即5>6为假故该表达式的值为c的值即为6),然后再计算外面表达式(等价于a>b?6:B)的值,同理可得该表达式的值为6,将值6赋值给d,因此最后输出该表达式的值为6。

44.B解析:此题考查了字符串输入函数gets和字符串比较函数strcmp,另外还有字符输出函数putchar。Gets从标准输入设备中读入全部字符,包括空格,直到遇到回车符为止。strcmp是字符串比较函数,strcmp(字符串1,字符串2),如果字符串1=字符串2,则函数值为0;如果字符串1>字符串2,则函数值为一正整数;如果字符串1<字符串2,则函数值为一负整数。putchar(c)函数将字符c输出到标准输出设备上。

45.A

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

47.C解析:在子函数fun中,s1为字符串w的起始地址,s2为字符串的结束地址(字符\'\\0\'除外),当执行循环结束循环,w='1711717'。

48.B解析:本题考核的知识点是main()函数的位置。一个完整的C语言程序有且仅有一个主函数main()函数).程序总从main()函数的第一条语句开始执行,到main()函数的最后一条语句结束,其他函数都是在执行main()函数时,通过函数调用或嵌套调用而得以执行的。C语言规定,main()函数在程序中的位置是任意的,故选项A、选项C和选项D均不正确。所以,B选项为所选。

49.A解析:本题考核的知识点是if-else语句的程序分析。我们首先看程序中if-else的匹配,由于C语言中规定else总是与最近的if搭配,因此程序中else与第二个订搭配,即该if-else语句为第一个if语句的执行部分,接着判断第一个if后面括号里的表达式的值“a>b”为假('3>4'为假),因此不执行后面if-else语句,程序将执行下面的输出语句输出d,而d一直未被改变故为原来的值2,所以,4个选项中选项A符合题意。

50.A解析:选项A定义了一个字符数组str,具有5个元素,但赋初值的时候,初值个数却是6个(有一个'\\0',);选项B定义了一个字符数组str并给它赋初值,由于省去了长度定义,长度由初值个数确定,相当于str[6];选项C定义了一个字符型指针变量并用一个字符串给它赋初值,使该字符型指针指向了该字符串;选项D是对字符型数组中单个元素依次赋初值。

51.C解析:C语言规定的标识符只能由字母、数字和下划线3种字符组成,第一个字符必须为字母或下划线,并且不能使用C语言中的关键字作为标识符。选项C)中goto和int是关键字,b-a中'-'不是组成标识符的3种字符之一;选项D)中int是关键字,所以,均是不合法用户标识符的选项是C)。

52.D解析:本题考查数组的两个知识点:①在C语言中,数组元素的个数是确定的,不允许随机变动,数组定义好之后,它所能容纳的元素的个数也就确定了;②同一个数组中所有元素的类型是一样的。

53.A

54.C解析:选项A,*p+6,其值等于1+6=7;选项B,*(p+6),其值等于a[6]=7;选项C,*p+=5,其值等于*p=*p+5=1+5=6;选项D,p+5是个地址值。

55.C解析:本题在定义共用体的同时,定义了一个共用体型变量u1,共占两个字节,有两个成员n和c,两个成员的首地址是相同的。因此给u1.c赋一个A,其实就是给无符号整型成员u1.n的低字节赋一个A,输出u1.n的时候是以字符型的形式输出,只输出它的低地址的一个字节,因此为A。所以,C选项为所选。

56.B解析:在程序中如果有带实参的宏,则按#define命令行中指定的字符串从左到右进行置换,如果串中包含宏中的形参,则将程序语句中相应的实参代替形参。将实参带入已经定义的宏中,可以得出答案为“12”。

57.A解析:在程序中先用表达式将宏替换掉,则输出语句中的表达式为(a++)*(b++),而a++的值为3,b++的值为4。因此最后的值为3*4=12。所以,4个选项中选项A符合题意。

58.D

59.C解析:do-while语句的一般形式为:do循环体语句while(表达式);,其中循环体语句可以是复合型语句,但必须用花括号括起来。while后必须要有分号作为语句的结束,在do-while循环中,不可以省略while。

60.B解析:数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式,数据的存储结构有顺序结构、链式结构、散列结构和索引结构等。

61.D

62.A第一个嵌套的for循环功能将对角线上的数据从大到小排序,其他数据不变,排序完成后,a[0][0]值为6,输出第一行为6432,答案选择A)

63.CC。【解析】E—R(Entity—Relationship)图为实体一联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。

64.C本题考查函数的调用。题目给出的程序可以分为两个部分,一个是函数fun,另一个是主函数main。fun函数的功能是输入一个整型变量t,设置一个指向该整型变量的指针p,并将该指针所指向的值返回给main函数。main函数中两次调用了fun函数,第一次变量t的值为8,第二次变量t的值为10,第一次返回值8,使得a=8,第二次返回值10,使得a+fun(10)=18。

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

66.B本题考查指针函数。其定义的基本格式为:类型说明符(*函数名)。“类型说明符”表示返回的指针值指向的数据类型。

67.A二维数组名是指向指针的指针,所以a和q都为指向指针的指针,而P为指向int类型的指针。所以选项A)是将一个指向int类型的指针用来指向一个指针的指针,显然是错误的。其他几个选项都是正确的赋值,其中选项D)是用&返回整数的地址,然后赋值给P。

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

69.AB)选项中打开一个已存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。c)选项中在一个程序中当对文件进行了写操作后,不用先关闭该文件然后再打开,才能读到第1个数据,可以用fseek()函数进行重新定位即可。D)选项中,C语言中的文件可以进行随机读写。故本题答案为A)。

70.A

71.D本题考察for循环语句,注意第二个for语句的后面有一个分号,即printf函数不属于循环体,无论循环执行多少次,printf(”*”)语句只执行一次。因此,本题正确答案为D)。

72.A将字符进行运算时,进行运算的是ASCII值,所以ch1=65+2=67(‘5’与’3’的ASCII值差为2),ch2=65+6-3=68.

73.As是一个公用体,d的值分别与ch中的两个元素的值相同,d的高位放在chFl]中、低位放在chl-0]中,因此输出的结果为21,43。

74.C数据库是存储在计算机存储设备中的、结构化的相关数据的集合。数据库中的数据不只是面向某一项特定的应用,而是面向多种应用,可以被多个用户、多个应用程序共享,不具有独立的系统。设计数据库的目的实质上是为了设计出满足实际应用需求的实际关系模型。数据库技术的主要目的则是有效地管理和存取大量的数据资源,包括:提高数据的共享性,使多个用户能够同时访问数据库中的数据;减小数据的冗余,以提高数据的一致性和完整性;提供数据与应用程序的独立性,从而减少应用程序的开发和维护代价。本题答案为C。

75.C\n本题输出两个结果,第一个是求字符串的长度。第二个是输出的字符串,数组的下标是从0开始的,所以当str取1的时候,应为“One*Dream!”。

\n

76.D

\n本题可以写成:a+a+(a-(a*a)),所以*的优先级最高,其次是-=的,+的优先级最低,因此先求a-=a*a=9,表达式变为a+a+-=9,a即a=a-9=-6,再次变为a+(-6)=-12,故选择D选项。

\n

77.C由题目的已知条件函数fun的定义形式voidfun(charch,floatx){…)可知第一个形参为字符型,所以A不符合,第二个形参为精度型,所以D不符合,函数fun定义为void型(无论返回值型),故其没有返回值,所以选项B错误。选项C的第一个实参的类型为字符型,第二个实参的类型为单精度型,与函数fun的形式参数的类型相符合,所以选项C为正确答案。

78.A【答案】:A

【知识点】:黑盒测试

【解析】:黑盒测试也称功能测试或数据驱动测试,它完全不考虑程序内部的逻辑结构和内部特征,只着眼于程序的外部结构,主要用来检查程序功能是否按照需求规格说明书的规定正常使用。故选A。

79.B

80.A将有6个元素的整型数组分两行输出到一个文件中,因为输出的都是数字并且每行都没有分隔符,所以当再对其进行读取操作时,每一行都会被认为是一个完整的数,而换行符则作为它们的分隔符。

81.(1)错误:intj=1;正确:doublej=1.0;

\n(2)错误:y+=1/(i*i);正确:y+=j/(i*i);

\n【解析】由函数proc可知,变量j的作用是控制每一项符号的变化,并且作为运算的分子,应改为double型变量。因此,“intj=1;”应改为“doublej=1.0;”。变量y中存放多项式的值,多项式中的每一项符号由变量j决定。因此,“y+=1/(i*i);”应改为“y+=j/(i*i);”。

\n

82.voidproc(char*str。chart[3]){inti,j=0;for(i=0;str[i]!=\\O;i++)//从数组的第一个元素开始,到其最后一个{if(i%2==0str[i]%21=o)//下标为偶数、同时ASCIl码值为奇数的字符t[j++]=str[i];}//如果成立,则把它放到t数组中t[i]=\\o;//字符串结束标志为\\0}【解析】题目中要求将字符串str中下标为偶数,同时ASCIl码值为奇数的字符放在数组t中。首先,需要检查字符串str中下标为偶数的字符其ASCIl码值是否为奇数,将符合要求的字符放在数组t中。最后,为新的字符串数组添加结束符。2022-2023年河南省焦作市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.

2.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用()最节省时间。

A.单链表B.单循环链表C.带尾指针的单循环链表D.带头结点的双循环链表

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

A.对于double类型数组,不可以直接用数组名对数组进行整体输入或输出

B.数组名代表的是数组所占存储区的首地址,其值不可改变

C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息

D.可以通过赋初值的方式确定数组元素的个数

4.以下说法错误的是A.A.高级语言都是用接近人们习惯的自然语言和数学语言作为语言的表达形式

B.计算机只能处理由0和1的代码构成的二进制指令或数据

C.C语言源程序经过C语言编译程序编译之后生成一个后缀为.EXE的二进制文件

D.每一种高级语言都有它对应的编译程序

5.有以下程序

#include<stdio.h>

main()

{structnode{intn;structnode*next;}*p;

structnodex[3]={{2,x+1},{4,x+2},{6,NULL}};

p=x:

printf("%d,",p->n);

printf("%d\n",P->next->n);

}

程序运行后的输出结果是A.A.2,3B.2,4C.3,4D.4,6

6.

7.若有函数首部“intfun(doublex[10],int*n)”,则下列针对此函数的函数声明语句中正确的是()。

A.intfun(double,int);

B.intfun(double*,int*);

C.intfun(double*x,intn);

D.intfun(doublex,int*n);

8.下列定义数组的语句中错误的是()。

A.intnum[][3]={{1,2},3,4,5,6};

B.intnum[2][4]={{1,2},{3,4},{5,6}};

C.intnum[]={1,2,3,4,5,6};

D.intnum[][4]={1,2,3,4,5,6};

9.有以下程序:#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

10.有以下程序:#include<stdi0.h>#include<string.h>structA{inta;charb[10];doubleC;);voidf(structAt);main(){structAa={"1001,"ZhangDa",l098,0};f(a);printf("%d,%S,%6.1f\n",a.a,a.b,a.c);}voidf(structAt){t.a=1002;strcpy(t.b,"ChangRon9");t.c=1202.0;}程序运行后的输出结果是()。A.1001,ZhangDa,1098.0

B.1002,ChangRong,1202.0

C.1001,ChangRong,1098.0

D.1002,ZhangDa,1202.0

11.

12.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式()。

A.从左起输出该字串,右补空格B.按原字符长从左向右全部输出C.右对齐输出该字串,左补空格D.输出错误信息

13.有以下程序:#include<stdio.h>main(){chars[]="012xy\O8s34f4w2‘;inti;n=0;,for(i=0;s[i]!=0;i++)if(s[i]>=0s[i]<=9)n++;printf("%d\n",n);}程序运行后的输出结果是()。A.0B.3C.7D.8

14.

15.以下程序的输出结果是______。main(){inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1];a[3][0]);}

A.650B.1470C.5430D.输出值不定

16.标准库函数fgets(s,n,file)的功能是()。

A.从文件file中读取长度为n的字符串存入字符数组s中

B.从文件file中读取长度不超过n-1个字符的字符串放到字符数组s中

C.从文件file中读取n个字符串存入字符数组s中

D.从文件file中读取长度为n-1个字符的字符串存入字符数组s中

17.对初始状态为递增序列的数组按递增顺序排序,最省时间的是插入排序算法,最费时间的算法是()

A.堆排序B.快速排序C.插入排序D.归并排序

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

A.m=4

B.m=2

C.m=6

D.m=5

19.

20.已知二叉树后序遍历序列是dabeC,中序遍历序列是debaC,它的前序遍历序列是()。

A.aChedB.deCabC.deabeD.Cedba

二、2.填空题(20题)21.以下函数用来求出两整数之和,并通过形参将结果传回,请填空。

voidfunc(intx,inty,【】z)

{*z=x+y;}

22.若输入字符串:abcde,则以下while循环体将执行【】次。

while((ch=getchar())=='e')printf("*");

23.若有以下程序

intf(intx,inty)

{return(y-x)*x;}

main()

{inta=3,b=4,c=5,d;

d=f(f(3,4),f(3,5));

ptintf("%d\n",D);

执行后输出结果是______。

24.软件测试分为白箱(盒)测试和黑箱(盒)测试。等价类划分法属于【】测试。

25.单元测试又称模块测试,一般采用【】测试。

26.已知head指向一个带头结点的单向链表,链表中每个结点包含数据域(data)和指针域(next),数据域为整型。以下函数求出链表中所有链结点数据域的和值,作为函数值返回。请在下划线内填入正确内容。

{intdata;structlink*next;}

main()

{structlink*head;

sum(head);

┆}

sum(【】);

{structlink*p;ints=0;

p=head->next;

while(p){s+=p->data;p=p->next;}

return(s);}

27.在宏定义#defineP13.14159中,用宏名PI代替一个______。

28.类是一个支持集成的抽象数据类型,而对象是类的【】。

29.软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和【】的设计来实现。

30.在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种;前序遍历、【】遍历和后序遍历。

31.下面程序的功能是调用sub函数计算数组a中字符串的长度,请填空。

sub(chars[])

{intn;

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

return【】;

}

main()

{char*a;intk;

gets(a);

【】

printf("%d",k);

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

#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);

}

33.下面程序的输出结果是【】。

charb[]="ABCD";

main()

{

charb[30];

strcpy(&b[0],"GH");

strcpy(&b[1],"GH”);

strcpy(&b[2],"GH");

printf("%s\n",B);

}

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

#include<stdio.h>

main()

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

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

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

case3:a++;b++;

}

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

}

35.下面程序的功能是建立一个有3个结点的单循环链表,然后求各个结点数值域data中数据的和,请填空。

#include<stdio.h>

#include<stdlib.h>

structNODE{intdata;

structNODE*next;

};

main()

{structNODE*p,*q,*r;

intsum=0;

p=(structNODE*)malloc(sizeof(structNODE));

q=structNODE*)malloc(sizeof(structNODE));

r=(structNODE*)malloc(sizeof(structNODE));

p->data=100;q->data=200;r->data=300;

p->next=q;q->next=r;r->next=p;

sum=p->data+p->next->data+r->next->next【】;

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

}

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

white(s[i]){d[j]=【】;j++;}

d[j]=0;

37.strcmp函数的功能是【】。

38.若运行输入:3<回车>,则以下程序的输出结果是()。main(){inta,b;scanf("%d",&A);b=(a>=0)?a:-a;printf("b=%d",B);}

39.若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为【】。

40.语句“int(*ptr)();”的含义是______是指向函数的指针,该函数返回一个int型数据。

三、1.选择题(20题)41.下列叙述中正确的是A.线性表是线性结构B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构

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

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

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

C.(kk+32)>='a'&&(kk+32)<='z'

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

43.以下程序的输出结果是main(){inta=5,b=4,c=6,d;printf((“%d\n”,d=a>b?)(a>c?a:c):(b));}

A.5B.4C.6D.不确定

44.对下述程序的判断中,正确的是voidmain(){char*p,s[128];p=s;while(strcmp(s,"End")){printf("Inputastring:");gets(s);while(*p)putchar(*p++);}}

A.此程序循环接收字符串并输出,直到接收字符串"End"为止

B.此程序循环接收字符串,接收到字符串"End"则输出,否则程序终止

C.此程序循环接收字符串并输出,直到接收字符串"End"为止,但因为代码有错误,程序不能正常工作

D.此程序循环接收字符串并将其连接在一起,直到接收字符串"End"为止,输出连接在一起的字符串

45.有以下程序:#include<stdio.h>#include"string.h"voidfun(char*s[],intn){char*t;inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strlen(s[i])>strlen(s[j])){t=s[i];s[i]=s[j];s[j]=t;}}main(){char*ss[]={"bee","bbcc","xy","aaaacc","aabcc"};fun(ss,5);printf("%s,%s\n",ss[0],ss[4]);}程序的运行结果是()。

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

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

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

47.以下程序的输出结果是______。#include<stdio.h>#include<string.h>fun(char*w,intn){chart,*s1,*s2;s1=w;s2=w+n-1;while(s1<s2){t=*s1++;*s1=*s2-;*s2=t;}}main(){char*p;p="1234567";fun(p,strlen(p));puts(p);}

A.1234567B.7654321C.1711717D.7177171

48.在一个C语言程序中A.main()函数必须出现在所有函数之前

B.main()函数可以在任何地方出现

C.main()函数必须出现在所有函数之后

D.main()函数必须出现在固定位置

49.有以下程序main(){inta=3,b=4,c=5,d=2;if(a>B)if(b>C)printf("%d",d+++1);elseprintf("%d",++d+1);printf("%d\n",D);}程序运行后的输出结果是

A.2B.3C.43D.44

50.以下不能正确进行字符串赋初值的语句是

A.charstr[5]=“good!”;

B.charstr[]=“good!”;

C.char*str=“good!”;

D.charstr[5]={'g','o','o','d'};

51.下面四个选项中,均是不合法的用户标识

温馨提示

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

评论

0/150

提交评论