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

下载本文档

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

文档简介

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

一、单选题(20题)1.输入序列为ABC,可以变为CBA时,经过的栈操作为()。

A.push,pop,push,pop,push,pop

B.push,push,push,pop,pop,pop

C.push,push,pop,pop,push,pop

D.push,pop,push,push,pop,pop

2.某二叉树结点的中序序列为A、B、C、D、E、F、G,后序序列为B、D、C、A、F、G、E,该二叉树对应的层次遍历序列为()

A.E、G、F、A、C、D、B

B.E、A、C、B、D、G、F

C.E、A、G、C、F、B、D

D.E、G、A、C、D、F、B

3.下列语句中,说法正确的是______。

A.C程序书写格式严格,每行只能写一个语句

B.C程序书写格式严格,每行必须有行号

C.C程序书写格式自由,每行可以写多条语句,但之间必须用逗号隔开

D.C程序书写格式自由,一个语句可以分写在多行

4.结构化程序的3种基本控制结构是()。

A.递归、堆栈和队列B.过程、子程序和函数C.顺序、选择和重复D.调用、返回和转移

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

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

6.

7.算法具有五个特性,以下选项中不属于算法特性的是_____。A.有穷性B.简洁性C.可行性D.确定性

8.数据流图(DFD)的作用是()。

A.描述软件系统的控制流B.支持软件系统的功能建模C.支持软件系统的面向对象分析D.描述软件系统的数据结构

9.有以下程序:

程序运行后的输出结果是()。A.AaB.AbC.abD.Ba

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

A.++p->xB.pt->xC.*pt->yD.(pt++)->x

11.有以下程序voidf(int*x,int*y){intt;t=*x;*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i++)printf("%d,",a[i]);}程序运行后的输出结果是

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

B.5,6,7,8,1,2,3,4,

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

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

12.有以下程序intf(intA){returna%2;}main(){ints[8]={1,3,5,2,4,6),i,d=0;for(i=0;f(s[i];i++)d+=s[i];printf("%d\n",D);}程序运行后的输出结果是

A.9B.11C.19D.21

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

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

14.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是()。A.大写字母B.下划线C.数字字符D.连接符

15.请问对一个排好序的数组进行查找,时间复杂度为()

A.O(n)B.O(lgn)C.O(nlgn)D.O(1)

16.下面不属于需求分析阶段任务的是()。

A.确定软件系统的功能需求B.确定软件系统的性能需求C.制定软件集成测试计划D.需求规格说明书评审

17.在关系代数运算中,有5种基本运算,它们是()。

A.并(∪)、差(-)、交(∩)、除(÷)和笛卡儿积(×)

B.并(∪)、差(-)、交(∩)、投影(π)和选择(σ)

C.并(∪)、交(∩)、投影(π)、选择(σ)和笛卡儿积(×)

D.并(∪)、差(-)、投影(π)、选择(σ)和笛卡儿积(×)

18.在待排序文件已基本有序的前提下,下述排序方法中效率最高的是()。

A.直接插入排序B.直接选择排序C.快速排序D.二路归并排序

19.

20.判定一个顺序栈st(最多元素为MaxSize)为满的条件是()。A.st->top!B.st->top!C.top==-1D.top==MaxSize

二、2.填空题(20题)21.下面程序的运行结果是【】。

intf(inta[],intn)

{if(n>1)returna[0]+f(&a[1],n-1);

elsereturna[0];

}

main()

{intaa[3]={1,2,3},s;

s=f(&aa[0],3);

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

}

22.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体"项目主管"与实体"项目"的联系属于【】的联系。

23.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【】。

24.常用的黑箱测试有等价分类法、【】、因果图法和错误推测法4种。

25.下列程序的输出结果是【】。

main()

{inti;

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

{if(i>4)

{printf("%d\n",i);

break;}

printf("%d\n",i++);}}

26.在运算过程中,能够使空表与非空表的运算统一的结构是【】。

27.诊断和改正程序中错误的工作通常称为【】。

28.数据结构分为线性结构和非线性结构,带链的队列属于[]。

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

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

main()

{intx=0;

sub(&x,8,1);

printf(“%d\n”,x);

}

sub(int*a,intn,intk)

{if(k<=n)sub(a,n/2,2*k);

*a+=k;

}

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

voidfun()

{staticinta=0;

a+=2;printf("%d",a);

}

main()

{intcc;

for(cc=1;cc<4;cc++)fun();

printf("\n");

}

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

fun(intx,inty,intz)

{z=x*x+y*y;}

main()

{inta=31;

fun(6,3,a)

printf("%d,a)

}

33.以下程序中函数huiwen的功能是检查一个宁符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出。所谓回文即正向与反向的拼写都一样,例如:adgda。请填空______。

#include<string.h>

chat*huiwen(chat*str)

{char*p1,*p2;inti,t=0;

p1=str;p2=【】;

for(i=0;i<=strlen(str)/2;i++)

if(*p1++!=*p2--){t=1;break;}

if(!t或t!=0)return("yes!");

elsereturn("no!");

}

main()

{charstr[50];

printf("Input:");scanf("%s",str);

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

}

34.以下函数的功能是【】。

floatav(a,n)

floata[];

intn;

{inti;floats;

for(i=0,s=0;i<n;i++)s=s+a[i];

returns/n;}

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

main()

{inta+,b=2,C=3,t=0;

ifa<B){t=a;a=b;b=t;}

ifa<C){t=a;a=c;c=t;}

printf("%d,%d,%dln",a,b,C);

}

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

37.若fp已正确定义为一个文件指针,d1.dat为二进制文件,请填空,以便为“读”而打开此文件:

