版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年河北省邯郸市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.以下叙述中错误的是()。
A.C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
B.C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件
C.用C语言编写的程序称为源程序,它以ASCII形式存放在一个文本文件中
D.C语言源程序经编译后生成扩展名为.obj的目标文件
2.折半查找的时间复杂性为()
A.O(n2)B.O(n)C.O(nlogn)D.O(logn)
3.若有定义floata[15],*p=a;,且数组a的首地址为300H,则p+13所指向的数组元素的地址为()。
A.334HB.30DHC.352HD.31AH
4.采用邻接表存储的图的广度优先遍历算法类似于二叉树的()。A.A.先序遍历B.中序遍历C.后序遍历D.按层遍历
5.为了使模块尽可能独立,要求_____。A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强
B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱
C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱
D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强
6.x>0&&x<=10的相反表达式为()。
A.x<=0||x>10B.x<=0&&x>10C.x<=0||x<=10D.x>0&&x>10
7.树最适合用来表示()。
A.有序数据元素B.无序数据元素C.元素之间具有分层次关系的数据D.元素间无联系的数据
8.
9.下列程序的运行结果是()。
#include<stdio.h>
main()
{intx=5,a=1,b=2,C=5,d=0;
if(a<B)
if(b!=3)
if(!C)
x=1;
else
if(D)x=1;
elsex=-1;
printf("%d",x);
}
A.-1B.0C.1D.不确定的值
10.实体联系模型中实体与实体之间的联系不可能是
A.一对一B.多对多C.一对多D.对零
11.
下列程序的输出结果是()。
#include<stdio.h>
main
{inta[2][3]={{1,2,3),{4,5,6)),(*p)[3],i;
p=a;
for(i=0;i<3;i++)
{if(i<2)
p[1][i]=p[1][i]-1;
else
p[1][i]=1;
}
printf("%d\n",a[o][1]+a[1][1]+a[1][2]);
}
A.8B.7C.12D.9
12.在深度为5的满二叉树叶中,叶子结点的个数为()。
A.32B.31C.16D.15
13.设"char**s;",以下正确的表达式是()。
A.s="computer";B.*s="computer";C.**s="computer";D.*s='c';
14.有以下程序:#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
15.若要求从键盘读入含有空格字符的字符串,应使用函数()。
A.getcharB.getcC.getsD.scanf
16.
17.设有如下定义:int(*ptr);则以下叙述中正确的是()。
A.ptr是指向一维组数的指针变量
B.ptr是指向int型数据的指针变量
C.ptr是指向函数的指针,该函数返回一个int型数据
D.ptr是一个函数名,该函数的返回值是指int型数据的指针
18.设有宏定义:#defineIsDIV(k,n)((k%n==1)?1:0)且变量m已正确定义并赋值,则宏调用:IsDIV(m,5)&&IsDIV(m,7)为真时所要表达的是A.判断m是否能被5或者7整除
B.判断m是否能被5和7整除
C.判断m被5或者7整除是否余1
D.判断m被5和7整除是否都余1
19.在决定选取何种存储结构时,一般不考虑()。
A.各结点的值如何B.结点个数的多少C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便
20.如果对线性表的操作只有两种,即删除第一个元素,在最后一个元素的后面插入新元素,则最好使用()。
A.只有表头指针没有表尾指针的循环单链表B.只有表尾指针没有表头指针的循环单链表C.非循环双链表D.循环双链表
二、2.填空题(20题)21.数据结构分为逻辑结构和存储结构,循环队列属于______结构。
22.数据结构包括数据的逻辑结构、数据的【】以及对数据的操作运算。
23.在具有n个单元、顺序存储的循环队列中,队满时,共有【】个元素。
24.下列程序的运行结果是______。
#definePOWER(x)((x)*(x))
main()
{inti=1;
primtf("%d,%d",POWER(i++),i);
}
25.一般来说,数据库的设计过程要经历3个大的阶段,即可行性分析与研究阶段、系统设计阶段、设计实施与系统运行阶段。概念设计、逻辑结构设计、物理结构设计属于数据库设计的【】阶段。
26.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是【】。
structstud
{charnum[6];
mts[4];
doubleave;
}a,*p;
27.下面程序的输出是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)
arr[i]=i;
for(i=1;i<4;i++)
k+=arr[i]+i;
printf("%d\n"k);}
28.以下程序的输出结果是______。
voidfun()
{staticinta=0;
a+=2;printf("%d",a);
}
main()
{intcc;
for(cc=1;cc<4;cc++)fun();
printf("\n");
}
29.以下程序调用函数swap将指针s和t所指单元(a和B)中的内容交换,请填空。main(){inta=10,b=20,*s,*t;s=&a;t=&b;()printf("%d%d",a,B);}swap(int*ss,int*tt){intte;te=*ss;*ss=*tt;*tt=te;}
30.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。
31.下面程序的功能是实现变量x、y内容交换,请填空。
#defineEXCHANGE(a,b,c){a=b;b=c;c=a;}
main()
{intx=10,y=8,z;
【】
printf("%d,%d",x,y);}
32.数据库系统其内部分为三级模式,即概念模式、内模式和外模式。其中,______是用户的数据视图,也就是用户所见到的数据模式。
33.以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。
main()
{intx[10],a[9],I;
for(I=0;I<10;I++)scanf("%d",&x[I]);
for(【】;I<10;I++)
a[I-1]=x[I]+【】;.
for(I=0;I<9;I++)printf("%d",a[I]);
printf("");
}
34.下面程序的功能是输出数组中最大的数,由a指针指向该元素。请填空。
main()
{ints[]={6,7,2,13,9,1,12,10,5,8,4,3,11},*a,*b;
for(b=s,a=s;b-s<13;b++)
if(【】)a=b;
printf("%d",*a);}
35.设Y是int型变量,请写出判断Y为奇数的关系表达式【】。
36.以下程序的功能是:利用指针向三个整型变量,并通过指针运算找出三个数中最大值,输出到屏幕上。请填空
main()
{intx,y,z,max,*px,*py,*pz,*pmax;
scanf("%d%d%d",&x,&y,&z);
px=&x;py=&y;pz=&z;pmax=&max;
if(*pmax<*py)*pmax=*py;
if(*pmax<*pz)*pmax二*pz;
printf("max=%d\n",max);}
37.下列程序的输出结果是【】。
main()
{inta=1,b=2;
a=a+b;b=a-b,a=a-b;
printf("%d,%d\n",a,b);
}
38.数据库的逻辑模型设计阶段的任务是将______转换成关系模式。
39.如下程序片段:
ina,b,c;
printf("inputa,b,c:");
scanf("a=%d,b=%d,c=%d",&a,&b,&c);
欲使输出结果为1、2、3(分别对应于a、b、c),输入数据的正确形式为【】。
40.当线性表的元素总数基本稳定,且很少进行插入和删除操作,并要求以很快的速度存取线性表中的数据元素时,应采用【】存储结构。
三、1.选择题(20题)41.有以下程序:main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a>b);printf("%d,%d\n"m,k,m);}程序运行后的输出结果是()。
A.0,0B.O,1C.1,0D.1,1
42.以下程序的输出结果是()。#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);}
A.11,42,3112,22,41
B.11,41,201,42,20
C.11,21,4011,21,21
D.11,41,2112,42,22
43.常采用的两种存储结构是()。
A.顺序存储结构和链式存储结构B.散列方法和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构
44.树是结点的集合,它的根结点的数目是()。
A.有且只有1个B.1或多于1C.0或1D.至少有2个
45.下列程序的输出结果是______。#defineA100main(){inti=0,sum=0;do{if(i==(i/2)*2)continue;sum+=i;}while(++i<A);printf("%d\n",sum);}
A.2500B.2050C.4D.0
46.设x,y均为int型变量,且x=10,y=3,则printf("%d\n"x-,-y);语句的输出结果是______。
A.10,3B.9,3C.9,2D.10,2}
47.数据流图用于抽象地描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是()。
A.控制流B.加工C.数据存储D.源和潭
48.有以下程序______。#defineP3voidF(intx){return(P*x*x);}main(){printf("%d\n",F(3+5));}程序运行后的输出结果是______。
A.192B.29C.25D.编译出错
49.以下语句定义正确的是()。
A.inta[1][4]={1,2,3,4,5};
B.floata[3][1]={{1},{2},{3}};
C.longa[2][3]={{1},{1,2},{1,2,3},{0,0}};
D.doublea[][3]={0};
50.在c语言中,变量的隐含存储类别是()。
A.autoB.staticC.externD.无存储类别
51.若要求从键盘读入含有空格字符的字符串,应使用函数A.getc()B.gets()C.getchar()D.scanf()
52.下面程序main(){inta=-1,b=4,k;k=(a++<=0)&&(!(b--<=0));printf("%d%d%d%d\n",k,a,B);}的输出是_______。
A.003B.012C.103D.112
53.下列选项中,不是一个算法的基本特征的是()。
A.完整性B.可行性C.有穷性D.拥有足够的情报
54.下列数据结构中,按先进后出原则组织数据的是
A.线性链表B.栈C.循环链表D.顺序表
55.下列选项中不合法的十六进制数是()。
A.OxffB.OXllC.OxlgD.OXabc
56.以下选项中可作为C语言合法整数的是A.10110BB.386C.0XffaD.x2a2
57.以下程序段的输出结果是()。inta=1234;printf("%2d\n",a);
A.12B.34C.1234D.提示出错,无结果
58.若有说明语句:double*P,a;则能通过scanf语句正确给输入项读入数据的程序段是()。
A.*p=&a;scanf("%lf",p);
B.*p=&a;scanf("%f",p);
C.p=&a;scanf("%lf",*p);
D.p=&a;scanf("%lf",p);
59.为了提高测试的效率,应该()。
A.随机选取测试数据
B.取一切可能的输入数据作为测试数据
C.在完成编码以后制定软件的测试计划
D.集中对付那些错误群集的程序
60.在C语言中,函数返回值的类型最终取决于()。
A.函数定义时在函数首部所说明的函数类型
B.return语句中表达式值的类型
C.调用函数时主调函数所传递的实参类型
D.函数定义时形参的类型
四、选择题(20题)61.在软件设计中不使用的工具是()。A.系统结构图B.PAD图C.数据流图D.程序流程图
62.设有以下语句:
TypedefstructTT
{charc;inta[4];}CIN;
则下面叙述中错误的是()。
A.不可以用TT定义结构体变量
B.TT是结构体标识名
C.可以用CIN定义结构体变量
D.CIN是structTT类型的变量
63.有以下程序
程序运行后的输出结果是()。
A.6,2,3,4,5,B.2,2,3,4,5,C.1,2,3,4,5,D.2,3,4,5,6,
64.
65.树是结点的集合,它的根结点数目是()。
A.有且只有1B.1或多于1C.0或1D.至少2
66.若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是()。
A.X+1=yB.++X.Y=X一一C.X=X+10=X+YD.double(X)/10
67.
68.
69.若已建立如下图所示的单向链表结构:在该链表结构中,指针p、s分别指向图中所示结点,则不能将s所指的结点插入到链表末尾仍构成单向链表的语句组是A.p=p->next;s->next=p;p->next=s;
B.p=p->next;s->next=p->next;p->next=s;
C.s->next=NULL;p=p->next;p->next=s;
D.p=(*p).next;(*s).next=(*p).next;(*p).next=s;
70.
71.
s1和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句s;则以下选项中正确的是()。
A.if(s1>s2)S;
B.if(strcmp(s1,s2))S;
C.if(strcmp(s2,sl)>O)S;
D.if(stremp(s1,s2)>O)S;
72.阅读下面程序段,则执行后的结果为()。
A.64B.8C.56D.0
73.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送()。A.调用语句B.命令C.口令D.消息
74.若文件指针fp已正确指向文件,ch为字符型变量,以下不能把字符输出到文件中的语句是()。
A.fget(f0,ch);
B.foutc(ch,fo);
C.fprinff(fp,”%c”,ch);
D.fwrite(&ch,sizeof(ch),1,fp);
75.设变量已正确定义并赋值,以下正确的表达式是()。
A.x=y*5=x+z
B.int(15.8%5.
C.x=y+z+5,++y
D.x=25%5.0
76.(20)数据库设计包括两个方面的设计内容,它们是()
A.概念设计和逻辑设计
B.模式设计和内模式设计
C.内模式设计和物理设计
D.结构特性设计和行为特性设计
77.如果要在表单中创建一个普通文本框,下列标记中正确的是()。
A.<inputtype=”text”>
B.<inputtype=”password”>
C.<inputtype=”CheCkbox”>
D.<inputtype=”radio”>
78.若a是数值类型,则逻辑表达式(a==1)II(a!=1)的值是()。
A.1B.0C.2D.不知道a的值,不能确定
79.下列程序执行后的输出结果是()。voidfunc(int*a,intb[]){b[0]=*a+b;}main{inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}A.6B.7C.8D.9
80.在数据流图(DFD)中,带有说明的箭头表示
A.模块之间的调用关系B.程序的组成成分C.控制程序的执行顺序D.数据的流向
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:将长整型数中为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为87653142时,t中的数为8642。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是将a中的十位数和个位数依次放在c数的十位和千位上,b中的十位数和个位数依次放在c数的百位和个位上。例如,当a=45,b=12时,调用该函数后,c=5142。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入编写的若干语句。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){ inta,b; longc; printf(“Inputa,b:”); scanf(“%d%d”,&a,&b); fun(a,b,&c); printf(“Theresultis:%ld\n”,c);}
参考答案
1.AC语言中的非执行语句不会被编译,不会被转换成二进制的机器指令,所以A选项错误。由C语言构成的指令序列称为C语言源程序,C语言源程序经过C语言编译程序编译之后,生成一个扩展名为.obj的二进制文件(称为目标文件);最后要由“连接程序”把此目标文件与C语言提供的各种库函数连接起来生成一个扩展名为.exe的可执行文件。故本题答案为A选项。
2.D
3.C解析:解答本题,首先要明白在对指针进行加、减运算的时候,数字“1”不是十进制的数“1”,而是指'1'个存储单元长度,而1个存储单元长度占多少存储空间,应该视具体情况而定。如果基本类型是int型,移动1个存储单元的长度就是位移2个字节,如果基本类型是float型,移动1个存储单元的长度就是位移4个字节。所以p+13所指向的数组元素的地址:300H+(13*上标)4)H=352H。
4.D
5.B解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。本题答案为B。
6.A
7.C
8.B
9.A解析:本题考查ifelse语句。第1个if语句,先判断条件,发现a<b条件成立,执行下列的语句;第2个if语句,先判断条件,发现b!=3条件成立,执行下列的语句:第3个if语句,先判断条件,c=5,则!c条件不成立,执行与其配对的else语句:第4个if语句,先判断条件,d=0,条件不成立,则x=-1,结束循环。
10.D解析:实体联系模型中实体与实体之间的联系有一对一(1:1),一对多戌多对一(1:m或m:1),多对多(m:n)其中一对一是最常用的关系。
11.B
\n本题考查for循环及if…else语句嵌套,第1次执行for循环,p[1][0]=p[1][0]=p[1][0]-1=3;第2次执行for循环,p[1][1]=p[1][1]-1=4;第3次执行for循环,p[1][2]=l,最后输出的是a[0][1]+a[1][1]+a[1][2]=2+4+1=7。
\n
12.C根据二叉树的性质及定义,一棵深度为k且有2k-1个结点的二叉树为满二叉树。满二叉树的叶子结点为最后一层的结点数,又根据满二叉树的性质,在满二叉树的第i层上至多有2i-1个结点。因此深度为5的满二叉树的叶子结点数为25-1=16个。
13.B
14.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选项。
15.C当输入字符串时,函数scanf用“空格”间隔不同的字符串,scanf函数不能输入空格。getchar函数用于输入字符,其调用形式为ch=getchar(),getehar函数从终端读入一个字符作为函数值,把读入的字符赋给变量ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户按<Enter>键时,读入才开始执行。gets函数的调用形式为getS(Str_adr),其中“str_adr”是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。gets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。getc函数的调用形式为ch=getc(Pf),其中“pf”是文件指针,函数的功能是从“pf”指定的文件中读入一个字符,并把它作为函数值返回。故本题答案为C选项。
16.C
17.C本题中int(*ptr)的含义是指向函数的指针变量,其为指向函数的指针变量,该函数返回一个int型数据,故选择C选项。
18.D
19.A
20.B
21.存储或物理或存储结构或物理结构存储或物理或存储结构或物理结构解析:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。供队列循环使用。可知,循环队列应当是物理结构。
22.存储结构数据结构包括3个方面,即数据的逻辑结构、数据的存储结构及对数据的操作运算。
23.n-1
24.111,1解析:POWER(i++)中先引用i的值1,再将i的值加1,POWER(i++)=1*1=1。
25.系统设计系统设计解析:系统设计阶段是系统的具体设计过程,主要包括概念设计、逻辑结构设计、物理结构设计3个步骤。这3个不同层次上的设计过程,是把实体以及相互之间的联系转换为“数据”并落实于计算机中。
26.2222解析:C语言里char类型占1个字节,int类型占2个字节,float类型占4个字节,double类型占8个字节,因此变量a在内存中所占字节数=1*6+4*2+1*8=6+8+8=22。
27.1212解析:本题通过第一个for循坪将数组arr[0]-arr[9]分别赋值为0-9,通过第二个for循环的三次循环累加,求出结果为12,具体分析如下:
i=1:k=0+arr[1]+1即k=2;
i=2:k=2+arr[2]+2即k=6;
i=3:k=6+arr[3]+3即k=12;
28.246
29.swap(st);swap(s,t);解析:本题要在主函数中调用swap函数交换a、b的值,实现数据交换需要进行地址传递,所以函数的形参都应该是需要交换的数据的地址,程序中通过“s=&a;t=&b;”将指针变量s和t指向变量a、b的地址,因此,引用时直接引用指针变量s和t即可。
30.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。
31.EXCHANGE(zxy)或EXCHANGE(zxy);EXCHANGE(z,x,y)或EXCHANGE(z,x,y);
32.外模式外模式解析:数据库系统的三级模式分别是内模式、概念模式和外模式。其中,物理模式给出了数据库的物理存储结构和存取方法;概念模式是数据库系统中全局数据逻辑结构的描述;外模式是用户的数据视图,也就是用户所见到的数据模式。
33.I=1x[I-1]I=1,x[I-1]解析:对于10个数,相临的两个数相加取和,总共要进行9次加法运算,所以空14处应填入I=1。相临的两个数相加取和,放在数组a中,x[0]与x[1]的和存放在a[0]中,所以空15处应填入x[I-1]。
34.*b>*a
35.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判断变量是否为奇数可以用变量与2取模,判断结果是为1或下为0。本题具体做法如下:Y%2=1或Y%2!=0。
36.
37.21
38.E-R图E-R图解析:数据库逻辑设计的任务是将概念模型进一步转化成相应的数据模型。而E-R图是主要的概念模型,因此数据库的逻辑设计的主要工作是将E-R图转换成关系模式。
39.a=1b=2c=3a=1,b=2,c=3解析:此题考查了scanf函数的输入格式。scanf函数的输入格式规定如果两个格式说明项间有一个或多个普通字符,那么在输入数据时,在两个数据之间也必须以这一个或多个字符作为分隔符。
40.顺序顺序
41.C解析:在||运算中当其左边的表达式为真,右边的表达式将不再执行。主函数中,||左边的表达式k=(n=b>a),2>1为真,所以n被赋值为1,接着k被赋值1,即||运算符左边表达式为真,此时不再计算||右边的表达式,因此m的值没有被改变仍为0,最后的输出结果1,0。所以,4个选项中选项C符合题意。
42.B
43.AA。【解析】线性表的存储通常分为两种存储结构:顺序存储结构和链式存储结构。
\n
44.CC。【解析】树具有明显的层次关系,即树是一种层次结构。在树结构中,根结点在第一层上。当树为非空时,树中有且只有一个根结点,当树为空时,树中根结点的数目为0。
45.A解析:本题程序的功能是求1到99之间(包括1和99)所有奇数之和。程序中的while循环的终止条件为++i=100,在while循环体内,如果i是偶数,则执行continue,跳过这一次循环,执行下—次循环,否则求和和。最后输出的值是1到99之间(包括1和99)所有奇数之和(1+99)*50/2=2500。
46.D解析:C语言的自减运算符有前置与后置两种形式。当自减运算符前置时,变量先自减一后再参与表达式运算;而后置时,变量先参与表达式运算后再自身减一。
47.A解析:数据流图包括四个方面,即加工(输入数据经加工变换产生输出)、数据流(沿箭头方向传送数据的通道,一般在旁边标注数据流名)、存储文件(数据源)(表示处理过程中存放各种数据的文件)、源和潭(表示系统和环境的接口,属系统之外的实体),不包括选项中的控制流。
48.D解析:定义函数F(x)为void型,即没有返回值,而函数体中又有return语句,编译时会出错。
49.D
50.A解析:auto变量:无static声明的局部变量。用auto作存储类别的声明时,可以不写auto,存储类别隐含确定为auto(自动存储类别),是动态存储方式。大多数变量是自动变量。用static声明的局部变量是静态局部变量。函数调用结束后静态局部变量占据的内存存储单元空间不释放,局部变量保留原值,下次调用时可以继续使用该值。用extern声明外部变量,外部变量即全局变量,可以用extern声明来改变全局变量的作用域,实际上,关键字'auto'可以省略,auto不写则隐含确定为'自动存储类别',属于动态存储方式。
51.Bscanf(\u3000)语句中用“空格”间隔不同的字符串,空格将被全部忽略掉,所以用scanf(\u3000)函数不能输入空格;getehar(\u3000)函数用于输入字符,其调用形式为:ch=getelaar(\u3000),getehar(\u3000)函数从终端读入一个字符作为函数值,把读入的字符赋给变量ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入Enter键时,读入才开始执行。gets(\u3000)函数的凋用形式为:gets(str_adr),其中stradr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。9ets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。getc(\u3000)函数的调用形式为:ch=getc(pf)其中pf是文件指针。函数的功能是从pf指定的文件中读入一个字符,并把它作为函数值返回。
52.C解析:a++是先使用a值再将a的值加1,b-是先使用b的值再将b的值减1,所以题中的逻辑运算表达式的值应当为真,即为1,而经过运算后,a和b的值已经分别变成0和3了。
53.A解析:作为一个算法,一般应该具有下列4个特征:(1)可行性,即考虑到实际的条件能够达到一个满意的结果;(2)确定性,算法中的每一个步骤都必须是有明确定义的,(3)有穷性,一个算法必须在有限的时间内做完;(4)拥有足够的情报。
54.B解析:栈是限定在二端进行插入与删除的线性表。在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素,即栈是按照“先进后出”或“后进先出”的原则组织数据的。注意:队列组织数据的原则是“先进先出”或“后进后出”。注意:数据结构中,栈和队列组织数据的原则。
55.C解析:十六进制是以“0x”或“0X”开头的字符串,字符串中只能含有0~9这10个数字和a、b、c、d、e、f这6个字母。
56.C解析:本题考核的知识点是整数及常数的表示方法。在C语言中,整数常量可以用十进制、八进制和十六进制来表示,选项A为二进制表示,故选项A不正确;选项B是八进制表示法,但在八进制数中,各个位数只能为数字。到7中的一个,而在选项B中,有一个数字8,故选项B不正确;选项C为十六进制表示法正确:选项D中也为十六进制表示法,但十六进制数以Ox开头,故选项D不正确,所以,4个选项中选项c符合题意。
57.C解析:在C语言中,对于不同类型的数据用不同的格式字符,其中,“%d”是按整型数据的实际长度输出,“%md”中,m为指定的输出字段的宽度,如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。注意:格式输入函数scanf的使用。
58.D解析:*p间接引用指针指向的变量,因此“(*p)=&a”不对。scanf()的输入变量必须为地址,因此C是错误的。
59.D本题主要考查软件的测试。软件测试的主要目的体现在下面几个方面。
(1)软件测试是为了发现错误而执行程序的过程。
(2)一个好的测试用例能够发现至今尚未发现的错误。
(3)一个成功的测试是发现了至今尚未发现的错误的测试。
软件测试的效率是指利用更少的成本创造更多的价值,提供软件测试效率的方法有很多,如制定一个合理的详细的测试计划,了解测试项目的业务需求,集中对付那些错误群集的程序等。而选项A所描述的随机选取测试数据是不能保证提高测试效率的,选项B描述的取一切可能的输入数据作为测试数据显然不能提高测试效率,反而使工作量加大,降低测试效率。
60.A解析:在C语言中,应当在定义函数时指定函数值的类型。凡不加类型说明的函数,默认按整型处理。在定义函数时对函数值说明的类型一般应该和return语句中的表达式类型一致。如果函数值的类型和return语句中的表达式类型不一致,则以函数值的类型为准,由系统自动进行转换,即函数类型决定返回值的类型。
61.C系统结构图是对软件系统结构的总体设计的图形显示。在需求分析阶段。已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,是在概要设计阶段用到的。PAD图是在详细设计阶段用到的。程序流程图是对程序流程的图形表示,在详细设计过程中用到。数据流图(DFD图)是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,因此它是一种功能模型,是在可行性研究阶段用到的而非软件设计时用到,所以本题答案为C)。
62.D类型定义;CIN不是structII类型的变量,它是structII类型的代替,即可以用它定义结构体变量。
63.A本题考查的是函数的地址调用,将数组名作为数组首地址进行传递,然后取首个数组元素值进行加l运算,循环5次。因此A选项正确。
64.D
65.A树形结构是一类重要的非线性数据结构。树是n(n≥0)个结点的集合,对应任意一棵非空树,它具有以下几点重要的性质。
①有且仅有一个特定的称为根的结点。
②当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,…,TM,其中每一个集合本身又是一棵树,称为子树。
因此,本题的正确答案有且只有一个。
66.BA选项中不能将变量Y赋给表达式,c选项中错误与A选项一样,D选项中强制类型转换表达式应写成(doub1e)x/10。
67.C
68.B
69.A在选项A中,s的确已插到了链表的末尾,但它的next并没有为NULL,而是指向了它的直接前趋p,这样它就不是一个单向链表(单向链表最后一个结点的next指针一定是一个NULL)。
70.A
71.D
\n在C语言中,不能直接比较两个字符串的大小,必须用特定的函数来完成,选项A错误;选项B不管大于还是小于都执行S,不符合题意;选项C正好相反,当s2大于s1时,执行语句S,可知选项D正确。
\n
72.C函数之间的数据传递。如果没有指明函数值类型,则默认函数返回值的类型为int型。
73.D解析:面向对象的世界是通过对象与对象间彼此的相互合作来推动的,对象间的这种相互合作需要一个机制协助进行,这样的机制称为消息。消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。
74.A函数fgete()从文件读入一个字符到指定变量。函数fputc()将指定字符写入审文件中,函数fprinff(),fwrite()均是写入文件操作函数。因此选项B,c。D错误。答案为A选项。
75.C解析:求余运算符'%'两边的运算对象必须是整型,而选项B)和D)中'%'两边的运算对象有浮点整数据,所以选项B)和D)是错误的表达式。在选项A)中赋值表达式的两边出现相同的变量x,也是错误的。选项C)是一个逗号表达式,所以正确答案为C)。
76.A
77.A
78.A由于a==l和a!=1两者互斥,即总有一个为真,因此二者的或也必定为真。
79.A本题考查函数的调用,从主函数传递到调用函数中,*a的值为0,因此当执行完调用函数后,b[0]的值为6。
80.D数据流图的四种基本符号分别是数据的源点或终点、数据流、数据存储和加工,其中带有说明的箭头表示数据流,即数据的流向。
数据流是一组确定的数据在系统内传播的路径。数据流的流向由箭头方向指出,可从加工流向加工,也可以从加工流向数据存储或从数据存储流向加工,还可以从源点流向加工或从加工流向终点。在数据流图中,除了与数据存储之间的数据流不用命名外,数据流应该对应一个唯一的名字。
81.(1)错误:if(d%2=0)
正确:if(d%2==0)
(2)错误:s/=l0;
正确:s/=10;
【解析】将长整型数中每一位上为偶数的数依次取出,构成一个新数。需要检查长整数型的每一位是否为偶数,因此,“if(d%2=0)”应改为“if(d%2==0)”;在C语言中,除号的写法为/,因此“s/=10;”应改为“s/=10;”。
82.voidfun(inta,intb,long*c){/*b%10获取b的个位数,a/10获取a的十位数,a%10获取a的个位数,b/10获取b的十位数*/ *c=b%10+(a/10)*10+(b/10)*100+(a%10)*1000;}本题主要考核如何取出a和b的个位数和十位数,取出后如何将其表示成c中相应的位数。由于a和b都是只有两位的整数,因此分别对它们除以10可得到它们的十位数,分别用10对它们求余可得到它们的个位数。将得到的数对应乘以1000、100、10、1,即可得到c的千位数、百位数、十位数、个位数。注意使用c时要进行指针运算。2021年河北省邯郸市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.以下叙述中错误的是()。
A.C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
B.C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件
C.用C语言编写的程序称为源程序,它以ASCII形式存放在一个文本文件中
D.C语言源程序经编译后生成扩展名为.obj的目标文件
2.折半查找的时间复杂性为()
A.O(n2)B.O(n)C.O(nlogn)D.O(logn)
3.若有定义floata[15],*p=a;,且数组a的首地址为300H,则p+13所指向的数组元素的地址为()。
A.334HB.30DHC.352HD.31AH
4.采用邻接表存储的图的广度优先遍历算法类似于二叉树的()。A.A.先序遍历B.中序遍历C.后序遍历D.按层遍历
5.为了使模块尽可能独立,要求_____。A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强
B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱
C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱
D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强
6.x>0&&x<=10的相反表达式为()。
A.x<=0||x>10B.x<=0&&x>10C.x<=0||x<=10D.x>0&&x>10
7.树最适合用来表示()。
A.有序数据元素B.无序数据元素C.元素之间具有分层次关系的数据D.元素间无联系的数据
8.
9.下列程序的运行结果是()。
#include<stdio.h>
main()
{intx=5,a=1,b=2,C=5,d=0;
if(a<B)
if(b!=3)
if(!C)
x=1;
else
if(D)x=1;
elsex=-1;
printf("%d",x);
}
A.-1B.0C.1D.不确定的值
10.实体联系模型中实体与实体之间的联系不可能是
A.一对一B.多对多C.一对多D.对零
11.
下列程序的输出结果是()。
#include<stdio.h>
main
{inta[2][3]={{1,2,3),{4,5,6)),(*p)[3],i;
p=a;
for(i=0;i<3;i++)
{if(i<2)
p[1][i]=p[1][i]-1;
else
p[1][i]=1;
}
printf("%d\n",a[o][1]+a[1][1]+a[1][2]);
}
A.8B.7C.12D.9
12.在深度为5的满二叉树叶中,叶子结点的个数为()。
A.32B.31C.16D.15
13.设"char**s;",以下正确的表达式是()。
A.s="computer";B.*s="computer";C.**s="computer";D.*s='c';
14.有以下程序:#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
15.若要求从键盘读入含有空格字符的字符串,应使用函数()。
A.getcharB.getcC.getsD.scanf
16.
17.设有如下定义:int(*ptr);则以下叙述中正确的是()。
A.ptr是指向一维组数的指针变量
B.ptr是指向int型数据的指针变量
C.ptr是指向函数的指针,该函数返回一个int型数据
D.ptr是一个函数名,该函数的返回值是指int型数据的指针
18.设有宏定义:#defineIsDIV(k,n)((k%n==1)?1:0)且变量m已正确定义并赋值,则宏调用:IsDIV(m,5)&&IsDIV(m,7)为真时所要表达的是A.判断m是否能被5或者7整除
B.判断m是否能被5和7整除
C.判断m被5或者7整除是否余1
D.判断m被5和7整除是否都余1
19.在决定选取何种存储结构时,一般不考虑()。
A.各结点的值如何B.结点个数的多少C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便
20.如果对线性表的操作只有两种,即删除第一个元素,在最后一个元素的后面插入新元素,则最好使用()。
A.只有表头指针没有表尾指针的循环单链表B.只有表尾指针没有表头指针的循环单链表C.非循环双链表D.循环双链表
二、2.填空题(20题)21.数据结构分为逻辑结构和存储结构,循环队列属于______结构。
22.数据结构包括数据的逻辑结构、数据的【】以及对数据的操作运算。
23.在具有n个单元、顺序存储的循环队列中,队满时,共有【】个元素。
24.下列程序的运行结果是______。
#definePOWER(x)((x)*(x))
main()
{inti=1;
primtf("%d,%d",POWER(i++),i);
}
25.一般来说,数据库的设计过程要经历3个大的阶段,即可行性分析与研究阶段、系统设计阶段、设计实施与系统运行阶段。概念设计、逻辑结构设计、物理结构设计属于数据库设计的【】阶段。
26.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是【】。
structstud
{charnum[6];
mts[4];
doubleave;
}a,*p;
27.下面程序的输出是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)
arr[i]=i;
for(i=1;i<4;i++)
k+=arr[i]+i;
printf("%d\n"k);}
28.以下程序的输出结果是______。
voidfun()
{staticinta=0;
a+=2;printf("%d",a);
}
main()
{intcc;
for(cc=1;cc<4;cc++)fun();
printf("\n");
}
29.以下程序调用函数swap将指针s和t所指单元(a和B)中的内容交换,请填空。main(){inta=10,b=20,*s,*t;s=&a;t=&b;()printf("%d%d",a,B);}swap(int*ss,int*tt){intte;te=*ss;*ss=*tt;*tt=te;}
30.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。
31.下面程序的功能是实现变量x、y内容交换,请填空。
#defineEXCHANGE(a,b,c){a=b;b=c;c=a;}
main()
{intx=10,y=8,z;
【】
printf("%d,%d",x,y);}
32.数据库系统其内部分为三级模式,即概念模式、内模式和外模式。其中,______是用户的数据视图,也就是用户所见到的数据模式。
33.以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。
main()
{intx[10],a[9],I;
for(I=0;I<10;I++)scanf("%d",&x[I]);
for(【】;I<10;I++)
a[I-1]=x[I]+【】;.
for(I=0;I<9;I++)printf("%d",a[I]);
printf("");
}
34.下面程序的功能是输出数组中最大的数,由a指针指向该元素。请填空。
main()
{ints[]={6,7,2,13,9,1,12,10,5,8,4,3,11},*a,*b;
for(b=s,a=s;b-s<13;b++)
if(【】)a=b;
printf("%d",*a);}
35.设Y是int型变量,请写出判断Y为奇数的关系表达式【】。
36.以下程序的功能是:利用指针向三个整型变量,并通过指针运算找出三个数中最大值,输出到屏幕上。请填空
main()
{intx,y,z,max,*px,*py,*pz,*pmax;
scanf("%d%d%d",&x,&y,&z);
px=&x;py=&y;pz=&z;pmax=&max;
if(*pmax<*py)*pmax=*py;
if(*pmax<*pz)*pmax二*pz;
printf("max=%d\n",max);}
37.下列程序的输出结果是【】。
main()
{inta=1,b=2;
a=a+b;b=a-b,a=a-b;
printf("%d,%d\n",a,b);
}
38.数据库的逻辑模型设计阶段的任务是将______转换成关系模式。
39.如下程序片段:
ina,b,c;
printf("inputa,b,c:");
scanf("a=%d,b=%d,c=%d",&a,&b,&c);
欲使输出结果为1、2、3(分别对应于a、b、c),输入数据的正确形式为【】。
40.当线性表的元素总数基本稳定,且很少进行插入和删除操作,并要求以很快的速度存取线性表中的数据元素时,应采用【】存储结构。
三、1.选择题(20题)41.有以下程序:main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a>b);printf("%d,%d\n"m,k,m);}程序运行后的输出结果是()。
A.0,0B.O,1C.1,0D.1,1
42.以下程序的输出结果是()。#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);}
A.11,42,3112,22,41
B.11,41,201,42,20
C.11,21,4011,21,21
D.11,41,2112,42,22
43.常采用的两种存储结构是()。
A.顺序存储结构和链式存储结构B.散列方法和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构
44.树是结点的集合,它的根结点的数目是()。
A.有且只有1个B.1或多于1C.0或1D.至少有2个
45.下列程序的输出结果是______。#defineA100main(){inti=0,sum=0;do{if(i==(i/2)*2)continue;sum+=i;}while(++i<A);printf("%d\n",sum);}
A.2500B.2050C.4D.0
46.设x,y均为int型变量,且x=10,y=3,则printf("%d\n"x-,-y);语句的输出结果是______。
A.10,3B.9,3C.9,2D.10,2}
47.数据流图用于抽象地描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是()。
A.控制流B.加工C.数据存储D.源和潭
48.有以下程序______。#defineP3voidF(intx){return(P*x*x);}main(){printf("%d\n",F(3+5));}程序运行后的输出结果是______。
A.192B.29C.25D.编译出错
49.以下语句定义正确的是()。
A.inta[1][4]={1,2,3,4,5};
B.floata[3][1]={{1},{2},{3}};
C.longa[2][3]={{1},{1,2},{1,2,3},{0,0}};
D.doublea[][3]={0};
50.在c语言中,变量的隐含存储类别是()。
A.autoB.staticC.externD.无存储类别
51.若要求从键盘读入含有空格字符的字符串,应使用函数A.getc()B.gets()C.getchar()D.scanf()
52.下面程序main(){inta=-1,b=4,k;k=(a++<=0)&&(!(b--<=0));printf("%d%d%d%d\n",k,a,B);}的输出是_______。
A.003B.012C.103D.112
53.下列选项中,不是一个算法的基本特征的是()。
A.完整性B.可行性C.有穷性D.拥有足够的情报
54.下列数据结构中,按先进后出原则组织数据的是
A.线性链表B.栈C.循环链表D.顺序表
55.下列选项中不合法的十六进制数是()。
A.OxffB.OXllC.OxlgD.OXabc
56.以下选项中可作为C语言合法整数的是A.10110BB.386C.0XffaD.x2a2
57.以下程序段的输出结果是()。inta=1234;printf("%2d\n",a);
A.12B.34C.1234D.提示出错,无结果
58.若有说明语句:double*P,a;则能通过scanf语句正确给输入项读入数据的程序段是()。
A.*p=&a;scanf("%lf",p);
B.*p=&a;scanf("%f",p);
C.p=&a;scanf("%lf",*p);
D.p=&a;scanf("%lf",p);
59.为了提高测试的效率,应该()。
A.随机选取测试数据
B.取一切可能的输入数据作为测试数据
C.在完成编码以后制定软件的测试计划
D.集中对付那些错误群集的程序
60.在C语言中,函数返回值的类型最终取决于()。
A.函数定义时在函数首部所说明的函数类型
B.return语句中表达式值的类型
C.调用函数时主调函数所传递的实参类型
D.函数定义时形参的类型
四、选择题(20题)61.在软件设计中不使用的工具是()。A.系统结构图B.PAD图C.数据流图D.程序流程图
62.设有以下语句:
TypedefstructTT
{charc;inta[4];}CIN;
则下面叙述中错误的是()。
A.不可以用TT定义结构体变量
B.TT是结构体标识名
C.可以用CIN定义结构体变量
D.CIN是structTT类型的变量
63.有以下程序
程序运行后的输出结果是()。
A.6,2,3,4,5,B.2,2,3,4,5,C.1,2,3,4,5,D.2,3,4,5,6,
64.
65.树是结点的集合,它的根结点数目是()。
A.有且只有1B.1或多于1C.0或1D.至少2
66.若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是()。
A.X+1=yB.++X.Y=X一一C.X=X+10=X+YD.double(X)/10
67.
68.
69.若已建立如下图所示的单向链表结构:在该链表结构中,指针p、s分别指向图中所示结点,则不能将s所指的结点插入到链表末尾仍构成单向链表的语句组是A.p=p->next;s->next=p;p->next=s;
B.p=p->next;s->next=p->next;p->next=s;
C.s->next=NULL;p=p->next;p->next=s;
D.p=(*p).next;(*s).next=(*p).next;(*p).next=s;
70.
71.
s1和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句s;则以下选项中正确的是()。
A.if(s1>s2)S;
B.if(strcmp(s1,s2))S;
C.if(strcmp(s2,sl)>O)S;
D.if(stremp(s1,s2)>O)S;
72.阅读下面程序段,则执行后的结果为()。
A.64B.8C.56D.0
73.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送()。A.调用语句B.命令C.口令D.消息
74.若文件指针fp已正确指向文件,ch为字符型变量,以下不能把字符输出到文件中的语句是()。
A.fget(f0,ch);
B.foutc(ch,fo);
C.fprinff(fp,”%c”,ch);
D.fwrite(&ch,sizeof(ch),1,fp);
75.设变量已正确定义并赋值,以下正确的表达式是()。
A.x=y*5=x+z
B.int(15.8%5.
C.x=y+z+5,++y
D.x=25%5.0
76.(20)数据库设计包括两个方面的设计内容,它们是()
A.概念设计和逻辑设计
B.模式设计和内模式设计
C.内模式设计和物理设计
D.结构特性设计和行为特性设计
77.如果要在表单中创建一个普通文本框,下列标记中正确的是()。
A.<inputtype=”text”>
B.<inputtype=”password”>
C.<inputtype=”CheCkbox”>
D.<inputtype=”radio”>
78.若a是数值类型,则逻辑表达式(a==1)II(a!=1)的值是()。
A.1B.0C.2D.不知道a的值,不能确定
79.下列程序执行后的输出结果是()。voidfunc(int*a,intb[]){b[0]=*a+b;}main{inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}A.6B.7C.8D.9
80.在数据流图(DFD)中,带有说明的箭头表示
A.模块之间的调用关系B.程序的组成成分C.控制程序的执行顺序D.数据的流向
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:将长整型数中为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为87653142时,t中的数为8642。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是将a中的十位数和个位数依次放在c数的十位和千位上,b中的十位数和个位数依次放在c数的百位和个位上。例如,当a=45,b=12时,调用该函数后,c=5142。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入编写的若干语句。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){ inta,b; longc; printf(“Inputa,b:”); scanf(“%d%d”,&a,&b); fun(a,b,&c); printf(“Theresultis:%ld\n”,c);}
参考答案
1.AC语言中的非执行语句不会被编译,不会被转换成二进制的机器指令,所以A选项错误。由C语言构成的指令序列称为C语言源程序,C语言源程序经过C语言编译程序编译之后,生成一个扩展名为.obj的二进制文件(称为目标文件);最后要由“连接程序”把此目标文件与C语言提供的各种库函数连接起来生成一个扩展名为.exe的可执行文件。故本题答案为A选项。
2.D
3.C解析:解答本题,首先要明白在对指针进行加、减运算的时候,数字“1”不是十进制的数“1”,而是指'1'个存储单元长度,而1个存储单元长度占多少存储空间,应该视具体情况而定。如果基本类型是int型,移动1个存储单元的长度就是位移2个字节,如果基本类型是float型,移动1个存储单元的长度就是位移4个字节。所以p+13所指向的数组元素的地址:300H+(13*上标)4)H=352H。
4.D
5.B解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。本题答案为B。
6.A
7.C
8.B
9.A解析:本题考查ifelse语句。第1个if语句,先判断条件,发现a<b条件成立,执行下列的语句;第2个if语句,先判断条件,发现b!=3条件成立,执行下列的语句:第3个if语句,先判断条件,c=5,则!c条件不成立,执行与其配对的else语句:第4个if语句,先判断条件,d=0,条件不成立,则x=-1,结束循环。
10.D解析:实体联系模型中实体与实体之间的联系有一对一(1:1),一对多戌多对一(1:m或m:1),多对多(m:n)其中一对一是最常用的关系。
11.B
\n本题考查for循环及if…else语句嵌套,第1次执行for循环,p[1][0]=p[1][0]=p[1][0]-1=3;第2次执行for循环,p[1][1]=p[1][1]-1=4;第3次执行for循环,p[1][2]=l,最后输出的是a[0][1]+a[1][1]+a[1][2]=2+4+1=7。
\n
12.C根据二叉树的性质及定义,一棵深度为k且有2k-1个结点的二叉树为满二叉树。满二叉树的叶子结点为最后一层的结点数,又根据满二叉树的性质,在满二叉树的第i层上至多有2i-1个结点。因此深度为5的满二叉树的叶子结点数为25-1=16个。
13.B
14.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选项。
15.C当输入字符串时,函数scanf用“空格”间隔不同的字符串,scanf函数不能输入空格。getchar函数用于输入字符,其调用形式为ch=getchar(),getehar函数从终端读入一个字符作为函数值,把读入的字符赋给变量ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户按<Enter>键时,读入才开始执行。gets函数的调用形式为getS(Str_adr),其中“str_adr”是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。gets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。getc函数的调用形式为ch=getc(Pf),其中“pf”是文件指针,函数的功能是从“pf”
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省宁波市慈溪市2023-2024学年六年级上学期英语期末试卷(1月)
- 《木雕工艺品的保养》课件
- 2022年安徽省巢湖市公开招聘警务辅助人员辅警笔试自考题2卷含答案
- 2022年河北省承德市公开招聘警务辅助人员辅警笔试自考题2卷含答案
- 2021年黑龙江省大庆市公开招聘警务辅助人员辅警笔试自考题2卷含答案
- 2021年湖南省邵阳市公开招聘警务辅助人员辅警笔试自考题2卷含答案
- 湖南省岳阳市(2024年-2025年小学六年级语文)部编版开学考试((上下)学期)试卷及答案
- 《整合市场攻击策略》课件
- 2025年城市公共汽电车客运服务项目立项申请报告
- 2025年电信和其他信息传输服务项目提案报告模稿
- 提升教练技术--回应ppt课件
- 招聘与录用选择题
- 《工资、薪金的个人所得税的计算》教学设计
- 精品洲际酒店集团皇冠酒店设计标准手册
- 周视瞄准镜的初步设计-北京理工大学-光电学院小学期作业
- Writing写作教学设计
- 心房起搏电极的位置选择ppt课件
- 农副产品交易中心运营方案
- 四川省南充市2019-2020学年九年级上期末数学试卷(含答案解析)
- 上海市宝山区2019届高三英语一模含答案
- 《数与形》教学反思
评论
0/150
提交评论