fp=fopen(【】);。

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

voidde1ete(chars[],inti,intn)

{intj,k,length=O;

whi1e(s[length])

【】

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

whi1e(k<length)

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

s[j]='\0;}

39.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于______。

40.数据库系统在其内部分为三级模式,即概念模式、内模式和外模式。其中,【】给出了数据库物理存储结构和物理存取方法。

三、1.选择题(20题)41.有以下程序:#include<stdio.h>ihtfun(ihtn,int*p){intf1,f2;if(n==1||,n==2)*p=1;else{fun(n-1,&f1);fun(n-2,&f2);*p=f1+f2;}}main(){ints;fun(3,&s);printf("%d\n",s);}程序的运行结果是______。

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

42.软件生命周期中花费费用最多的阶段是

A.详细设计B.软件编码C.软件测试D.软件维护

43.对线性表进行二分法查找,其前提条件是()

A.线性表以顺序方式存储,并已按关键码值排好序

B.线性表以顺序方式存储,并已按关键码值的查找频率排好序

C.线性表以链接方式存储,并已按关键码值排好序

D.线性表以链接方式存储,并已按关键码值的查找频率排好序

44.一个汉字的机内码在计算机内部需用2个字节存储,每个字节的最高位是()

A.0和0B.0和1C.1和0D.1和1

45.有以下程序#include<stdio.h>#include<string.h>voidfun(char*s[],intn){char*t;inti,j;for(i=0;i<n-1;++)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[]={"bcc

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

46.下列选项中不合法的+六进制数是()。

A.OxffB.OXllC.OxlgD.OXabc

47.有以下程序:main(){char*p[]={"3697","2584"};inti,j;longnum=0;for(i=0;i<2;i++){j=0;while(p[i][j]!='\0'){if((p[i][j]-'0')%2)num=10*num+p[i][j]-'0';j+=2;}}printf("%d\n",num);}程序执行后的输出结果是()。

A.35B.37C.39D.3975

48.请读程序:#include<stdio.h>#include<string.h>main(){char*s1="AbCdEf",*s2="aB";s1++;s2++;printf("%d\n",strcmp(s1,s2));}上面程序的输出结果是______。

A.正数B.负数C.零D.不确定的值

49.若有以下定义:chara;intb;floatc;doubled;则表达式a*b+d-c值的类型为()

A.floatB.intC.charD.double

50.有以下程序:#include<stdio.h>#include<strine.h>structSTU{charname[10];inthum;};voidf(char*name,ihtnum){structSTUs[2]={{"SunDan",20044},{"Penghua",20045}};num=s[0].nnm;strepy(name,s[0],name);}main(){structSTUs[2]={{"YangSan",20041},{"LiSiGao",20042}},*P;p=&s[1];f(p->name,p->hum);printf("%s%d\n",p->name,p->num);}程序运行后的输出结果是()。

A.SunDan20042B.SunDan20044C.LiSiGuo20042D.YangSan20041

51.下列程序的运行结果是()。main(){intx=1,y=3,a=0;while(x++!=(y-=1)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}

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

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

A.ABCDDEFEDBDB.abcDDfefDbDC.abcAMefAbAD.Abcddfefdbd

53.有以下程序main(){char*s[]={"one","two","three"},*P;p=s[1];printf("%c,%s\n",*(p+1),s[0]);}执行后输出结果是

A.n,twoB.t,oneC.w,oneD.o,two

54.下列可用于C语言用户标识符的一组是()。

A.void,define,WORD

B.a3_3,_123,Car

C.For,-abc,IFCase

D.2a,DO,sizeof

55.下面程序段的运行结果是()。char*p="abcdefgh";p+=3;printf("%d\n",stfien(strcpy(p,"ABCD")));

A.8B.12C.4D.7

56.设x=015,则x=x^017的值是()。

A.EOFB.-1C.非零值D.0

57.以下不能定义为用户标识符的是()。

A.scanfB.VoidC.3comD.int

58.以下程序的输出结果是main(){inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=2;case1:case2:a+=3;default:a+=5;}}printf(“%d\n”,A);}

A.31B.13C.10D.20

59.下列程序的输出结果是

#include"stdio.h"

#defineN3

#defineM3

voidfun(inta[M][N])

{printf("%d\n",*(a[1]+2));}

main()

{inta[M][N];

inti,j;

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

for(j=0;j<N;j++)

a[i][j]=i+j-(i-j);

fun(a);}

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

60.定义int*swap()指的是______。

A.一个返回整型值的函swap()

B.—个返回指向整型值指针的swap()

C.一个指向函数swap()的指针,函数返回一个整型值

D.以上说法均错

四、选择题(20题)61.设有定义

62.对字符数组s赋值,不合法的一个是()。

A.chars[]="Beijing"

B.chars[20]={"Beijing"}

C.chars[20];s="Beijing"

D.chars[20]={’B,’e’,’i’,’j’,’i’,’n’,’g’}

63.

数字字符0的ASCII值为48,运行以下程序的输出结果是()。

main

(chara=1,b=2;

printf("%C,",b++);printf("%d\n",b—a);}

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

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

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

65.有以下程序:

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

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

66.下列关于结构化设计原则的描述,错误的是

A.在块和进程的非正常出口处往往需要调用GOTO语句,使用GOTO语句使程序执行效率提高,但是滥用GOTO语句确实有害,应该避免使用GOTO语句

B.程序设计时应该自顶向下,逐步求精

C.程序设计时,应该将复杂问题进行模块化,就是将程序设计的总目标分解为若干个分目标,再进一步分解为具体的小目标

D.在进行程序设计时,应该尽量在一行写一条语句,尽量做到效率第一,清晰第二

67.

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

A.用C语言编写的程序只能放在一个程序文件中

B.C程序书写格式严格,要求一行内只能写一个语句

C.C程序中的注释只能出现在程序的开始位置和语句的后面

D.C程序书写格式自由,一个语句可以写在多行上

69.如已定义X和Y为double类型,则表达式X=1,y=x+5/2的值是()。

A.2B.3.0C.3D.3.5

70.以下选项中与

71.

72.若变量已正确定义并赋值,以下符合C++语言语法的表达式是()。

A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b

73.

74.

75.软件生命周期中,花费最多的阶段是()。

A.详细设计B.软件编码C.软件测试D.软件维护

76.设有如下定义:

若要使P指向data中的n域,正确的赋值语句是()。

A.

B.

C.

D.

77.

78.若x是int型变量,且有下面的程序片段:

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

A.

B.

C.

D.

79.有以下程序(说明:字母A的AscII值是65)程序运行后的输出结果是()

A.YEB.BTC.YTD.BY

80.以下数组定义中错误的是()。

五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:求两个非零正整数的最大公约数,并作为函数值返回。例如,若num1和num2分别为49和21,则输出的最大公约数为7;若num1和num2分别为27和81,则输出的最大公约数为27。请改正程序中的错误,使它能得出正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.请编写函数proc,该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。

例如,若字符串数组中的M个字符串为:

ABCD

BCDEFG

CDEFGHI

则合并后的字符串内容应该是ABCDBCDEFGCDEF—GHl。

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

#defineM3

#defineN20

voidproc(chararr[M][N],char*b)

{}

voidmain

{

charstr[M][N]={"ABCD","BCDEFG","

CDEFGHI"},i;

chararr[100]={"#############

#####");

printf("Thestring:\n");

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

puts(str[i]);

printf("\n");

proc(str,arr);

printf("TheAstring:\n");

printf("%s",arr);

printf("\n\n");

}

参考答案

1.B

2.C

3.D

4.C1966年Boehm和Jacopini证明了程序设计语言仅仅使用顺序、选择和重复3种基本控制结构就足以表达出各种其他形式结构的程序设计方法。本题答案为C选项。

5.B

6.D

7.B解析:一个算法应当具有以下5个特性:有穷性;确定性;可行性;有零个或多个输入;由一个或多个输出.简洁性不属于这5个特性,所以本题应该选择B。

8.B数据流图是系统逻辑模型的图形表示,从数据传递和加工的角度,来刻画数据流从输入到输出的移动变化过程,它直接支持系统的功能建模。本题答案为B选项。

9.B函数fun将形参b赋给形参a,使得a和b都指向原b所指向的地址,然后对该地址的值执行自增1;main函数中p1指向ch1,p2指向ch2。通过fun函数的调用,将ch2的值完成自增1,字符’a’自增1后变成字符’b’,所以程序输出:Ab。本题答案为B选项。

10.A题目中定义了一个结构体数组c并初始化,指针pt指向c的第1个元素。则“++pt->x”为11,“pt->x”为10,“*pt->y”为1,“(pt++)->x”为20。故本题答案为A选项。

11.D解析:本题考查循环和指针做函数参数,程序的功能是将a[0]和a[7]对换,a[1]和a[6]对换,a[2]和a[5]对换,a[3]和a[4]对换,最后输出。

12.A解析:本题考核的知识点是一维数组的定义,初始化和数组中元素的引用。函数f()的作用是形参a为偶数的时候返回0,主函数中首先定义了一个长度为8的一维数组,然后给它赋初值使得s[0]=1、a[1]=3、s[2]=5、s[3]=2、s[4]=4、s[5]=6.其他没有赋值的数组元素将自动赋值为0。for循环中,当s[1]不为偶数的时,将s[i]相加,即当i=3时,s[i]=2为偶数,退出循环,此时d的值为d=s101+s[1]+s[2]=1+3+5=9,因此最后输出的d的值为9。所以,4个选项中选项A符合题意。

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

14.D[解析]C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。所以D)选项中的连接符不合法。

15.B

16.C【答案】:C

【知识点】:需求分析阶段的任务

【解析】:需求分析阶段的任务是深入描述软件的功能和性能,确定软件设计的约束和软件同其他系统元素的接口细节,定义软件的其他有效性需求,借助于当前系统的逻辑模型导出目标系统逻辑模型,解决目标系统“做什么”的问题。可分为需求提出、需求描述及需求评审三个阶段。从此可以看出需求分析的任务不包括制定软件集成测试计划,故选C。

17.D解析:关系代数运算的基本运算符有4类:集合运算符、专门的关系运算符、算术运算符和逻辑运算符。并、差、笛卡儿积、投影、选择是5种基本的运算,其他运算可以通过基本的运算导出。

18.C

19.D

20.D

21.66解析:经过分析将递归函数写成其数学表达式如下:

本题中定义了一个长度为3的数组aa并初始化。接着调用递归函数f,由上面的数学表达式以计算其返回值s=1+2+3=6,所以空格处应该填6。

22.一对多(或1∶N)一对多(或1∶N)解析:两个实体集间的联系实际上是实体集间的函数关系,这种函数关系可以有3种,即一对一(1∶1)的联系、一对多(1∶N)或多对一(N∶1)的联系和多对多(N∶N)的联系。

23.可重用性继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。

24.边值分析法边值分析法解析:本题考查了黑箱测试的方法。黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价分类法、边值分析法、因果图法和错误推测法。

25.1351\r\n3\r\n5解析:本题考查了for循环语句的使用,break语句用在本题中是结束for循环直接跳出循环体外。当i=1时,因为if语句条件不满足,所以直接执行printf('%d\\n',i++);输出1,同时i自加1;执行第二次for循环时,i=3;同样的if语句条件不满足,所以直接执行printf('%d\\n',i++);输出3,同时i自加1;执行第三次for循环时,i=5,if语句条件满足,所以执行printf('%d\\n',i),输出5,然后break语句跳出了for循环。

26.循环链表循环链表解析:在链表的运算过程中,采用链接方式即循环链表的结构把空表与非空表的运算统一起来。循环链表具有两个特点:①在循环链表中增加了一个表头结点,其数据域为任意或根据需要来设置,指针域指向线性表的第一个元素的结点。循环链表的头指针指向表头结点。②循环链表中最后一个结点的指针不是空,而是指向表头结点。

27.程序调试程序调试解析:程序调试的任务是诊断和改正程序中的错误。程序调试与软件测试不同,软件测试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于调试工具找出软件错误的具体位置。软件测试贯穿整个软件生命期,而调试主要在开发阶段。

28.线性结构线性结构解析:与栈类似,队列也是线性表,也町以采用链式存储结构。

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

30.77解析:在主函数中定义了一个变量x并赋初值0,然后执行函数调用语句,该语句的执行过程为sub(&x,8,1)调用sub(&a,4,2),sub(&a,4,2)调用sub(&a,2,4),sub(&a,2,4)中由于2<4,所以if后面括号里的判断为假,递归结束,执行其后的*a+=k;语句此时x=x+k=0+4=4,回退到上一层调用函数sub(&x,4,2)中,执行后面的语句,x=x+k=4+2=6,再回推到最上一层调用函数sub(&x,8,1)执行后面的语句,x=x+k=6+1=7,所以最后输出7。

31.246

32.3131解析:在函数调用时,形参值和改变,不会改变实参的值。

33.str+strlen(str)-1str+strlen(str)-1解析:先从main函数开始看,它先读入字符串,接下来肯定是要判断这个字符串是否是回文,冉看huiwen函数,它的主要思想是用p1指向字符串的首地址,p2指向字符串的尾地址(不包括结束符‘/0‘),将p1左移,p2右移,直到这两个指针相遇,如果在移动过程中发现p1!=p2,则该字符串不是回文,否则其是同文。因此。在空中填str+strlen(str)-1。

34.求出数组元素平均值求出数组元素平均值解析:函数有一个数组形参a和一个整型形参n。函数首先用循环求数组a的前n个元素和,然后将和除以n。即求数组元素的平均值。

35.3123,1,2解析:分析程序,第一个if句,a=1,b=2,控制条件a<b成立,则交换a、b的值,此时a=2,b=1。第二个if语句,a=2,c=3,控制条件a<c成立,则交换a、c的值,此时a=3,c=2。

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

37.d1.dat"rb"d1.dat,'rb'解析:打开文件的函数为fopen('文件名','mode'),其中'mode'表示文件的打开方式。如果打开的是二进制文件,其mode字符串可以是:'rb'、'wb'、'ab'、'rb+'、'wb+'、'ab+'。'r'表示以只读方式打开。'w'表示以写方式打开,如果已存在该文件名的文件,文件中的内容将被清空。若文件名不存在,则将创建该文件。'a'为追加方式打开。若文件存在时,将打开这个文件并且在文件的末尾进行追加。当文件不存在,将创建新文件。'r+'打开一个已存在文件用于更新(可读可写)。\'w+'创建一个新文件用于更新,如果文件存在,文件被重写(可读可写)。'a+'打开用于追加,当文件不存在时,创建新文件,并在文件末尾进行追加(可读可写)。根据题意,应该填'd1.dat','rb'。

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

39.线性结构线性结构解析:数据的逻辑结构是指数据元素之间的逻辑关系,分为线性结构和非线性结构。常见的线性结构有线性表、栈和队列等,常见的非线性结构有树、二叉树等。

40.内模式内模式解析:内模式又称为物理模式,它给出了数据库物理存储结构与物理存取方法。

41.A解析:本题考查的重点是理解递归函数。fun()为递归函数,递归结束条件时n为1或2,从而fun(3,&s)得fun(2,&s)+fun(1,&s)=1+1=2,因此选项A是正确的。

42.D解析:软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。本题中,详细设计、软件编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。

43.A解析:二分法查找是一种线性表查找方法,其基本方法是:首先要用要查找的关键码与线性表中间位置结点的关键码值进行比较,这个中间结点把线性表分为两个子表,比较相等则查找完毕,不等则根据查找结果确定下一步的查找应该在哪一个子表中进行,如此下去,直到找到满足条件的结点,或者确定表中没有这样的结点。二分查找法应用的前提是顺序存储并且已经排好序,这是由该法的实现思想决定的。

44.D

45.A解析:函数fun(char*s[],intn)的功能是对字符串数组的元素按照字符串的长度从小到大排序。在主函数中执行fun(ss,5)语句后,*ss[]={'xy','bcc','bbcc','aabcc','aaaacc'},ss[0],ss[4]的输出结果为xy,aaaacc。

46.C解析:+六进制是以“0x”或“0X”开头的字符串,字符串中只能含有0~9这10个数字和a、b、c、d、s、f这6个字母。

47.C解析:通过赋值表达式指针数组*p[]等价于数组p[2][4];表达式“p[i][j]-'0'”可用来表示该字符数组元素的数值,故表达式“(p[i][j]-'0')%2”为判断该字符数组元素的数值的奇偶性,表达式“num=10*num+p[i][j]-'0'”中的数值运算表示直接加该字符数组元素的数值。

48.A解析:本题考查字符串比较函数strcmp()的应用。strcmp(s1,s2)是中比较函数,当s1>s2时返回值为正数,当s1<s2时返回值为负数,当s1=s2时返回值为零。本题中s1,s2分别表示两个串中第一个字符的地址,s1++和s2++是将指针指向串的第二个字符,指针变量s1指向的是串“bCdEf”的首地址,即字符b的地址,而指针变量s2指向的是字符'B'的地址。而在字符串比较中,宁符串大小的确定是各个字符串相应位置字符的ASCII码值的大小决定的,字符'B'的ASCII码值为66,字符“b”的ASCII码值为98,所以s1>s2,返回值为正数。

49.D基本类型的数据可以混合运算,但运算时,对要求运算分量类型相同的运算来说,如运算分量的类型不是全相同,则会有自动类型转换发生。类型自动转换规则规定类型低(简单)的向类型高(复杂)的转换。各类型由高到低的排列顺序是:longdouble、float、unsignedlong、long、unsignedint、int这样,若有定义:chara;intb;floatc;doubled;则表达式a*b+d-c的值的类型是double的。首先计算a*b,得到int类型的值,接着计算a*b+d,得到double类型的值,最后计算a*b+d-c,得到double类型的值。所以解答是D。

50.A解析:main函数中将定义的结构体类型指针变量p指向结构体类型数组s[1],通过调用函数f改变了指针变量p所指向的结构体中成员变量name的值,但并未改变其num的值。这是因为函数f中的形参name是一个字符型指针变量,它指向了main函数中指针变量p所指向的结构体的成员变量name,所以对函数f中的形参*name的改变也就对main函数中p->name的改变,而函数f中对形参num的改变不会影响main函数中p-?num的值,因为此时传递给num的是一个值,而不是地址。

51.D解析:本题考查while循环。第一次循环,先拿x的值和(y-1)比较,此时x=1,y-1=2,循环条件成立,比较完将x的值加1,此时x=2,进入循环,a=a+1=1,判断if语句的控制条件是否成立,y<x不成立,接着执行下一次循环。第二次循环,先拿x的值和(y-1)比较,此时x=2,y-1=1,循环条件成立,比较完将x的值加1,此时x=3,进入循环,a=a+1=2,判断if语句的控制条件是否成立,y<x成立,执行break语句退出循环。

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

53.C解析:本题考核的知识点是指针数组。本崽首先定义了一个有3个元素的指针数组s,并遭过赋值使s[0]指向字符串“one”s[1]指向字符串“two”,s[2]指向字符串“three”,然后通过赋值语句“p=s[1]”,使p指向了字符串“two”,故”(p+1)”就是字符“w”。所以,C选项为所选。

54.B解析:C语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线,排除选项C)和D);C语言中还规定标识符不能为C语言的关键字,而选项A)中void为关键字,故排除选项A)。

55.C解析:p+=3使指针p指向字符'd',函数strcpy的功能是把后面的字符串复制到p指针指向的空间;strlen函数的功能是求字符串的长度,并返回字符个数,不计最后的'\\0'。本题结果为4,即字符串“ABCD”的长度。

56.D解析:文件状态检测函数feof(fp)的功能:测试所指的文件的位置指针是否已达到文件尾,如果已到达文件尾,则函数返回非0值;否则返回0,表示文件尚未结束。

57.D解析:标识符是C语言中用来表示变量名、数组名、函数名、指针名、结构名、联合名、枚举常数名、用户定义的数据类型名、语句标号等用途的字符序列。标识符由1~32个字符组成,第一个字符必须是字母或下划线,后面的字符可以是字母、数字或下划线。标识符不能与C关键字相同,并区分大小写。选项D)错误,因为int是C语言中的关键字。

58.A解析:switch语句的执行过程是:在switch后面的表达式的值和case后面常量表达式的值吻合时,就执行该case分支的语句。如果在该语句的后面没有break语句,则按顺序继续执行下一个case分支,直到遇到break语句或switch多分支语句结束,在switch语句中,break语句的作用是使流程跳出switch结构,终止switch语句的执行。在本题中,因为每个case语句后面都没有break语句,所以,第一轮循环(i==1)执行过后a的值为8,第2轮(i==2)执行过后a的值为16,第3轮(i==3)执行过后a的值为26,第4轮(i==4)执行过后a的值为31,然后执行“i++”语句,这时循环条件为假,循环结束。

59.B解析:若有以下定义:inta[3][4],i,j;且当0<=i<3,0<=j<4,则可以有以下几种方式来引用数组中的第i行,第j列的元素:a[i][j],*(a[i]+j),*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。

60.B解析:一个函数可以带回一个整型值、字符值、实型值等,但也可以带回指针型数据,即地址。本题的定义中,包括括号和*号,由于()优先级高于*。故它是—个返回整型指针的函数。

61.A*(s+3)指针后移3个单位,为a[31的值。答案选择A)。

62.C数组赋值时,字符串常量给出的是这个字符串在内存中所占存储单元的首地址,而s是一个不可重新赋值的数组名,所以此赋值不合法。

63.C

\nb++是先用表达式的值然后自增l,因此表达式值为2,b为3;b-a=3-1=2,因此最后输出的结果为2,2,前一个为字符2,后一个为数字2。

\n

64.A逻辑或”I|”要求只要两边的运算对象有一个非零,结果就为真。虽然不知道a的值,但是若a为1,则左边运算对象为1;若a的值不是1,则右边运算对象的值为1,所以总能保证一边非零,所以结果为真,即1。

65.B结构体变量可以作为函数的参数和返回值。作为函数的实参时,可以实现函数的传值调用。当使用结构体变量作为函数的形参时,实参也应该是结构体变量名以实现传值调用,实参将拷贝副本给形参,在被调用函数中改变形参值对于调用函数中的实参没有影响。所以选择B。

66.D在结构化程序设计过程中,我们可以根据下面的原则进行:

(1)使用语言中的顺序结构、选择结构、循环结构等有限的基本控制结构表示程序逻辑。

(2)选用的控制结构只准许有一个入口和一个出口。

(3)复杂结构应该用基本控制结构进行组合嵌套来实现。

(4)语言中没有的控制结构可以用一段等价的程序段来模拟,但是要求程序段在整个系统中前后一致。

(5)严格限制GOTO语句。

(6)在编写程序时,强调使用几种基本的控制结构,通过组合嵌套,形成程序的控制结构。

(7)在程序设计过程中,尽量采用自顶向下和逐步细化的原则,由粗到细,一步步展开。把一个模块的功能逐步分解,细化为一系列具体的步骤,进而翻译成一系列用某种程序设计语言写成的源程序。

总之,在结构化程序设计的过程中,要将清晰放在第一位。因此,本题中的答案D是不正确的。

67.B

68.DC语言编写的程序可以放置于多个程序文件中,所以A错误。C程序中的一行可以有多条语句,所以B错误。C语言中的注释语句可以与原语句放在一行也可以不放在一行,所以C错误。

69.B题目中定义变量x和y为双精度double类型,根据给定算数表达式的优先级应先计算5/2,结果为2,将值代入后,由x和y的数据类型得出y为3.0。整个逗号表达式的值为后面y=x+5/2的值,所以选择B)。

70.A如果a==1则执行a=b;否则a++;选项A)不符,所以选择A)。

71.C

72.B解析:a=b=c+2实际上相当于a=(b=c+2),进而可分解为两个表达式:b=c+2和a=b。注意:选项A)中包含一个不合法的运算符“:=”;选项C)应改为(int)18.5%3;选项D)可理解为两个表达式:a+7=c+b和a=a+7,其中第一个是错的,因为C++语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。注意:C++语言赋值语句的运用,

73.C

74.A

75.D本题考查对软件生命周期的理解,软件生命周期整体上可分为定义阶段、开发阶段和维护阶段。其中定义阶段包括可行性研究与计划制订和需求分析;开发阶段包括概要设计、详细设计、开发和测试;维护阶段是一个单独阶段,不包含在开发阶段内,它是所花费用最多的一个阶段。

76.C本题主要考查了结构体变量引用成员数据的方法,主要有以下两种:结构体变量名.成员名或结构体指针_>成员名。

77.D

78.D

79.Afun函数输出ASCIl码值为奇数的字符,所以答案选择A)。

80.AA)选项dPx[2][31定义的是一个2行3列的二维数组,而在给数组元素赋值时却赋成了3行,因此错误。

81.

【解析】本题是考查常用的求最大公约数的算法,其过程是设两数为a、b,若a大于b.则用a除以b,否则用b除以a,用除得的余数再去除以除数,再得到一个余数,一直除下去,直到余数为0,即可求出最大公约数。要实现变量a、b互换,应该使用t=a;a=b;b=t;,此处t为中问变量;返回值为最大公约数,因此应返回除数b,而不是a。

82.\n\tvoidproc(chararr[M][N],char*b)

\n{

\ninti,j,k=0;

\nfor(i=0;i<M;i++)//i表示其行下标

\nfor(j=0;.rr[i][j]!=\0;j++)//由于每行的个数不等,因此用a[i][j]!=\0来作为循环结束的条件

\nb[k++]=arr[il[j];//把二维数组中的元素茄到b的一维数组中,

\nb[k]=\0;//最后把b赋\0作为字符串结束的标志

\n}

\n【解析】字符串数组中每一行都是一个一个完整的字符串,其结束标志为\0。因此,通过字符串的结束标志来判断每一个字符串是否结束,将字符串数组中的所有字符串均赋值新的一维数组b来完成字符串的合并。\n2021-2022年河北省邢台市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.输入序列为ABC,可以变为CBA时,经过的栈操作为()。

A.push,pop,push,pop,push,pop

B.push,push,push,pop,pop,pop

C.push,push,pop,pop,push,pop

D.push,pop,push,push,pop,pop

2.某二叉树结点的中序序列为A、B、C、D、E、F、G,后序序列为B、D、C、A、F、G、E,该二叉树对应的层次遍历序列为()

A.E、G、F、A、C、D、B

B.E、A、C、B、D、G、F

C.E、A、G、C、F、B、D

D.E、G、A、C、D、F、B

3.下列语句中,说法正确的是______。

A.C程序书写格式严格,每行只能写一个语句

B.C程序书写格式严格,每行必须有行号

C.C程序书写格式自由,每行可以写多条语句,但之间必须用逗号隔开

D.C程序书写格式自由,一个语句可以分写在多行

4.结构化程序的3种基本控制结构是()。

A.递归、堆栈和队列B.过程、子程序和函数C.顺序、选择和重复D.调用、返回和转移

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

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

6.

7.算法具有五个特性,以下选项中不属于算法特性的是_____。A.有穷性B.简洁性C.可行性D.确定性

8.数据流图(DFD)的作用是()。

A.描述软件系统的控制流B.支持软件系统的功能建模C.支持软件系统的面向对象分析D.描述软件系统的数据结构

9.有以下程序:

程序运行后的输出结果是()。A.AaB.AbC.abD.Ba

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

A.++p->xB.pt->xC.*pt->yD.(pt++)->x

11.有以下程序voidf(int*x,int*y){intt;t=*x;*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i++)printf("%d,",a[i]);}程序运行后的输出结果是

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

B.5,6,7,8,1,2,3,4,

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

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

12.有以下程序intf(intA){returna%2;}main(){ints[8]={1,3,5,2,4,6),i,d=0;for(i=0;f(s[i];i++)d+=s[i];printf("%d\n",D);}程序运行后的输出结果是

A.9B.11C.19D.21

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

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

14.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是()。A.大写字母B.下划线C.数字字符D.连接符

15.请问对一个排好序的数组进行查找,时间复杂度为()

A.O(n)B.O(lgn)C.O(nlgn)D.O(1)

16.下面不属于需求分析阶段任务的是()。

A.确定软件系统的功能需求B.确定软件系统的性能需求C.制定软件集成测试计划D.需求规格说明书评审

17.在关系代数运算中,有5种基本运算,它们是()。

A.并(∪)、差(-)、交(∩)、除(÷)和笛卡儿积(×)

B.并(∪)、差(-)、交(∩)、投影(π)和选择(σ)

C.并(∪)、交(∩)、投影(π)、选择(σ)和笛卡儿积(×)

D.并(∪)、差(-)、投影(π)、选择(σ)和笛卡儿积(×)

18.在待排序文件已基本有序的前提下,下述排序方法中效率最高的是()。

A.直接插入排序B.直接选择排序C.快速排序D.二路归并排序

19.

20.判定一个顺序栈st(最多元素为MaxSize)为满的条件是()。A.st->top!B.st->top!C.top==-1D.top==MaxSize

二、2.填空题(20题)21.下面程序的运行结果是【】。

intf(inta[],intn)

{if(n>1)returna[0]+f(&a[1],n-1);

elsereturna[0];

}

main()

{intaa[3]={1,2,3},s;

s=f(&aa[0],3);

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

}

22.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体"项目主管"与实体"项目"的联系属于【】的联系。

23.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【】。

24.常用的黑箱测试有等价分类法、【】、因果图法和错误推测法4种。

25.下列程序的输出结果是【】。

main()

{inti;

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

{if(i>4)

{printf("%d\n",i);

break;}

printf("%d\n",i++);}}

26.在运算过程中,能够使空表与非空表的运算统一的结构是【】。

27.诊断和改正程序中错误的工作通常称为【】。

28.数据结构分为线性结构和非线性结构,带链的队列属于[]。

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

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

main()

{intx=0;

sub(&x,8,1);

printf(“%d\n”,x);

}

sub(int*a,intn,intk)

{if(k<=n)sub(a,n/2,2*k);

*a+=k;

}

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

voidfun()

{staticinta=0;

a+=2;printf("%d",a);

}

main()

{intcc;

for(cc=1;cc<4;cc++)fun();

printf("\n");

}

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

fun(intx,inty,intz)

{z=x*x+y*y;}

main()

{inta=31;

fun(6,3,a)

printf("%d,a)

}

33.以下程序中函数huiwen的功能是检查一个宁符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出。所谓回文即正向与反向的拼写都一样,例如:adgda。请填空______。

#include<string.h>

chat*huiwen(chat*str)

{char*p1,*p2;inti,t=0;

p1=str;p2=【】;

for(i=0;i<=strlen(str)/2;i++)

if(*p1++!=*p2--){t=1;break;}

if(!t或t!=0)return("yes!");

elsereturn("no!");

}

main()

{charstr[50];

printf("Input:");scanf("%s",str);

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

}

34.以下函数的功能是【】。

floatav(a,n)

floata[];

intn;

{inti;floats;

for(i=0,s=0;i<n;i++)s=s+a[i];

returns/n;}

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

main()

{inta+,b=2,C=3,t=0;

ifa<B){t=a;a=b;b=t;}

ifa<C){t=a;a=c;c=t;}

printf("%d,%d,%dln",a,b,C);

}

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

37.若fp已正确定义为一个文件指针,d1.dat为二进制文件,请填空,以便为“读”而打开此文件:

fp=fopen(【】);。

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

voidde1ete(chars[],inti,intn)

{intj,k,length=O;

whi1e(s[length])

【】

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

whi1e(k<length)

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

s[j]='\0;}

39.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于______。

40.数据库系统在其内部分为三级模式,即概念模式、内模式和外模式。其中,【】给出了数据库物理存储结构和物理存取方法。

三、1.选择题(20题)41.有以下程序:#include<stdio.h>ihtfun(ihtn,int*p){intf1,f2;if(n==1||,n==2)*p=1;else{fun(n-1,&f1);fun(n-2,&f2);*p=f1+f2;}}main(){ints;fun(3,&s);printf("%d\n",s);}程序的运行结果是______。

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

42.软件生命周期中花费费用最多的阶段是

A.详细设计B.软件编码C.软件测试D.软件维护

43.对线性表进行二分法查找,其前提条件是()

A.线性表以顺序方式存储,并已按关键码值排好序

B.线性表以顺序方式存储,并已按关键码值的查找频率排好序

C.线性表以链接方式存储,并已按关键码值排好序

D.线性表以链接方式存储,并已按关键码值的查找频率排好序

44.一个汉字的机内码在计算机内部需用2个字节存储,每个字节的最高位是()

A.0和0B.0和1C.1和0D.1和1

45.有以下程序#include<stdio.h>#include<string.h>voidfun(char*s[],intn){char*t;inti,j;for(i=0;i<n-1;++)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[]={"bcc

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

46.下列选项中不合法的+六进制数是()。

A.OxffB.OXllC.OxlgD.OXabc

47.有以下程序:main(){char*p[]={"3697","2584"};inti,j;longnum=0;for(i=0;i<2;i++){j=0;while(p[i][j]!='\0'){if((p[i][j]-'0')%2)num=10*num+p[i][j]-'0';j+=2;}}printf("%d\n",num);}程序执行后的输出结果是()。

A.35B.37C.39D.3975

48.请读程序:#include<stdio.h>#include<string.h>main(){char*s1="AbCdEf",*s2="aB";s1++;s2++;printf("%d\n",strcmp(s1,s2));}上面程序的输出结果是______。

A.正数B.负数C.零D.不确定的值

49.若有以下定义:chara;intb;floatc;doubled;则表达式a*b+d-c值的类型为()

A.floatB.intC.charD.double

50.有以下程序:#include<stdio.h>#include<strine.h>structSTU{charname[10];inthum;};voidf(char*name,ihtnum){structSTUs[2]={{"SunDan",20044},{"Penghua",20045}};num=s[0].nnm;strepy(name,s[0],name);}main(){structSTUs[2]={{"YangSan",20041},{"LiSiGao",20042}},*P;p=&s[1];f(p->name,p->hum);printf("%s%d\n",p->name,p->num);}程序运行后的输出结果是()。

A.SunDan20042B.SunDan20044C.LiSiGuo20042D.YangSan20041

51.下列程序的运行结果是()。main(){intx=1,y=3,a=0;while(x++!=(y-=1)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}

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

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

A.ABCDDEFEDBDB.abcDDfefDbDC.abcAMefAbAD.Abcddfefdbd

53.有以下程序main(){char*s[]={"one","two","three"},*P;p=s[1];printf("%c,%s\n",*(p+1),s[0]);}执行后输出结果是

A.n,twoB.t,oneC.w,oneD.o,two

54.下列可用于C语言用户标识符的一组是()。

A.void,define,WORD

B.a3_3,_123,Car

C.For,-abc,IFCase

D.2a,DO,sizeof

55.下面程序段的运行结果是()。char*p="abcdefgh";p+=3;printf("%d\n",stfien(strcpy(p,"ABCD")));

A.8B.12C.4D.7

56.设x=015,则x=x^017的值是()。

A.EOFB.-1C.非零值D.0

57.以下不能定义为用户标识符的是()。

A.scanfB.VoidC.3comD.int

58.以下程序的输出结果是main(){inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=2;case1:case2:a+=3;default:a+=5;}}printf(“%d\n”,A);}

A.31B.13C.10D.20

59.下列程序的输出结果是

#include"stdio.h"

#defineN3

#defineM3

voidfun(inta[M][N])

{printf("%d\n",*(a[1]+2));}

main()

{inta[M][N];

inti,j;

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

for(j=0;j<N;j++)

a[i][j]=i+j-(i-j);

fun(a);}

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

60.定义int*swap()指的是______。

A.一个返回整型值的函swap()

B.—个返回指向整型值指针的swap()

C.一个指向函数swap()的指针,函数返回一个整型值

D.以上说法均错

四、选择题(20题)61.设有定义

62.对字符数组s赋值,不合法的一个是()。

A.chars[]="Beijing"

B.chars[20]={"Beijing"}

C.chars[20];s="Beijing"

D.chars[20]={’B,’e’,’i’,’j’,’i’,’n’,’g’}

63.

数字字符0的ASCII值为48,运行以下程序的输出结果是()。

main

(chara=1,b=2;

printf("%C,",b++);printf("%d\n",b—a);}

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

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

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

65.有以下程序:

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

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

66.下列关于结构化设计原则的描述,错误的是

A.在块和进程的非正常出口处往往需要调用GOTO语句,使用GOTO语句使程序执行效率提高,但是滥用GOTO语句确实有害,应该避免使用GOTO语句

B.程序设计时应该自顶向下,逐步求精

C.程序设计时,应该将复杂问题进行模块化,就是将程序设计的总目标分解为若干个分目标,再进一步分解为具体的小目标

D.在进行程序设计时,应该尽量在一行写一条语句,尽量做到效率第一,清晰第二

67.

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

A.用C语言编写的程序只能放在一个程序文件中

B.C程序书写格式严格,要求一行内只能写一个语句

C.C程序中的注释只能出现在程序的开始位置和语句的后面

D.C程序书写格式自由,一个语句可以写在多行上

69.如已定义X和Y为double类型,则表达式X=1,y=x+5/2的值是()。

A.2B.3.0C.3D.3.5

70.以下选项中与

71.

72.若变量已正确定义并赋值,以下符合C++语言语法的表达式是()。

A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b

73.

74.

75.软件生命周期中,花费最多的阶段是()。

A.详细设计B.软件编码C.软件测试D.软件维护

76.设有如下定义:

若要使P指向data中的n域,正确的赋值语句是()。

A.

B.

C.

D.

77.

78.若x是int型变量,且有下面的程序片段:

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

A.

B.

C.

D.

79.有以下程序(说明:字母A的AscII值是65)程序运行后的输出结果是()

A.YEB.BTC.YTD.BY

80.以下数组定义中错误的是()。

五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:求两个非零正整数的最大公约数,并作为函数值返回。例如,若num1和num2分别为49和21,则输出的最大公约数为7;若num1和num2分别为27和81,则输出的最大公约数为27。请改正程序中的错误,使它能得出正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.请编写函数proc,该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。

例如,若字符串数组中的M个字符串为:

ABCD

BCDEFG

CDEFGHI

则合并后的字符串内容应该是ABCDBCDEFGCDEF—GHl。

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

#defineM3

#defineN20

voidproc(chararr[M][N],char*b)

{}

voidmain

{

chars

温馨提示

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

评论

0/150

提交评论