




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年广东省肇庆市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.设长度为n的链队列用单循环链表表示,若只设头指针,则入队操作的时间复杂度为_______。
A.O(1)B.O(log2n)C.O(n)D.O(n2)
2.和顺序栈相比,链栈有一个比较明显的优势是()。
A.通常不会出现栈满的情况B.通常不会出现栈空的情况C.插入操作更容易实现D.删除操作更容易实现
3.以下说法中正确的是()。
A.C程序总是从第一个定义的函数开始执行
B.C程序总是从main函数开始执行
C.C函数必须有返回值,否则不能使用函数
D.C程序中有调用关系的所有函数必须放在同一个程序文件中
4.有下列程序:
main()
{inty=20;
do{y--;}while(--y);
phntf("%d\n",y--);
}
当执行程序时,输出的结果是()。
A.-1B.1C.4D.0
5.a、b、c、d变量均为float类型且已正确赋值,下列选项中与数学式子“2ab/(5cd)”等价的C语言表达式是()。
A.2/5*a/c*d/b
B.a/(5*c*d)*(2*b)
C.2*a*b/5*c*d
D.2/5*a*d*(1/c*d)
6.以下语句中,正确制作电子邮件链接的是()。
7.若有以下语句:typedefstructS{intg;charh;}T;以下叙述中正确的是()。A.可用S定义结构体变量B.可用T定义结构体变量C.S是struct类型的变量D.T是structS类型的变量
8.下列函数的类型是()。fun(doublex){floaty;y=3*x-4;returny;}
A.intB.不确定C.voidD.float
9.若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是A.#defineN10inta[N];B.#definen5inta[2*n];C.inta[5+5];
D.intn=10,a[n];
10.下面软件中,属中应用软件的是()
A.UnixB.人事管理系统C.数据库管理理系统D.DOS
11.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30
12.若有定义“intw[3][5];”,则以下不能正确表示该数组元素的表达式是()。
A.*(&w[0][0]+1)B.*(*w+3)C.*(*(w+1))D.*(w+1)[4]
13.函数fseek(pf,OL,SEEKEND)中的SEEKENE代表的起始点是()。
A.文件开始B.文件末尾C.文件当前位置D.以上都不对
14.数据处理的最小单位是()。
A.数据B.数据元素C.数据项D.数据结构
15.一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是()
A.不确定B.n-i+1C.iD.n-i
16.设有以下语句,其中不是对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))
17.广义表(a,b,c,d)的表头是()。
A.aB.(a)C.(b,c,d)D.((b,c,c))
18.以下关于指针的说法错误的是()。
A.可以向指针中写入任意数据
B.可以向指针所指内存单元中写入数据
C.指针可以指向与其基类型相同的普通变量
D.可以通过加法运算,使指针指向下一个内存单元
19.在以下的叙述中,正确的是()。
A.线性表的顺序存储结构优于链表存储结构
B.二维数组是其数据元素为线性表的线性表
C.栈的操作方式是先进先出
D.队列的操作方式是先进后出
20.C程序的基本模块为()。
A.表达式B.标识符C.语句D.函数
二、2.填空题(20题)21.二叉树的遍历可以分为三种:前序遍历、()遍历和后序遍历。
22.C语言用于结构化程序设计的3种基本结构是______、选择结构和循环结构。
23.下面函数用来求出两个整数之和,并通过形参传回两数相加之和值。请填空。
intadd(intx,inty,【】,)
{【】=x+y;}
24.在一个容量为25的循环队列中,若头指针front=16,尾指针rear=9,则该循环队列中共有【】个元素。
25.对于一棵具有n个结点的树,该树中所有结点的度为【】。
26.下列程序中的函数stropy2()实现字符串两次复制,即将t所指字符串复制两次到s所指内存空间中,合并形成一个新字符串。例如,若t所指字符串为:efgh,调用strcpy2后,s所指字符串为:efghefgh。请填空。
#include<stdio.h>
#include<string.h>
voidstrcpy2(char*s,char*t)
{char*p=t;
while(*s++=*t++);
s=【】;
while(【】=*p++);
}
main()
{charstr1[100]="abed",str2[]="efgh";
strcpy2(str1,str2);printf("%s\n",str1);
}
27.下列程序的输出结果是______。
#defineP(A)printf("%d,",(int)(A))
#definePRINT(A)P(A);printf("theend")
main()
{inti,a=0;
for(i=1;i<5.i++)
PRINT(a+i);
printf("\n");
}
28.在最坏情况下,堆排序需要比较的次数为()。
29.若线性表的长度经常发生变化,那么该线性表应采用的存储结构是【】。
30.软件的需求分析阶段的工作,可以概括为四个方面:【】、需求分析、编写需求规格说明书和需求评审。
31.以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:
abcl23edf456gh,执行程序后输出:123456。请填空。
#include<stdio.h>
#include<ctype,h>
main()
{chars[80],d[80];inti,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(【】){d[j]=s[i];j++;}
d[j]='\0';
puts(d);
}
32.fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大数,再求这N个最大值中最小的那个数并作为函数值返回。请填空。
#include<stdio.h>
#defineN100
intfun(int(*a)[N])
{introw,col,max,min;
for(row=0;row<N;row++)
{for(max=a[row][0],col=1;col<N;col++)
if(【】)max=a[row][col];
if(row==0)min=max;
elseif(【】)min=max;
}
returnmin;
}
33.以下程序中,fun()函数的功能是求3行4列二维数组每行元素中的最大值,请填空。
voidfun(int,int,int(*)[4],int*);
main()
{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
fun(3,4,a,b);
for(i=0;i<3;i++)printf("%4d",b[i]);
printf("\n");
}
voidfun(intm,intn,intar[][4],int*br)
{inti,j,x;
for(i=0;i<m;i++)
{x=ar[i][0];
for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];
______=x;
}
}
34.以下程序的功能是建立—个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data域不放数据,表空的条件是ph->next==NULL),请填空。
#include<stdio.h>
structlist{intdata;structlist*next;};
structlist*creatlist()
{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(struct
35.当数据的物理结构(存储结构)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【】。
36.对于长度为n的顺序存储的线性表,当随机插入和删除一个元素时,需平均移动元素的个数为【】。
37.以下程序的输出结果是【】。
main()
{inta=177;
printf(“%o\n”,A);
}
38.以下程序中函数fun的功能是求出能整除x且不是偶数的务正整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15。
请按题意,完成填空。
试题程序:
#include<stdio.h>
voidfun(intx,intpp[],int*n)
{inti,j=0;
【】;
if(x%i==0)pp[j++]=i;
【】;
}
main()
{intx,aa[1000],n,i;
printf("\nPleaseenteranintegernumber:\n");
scanf("%d",&x);
fun(x,aa,&n);
for(i=0;i<n;i++)printf("%d",aa[i]);
printf("\n");
}
39.树中度为零的结点称为______。
40.若按功能划分,软件测试的方法通常分为______测试方法和黑盒测试方法。
三、1.选择题(20题)41.对于下列定义,不正确的叙述是()。uniondata{inta;charb;doublec;}x=y;
A.变量x所占内存的长度等于成员c的长度
B.变量x的地址和它的各成员地址都是相同的
C.可以在定义时对x初始化
D.不能对变量x赋值,故x=y非法
42.设a、b、c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,值为0的表达式是______。
A.'a'&&'b',
B.a<=b
C.a||b+c&&b-c
D.!((a<<b)&&!c||1)
43.将E-R图转换到关系模式时,实体与联系都可以表示成________。
A.属性B.关系C.键D.域
44.有以下程序:main(){charch[]="uvwxyz",*pc;pc=ch;printf("%c\n",*(pc+5));}程序运行后的输出结果是()。
A.zB.0C.元素ch[5]地址D.字符y的地址
45.下面对对象概念描述错误的是()
A.任何对象都必须有继承性B.对象是属性和方法的封装体C.对象间的通讯靠消息传递D.操作是对象的动态属性
46.有以下程序:main(){charstr[][10]={"China","Beijing"),*p=str;printf("%s\n",p+10);}程序运行后的输出结果是()。
A.ChinaB.BeijngC.ngD.ing
47.下列叙述中正确的是()。
A.一个算法的空间复杂度大,则其时间复杂度也必定大
B.一个算法的空间复杂度大,则其时间复杂度必定小
C.一个算法的时间复杂度大,则其空间复杂度必定小
D.上述三种说法都不对
48.在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是()
A.逻辑设计B.需求分析C.详细设计D.物理设计
49.在关系数据库中,用来表示实体之间联系的是
A.树结构B.网结构C.线性表D.二维表
50.在E-R图中,用()来表示实体之间联系。
A.矩形B.菱形C.椭圆形D.正方形
51.下列可用于C语言标识符的一组是_______。
A.voidWORDdefine
B.a6$sysFor
C.2asizeofabc
D.Intdefinesizeof
52.一个源文件中的外部变量的作用域为()。
A.本文件的全部范围B.本程序的全部范围C.本函数的全部范围D.从定义该变量的位置开始到本文件结束
53.以下程序的结果是______。inta,b;voidfun(){a=100;b=200;}main(){inta=5;b=7fun();printf("%d%d\n",a,b);}
A.100200B.57C.200100D.75
54.若变量a,i已正确定义,且i已正确赋值,下面合法的语句是()。
A.a==1B.++i;C.a=a++=5;D.a=int(i);
55.打印当前屏幕内容应使用的控制键是()
A.Scroll-LockB.Num-LockC.PgDnD.PrtSc(PrintScreen)
56.下列程序的输出结果是______。main(){intn[5]={0,0,0},i,k=2;for(i=0;i
A.不确定的值B.2C.1D.0
57.已知intt=0;while(t=1){…}则以下叙述正确的是()。
A.循环控制表达式的值为0B.循环控制表达式的值为1C.循环控制表达式不合法D.以上说法都不对
58.下列程序的运行结果是()。#include<stdio.h>#defineADD(x)x+xmain(){intm=1,n=2,k=3;ints=ADD(m+n)*k;printf("s=%d",s);}
A.sum=18B.sum=10C.sum=9D.sum=25
59.设有如下关系表:
则下列操作中,正确的是()。
A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S
60.以下程序的输出结果是______。fun(intx,inty,intz){z=x*x+y*y;}main(){inta=31;fun(5,2,a);printf("%d",a);}
A.0B.29C.31D.无定值
四、选择题(20题)61.下列合法的声明语句是()。
A.intabc=50;
B.doubleint=3+5e2.5;
C.longdo=1L;
D.float3asd=3e一3;
62.
63.以下叙述中错误的是()。
A.全局变量的作用域一定比局部变量的作用域范围大
B.静态(static)类别变量的生存期贯穿于整个程序的运行期间
C.全局变量的生存期是整个程序的运行期间
D.静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值
64.已有定义:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断e中的字符是否为大写字母的表达式是()。
A.isupper(c)
B.A<=c<=Z
C.A<=cc<=Z
D.c<=(z-32)(a-32)<=c
65.有以下程序:
程序执行后的输出结果是()。
A.1B.2C.4D.死循环
66.
67.下列叙述中正确的是()。
A.软件测试应该由程序开发者来完成
B.程序经调试后一般不需要测试
C.软件维护只包括对程序代码的维护
D.以上三种说法都不对
68.以下关于结构化程序设计的叙述中正确的是()。A.在C语言中,程序的模块化是利用函数实现的
B.结构化程序使用sotoi吾句会很便捷
C.一个结构化程序必须同时由顺序、分支、循环三种结构组成
D.由三种基本结构构成的程序只能解决小规模的问题
69.以下关于return语句的叙述中正确的是()。
A.一个自定义函数中必须有一条return语句
B.一个白定义函数中可以根据不同情况设置多条return语句
C.定义成void类型的函数中可以有带返回值的return语句
D.没有return语句的自定义函数在执行结束时不能返回到调用处
70.一间工厂可有多个工人,则实体工厂和工人之间的联系是
A.一对一B.一对多C.多对一D.多对多
71.
若希望下列的程序运行后输出25,程序空白处的正确选项是()。
main
{intid=50,a[]=(7,4,10,5,8};
for()
j+=a[i];
printf("%d",j-40);
}
A.i=1;i<4;++i
B.i=l;i<3;++i
C.i=4;i>2;i--
D.i=2;i<4;++i
72.以下数据结构中不属于线性数据结构的是______。
A.队列B.线性表C.二叉树D.栈
73.
74.有以下程序
75.有定义语句:chars[10];,若要从终端给s输入5个字符,错误的输入语句是()。
A.gets(&s[0]);
B.scanf("%s",s+1);
C.gets(s);
D.scanf("%s",s[1]);
A.存储空间不一定连续,且各元素的存储顺序是任意的
B.存储空间不一定连续,且前件元素一定存储在后件元素的前面
C.存储空间必须连续,且前件元素一定存储在后件元素的前面
D.存储空间必须连续,且各元素的存储顺序是任意的
76.以下选项中关于程序模块化的叙述错误的是()。
A.可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序
B.把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块
C.把程序分成若干相对独立的模块,可便于编码和调试
D.可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序
77.
78.
下列程序的输出结果是()。
#include<stdio.h>
intfun(inta)
{intb=0;
staticintc=4:
a=c++:b++;
return(a):
main
{inta=2,i,c;
for(i=0:i<2;i++)
c=f(a+1):
printf("%d\n",c);
}
A.4B.7C.6D.5
79..C语言运算对象必须是整型的运算符是
A.%B./C.=D.<
80.
五、程序改错题(1题)81.下列给定程序中,函数fun的功能是:求两个非零正整数的最大公约数,并作为函数值返回。例如,若nmnl和num2分别为49和21,则输出的最大公约数为7;若num1和num2分别为27和81,则输也的最大公约数为27。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或硼行,也不得更改程序的结构!试题程序:
六、程序设计题(1题)82.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数,其功能是:求出该学生的平均分,并放入记录的ave成员中。例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun部位中填入你编写的若干语句。试题程序:#include<stdio.h>#defineN8typedefstruct{charnum[10];doubles[N];doubleave;}STREC;voldfun(STREC*a){}voidmainSTRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};inti;fun(&s);printf("The%ssstudentdata:\n",s.num);for(i=0;i<N;i++)printf("%4.1fkn",s.s[i]);printf("\nknave=%7.3fkn",s.aVe);printf("\n");}
参考答案
1.C
2.A
3.B解析:C++程序总是从main函数开始执行。
4.D解析:本题考查do…while循环。当--寸是0(即y是0)时结束循环,输出y--是先输出y的值再将y的值减1。
5.B解析:选项A和选项D中首先计算2/5,因为两个计算分量都是整型,所以结果为2,与实际运算不符;选项B中因为乘除法满足交换律,所以2*b放前面和放后面都是一样的,所以满足题目要求;选项C中的表达式等价于2abcd/5,所以不满足题目要求。故应该选择B。
6.C
7.B解析:语句typedefstructS{intg;charh;}T的作用是用T作为struetS{intg;charh;)的简写,所以选B。
8.A本题考查函数值的类型。在函数调用时,尽管Y的类型是float.x的类型是double,但是因为函数定义时没有指定类型说明,系统默认函数值的类型为int型,所以计算后Y的类型是int型。
9.D答案D
解析:在选项D中,n是一个整型的变量。C语言规定,在一维数组的定义中,其下标只能是常量表达式,不能包含变量。
10.B
11.B本题考查for循环的使用。对于第1个for循环,任何一个i,内层j的循环都要使j~0到3,j=4时不符合,所以退出j循环;然后i减1,J仍然要从0~3,j=4时退出J循环直到i变成0,退出i循环。第一条for语句执行6次,第二条for语句执行4次,所以内循环体执行6*4=24次。
12.DA选项中,“*(&w[0][0]+1)”表示“w[0][1]”;B选项中,“*(*w+3)”表示“w[0][3]”;C选项中,“*(*(w+1))”表示“w[1][0]”;D选项中,“*(w+1)[4]”的正确写法是“(*(w+1))[4]”,表示“w[1][4]”。故本题答案为D选项。
13.BSEEK_SET代表文件的开始,SEEK_END代表文件末尾,SEEK_CUR代表文件当前位置。
14.C解析:数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。故正确答案为选项C)。
15.B
16.D解析:观察程序可知,a实际上就是数组a的首地址,所以“*(a+i)”表示的就是数组a中的第i个元素的值,进而,我们可以知道*(*(a+i))必然不是对a数组元素的正确引用。
17.A
18.A指针变量必须区分基类型,可以向指针所指内存单元写入与基类型相同的数据,而不能写入任意数据,选项A错误,选项B正确;指针可以指向与其基类型相同的普通变量,选项C正确;指针是一个内存地址,它是一个整数,可以通过加法运算,使指针指向下一个内存单元,选项D正确。故本题答案为A选项。
19.B
20.D
21.中序中序解析:二叉树的遍历可以分为三种:前序遍历、中序遍历和后序遍历。前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。中序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历右子树,然后访问根
22.顺序结构顺序结构解析:结构化程序有3种摹本结构,即顺序结构、选择结构(包括if语句和switch语句)和循环结构(包括for语句、while语句、do…while语句)。
23.int*p*p或p[0]int*p\r\n*p或p[0]
24.1818解析:设循环队列的容量为n。若rear>front,则循环队列中的元素个数为rear-front;若rear<front,则循环队列中的元素个数为n+(rear-front)。题中,front=16,rear=9,即rear<front,所以,循环队列中的元素个数为m+(rear-front)=25+(9-16)=18。
25.n-1n-1解析:设该树中所有结点的度为x,因为,在树的结点中,除了根结点以外,其余结点都有一个分支进入,所以,n=x+1,所以x=n-1。
26.s-1或--s或s--*s++s-1或--s或s--\r\n*s++解析:在函数。strcpy2()中,首先将指针t保存到指针p中,然后进入第1个while()循环,其循环条件为*s++=*t++,其中“*”和“++”运算符的优先级相同,但他们的结合性为从右至左,而“=”运算符优先级比较低,所以原表达式等价于(*s++)=(*(t++)),即将t当前所指内容复制到s当前所指地址中,然后让s和t同时往后移动一位,整个表达式返回的是复制给s的值。所以,当t所指内容是字符串结束符'\\0',时,while循环结束,原先t所指的整个字符串也就复制到s所指的地址中去了。但是,while循环最后一次判断也会让s和t往后移动一位,即此时s指向了字符串结束符'\\0'的后一位。所以第2次复制字符串之前,应先将s指针往回移动一位,故前一空应该填入s-1或其他等价形式。接下来的while循环实现第二次复制,照抄第1次的while循环就行,故后一空应填入*s++。
27.1234theend1,2,3,4,theend解析:本题考查带参数的宏的定义。第1次循环,i=1时,调用PRINT(1),P(1)输出1;第2次循环,i=2时,调用PRINT(2),P(2)输出2:第3次循环,i=3时,调用PRINT(3),P(3)输出3:第4次循环,i=4时,调用PRINT(4),P(4)输出4,theend。
28.O(nlog2n)
29.链式存储结构链式存储结构
30.需求获取需求获取解析:软件的需求分析阶段的工作,可以概括为四个方面:需求获取、需求分析、编写需求规格说明书和需求评审。需求获取的目的是确定对目标系统的各方面需求;需求分析是对获取的需求进行分析和综合,最终给出系统的解决方案和目标系统的逻辑模型;编写需求规格说明书作为需求分析的阶段成果,可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标软件系统的确认,又可以作为控制软件开发进度的依据;需求评审是对需求分析阶段的工作进行的复审,验证需求文档的一致性、可行性、完整性和有效性。
31.s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]解析:字符数组的初始化,字符串的输入和输出的应用。C语言没有字符串变量,字符串不是存放在一个变量中而是存放在一个字符型数组中,因此为了存放字符串,常常在程序中定义字符型数组;字符串存放在字符数组中,但字符数组与字符串可以不等长,C语言规定以“\\0”字符作为字符串结束标志。
本题中,chars[80],d[80];定义了两个字符型数组,可以放入80个字符。gets函数是c语言提供的一个专门用于读字符串的函数,它读入全部字符(包括空格),直到遇到回车为止。本题中,读入字符串s后,开始比较s中的每个字符是否为数字字符,因为字符数据在内存中以相应的ASCII码存放,所以只需比较相应的ASCII码值是否在48('0'的ASCII代码)与57('9'的ASCII代码)之间,或者直接与'0','9'进行比较,如果是数字字符则将此字符存入d数组中,不是则继续进行下一字符的比较,直至s结束(即'0'的出现)。将“'\\0'”字符作为字符串d结束标志,最后调用puts函数输出d。所以在空格处应填入比较语句s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或&&48<=s[i]或57>=s[i]。
32.a[row][c01]>max或max<a[row][co1]max<min或min>maxa[row][c01]>max或max<a[row][co1]\r\nmax<min或min>max解析:本题有两层for循环,函数首先定义了整型变量row、col、max和min,其中row用于外循环的循环变量,col用于内循环的循环变量,max记录每行中的最人值,min记录所有行最大值中的最小值。在内循环中,首先给max赋初值为每行的第0个元素值,然后从第一个开始依次与max进行比较。如果大于max则将其值赋给max,当每一行循环结束,max记录了每一行的最大值。所以第一个空应该填a[row][co1]>max或max<a[row][co1)。退出内循环,在第一次退出内循环时,将min赋初值为第0行的max,然后在每次退出内循环时,将min和每行的max比较,如果大于max,则将max值赋min,所以第二个空应该填max<min或min>max,当退出外循环时,rain为所有行中的最大值的最小值。
33.br[i]
34.解析:本题考查的是链表这一数据结构对结构体变量中数据的引用。链表的特点是结构体变量中有两个域,一个是数据,另一个是指向该结构体变量类型的指针,用以指明链表的下一个结点。
35.物理独立性数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。也就是说,数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。数据独立性一般分为物理独立性与逻辑独立性两级。
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.261261解析:在控制格式符中“o”代表的是将数据按八进制数输出,十进制数的177代表的八进制数是261。
38.for(i=1;i<=x;i+=2)*n=jfor(i=1;i<=x;i+=2)*n=j解析:本题题干信息是求能整除x且不是偶数的所有正整数。循环语句中i从1开始且每次增2,所以i始终是奇数,语句,n=j;是记录符合题意的整数的个数。
39.叶子结点叶子结点解析:树中度为零的结点,也就是没有后件的结点,称为叶子结点。
40.白盒白盒解析:软件测试的方法分为白盒测试方法和黑盒测试方法.
41.C解析:本题主要考查的知识点是联合体的内存使用。联合体所占用的内存空间为最长的成员所占用的空间,各个成员分量全部是从低地址方向开始使用内存单元。不能在定义共用体变量时对它初始化。
42.D
43.B解析:关系数据库逻辑设计的主要工作是将\ue008E-R\ue009图转换成指定RDBMS中的关系模式。首先,从E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R图中属性也可以转换成关系的属性,实体集也可以转换成关系。
44.A解析:字符指针pc指向字符串数组ch的首地址,*(pc+5)就是pc[5]的值。
45.A解析:继承是面向对象的方法的一个主要特征。继承是使用已有的类定义做为基础建立新类的定义技术。已有的类可当做基类来引用,则新类相应地可当做派生类来引用。但并不是所有的对象都必须有继承性。因此,选项A中的说法是错误的,应为所选。
46.B解析:本题中首先定义了一个字符串数组并初始化,初始化后使得str[0]='China',str[1]='Beijng',然后定义一个指针变量p并让其指向str,而在该二维数组中定义每个字符串的长度为10,所以p+10将指向str[1],因此最后输出*(p+10)的值为Beijng。所以,4个选项中选项B符合题意。
47.D解析:时间复杂度是指一个算法执行时间的相对度量;空间复杂度是指算法在运行过程中临时占用所需存储空间大小的度量。人们都希望选择一个既省存储空间、又省执行时间的算法。然而,有时为了加快算法的运行速度,不得不增加空间开销;有时为了能有效地存储算法和数据,又不得不牺牲运行时间。时间和空间的效率往往是一对矛盾,很难做到两全。但是,这不适用于所有的情况,也就是说时间复杂度和空间复杂度之间虽然经常矛盾,但是二者不存在必然的联系。因此,选项A、B、C的说法都是错误的。故本题的正确答案是D。
48.BB)【解析】软件开发阶段包括需求分析、总体设计、详细设计、编码和测试_五个阶段。其中需求分析阶段常用的工具是数据流图和数据字典。
49.D解析:在关系模型中,把数据看成一个二维表,每一个二维表称为一个关系。即关系模型是用表格数据来表示实体本身及其相互之间的联系。本题的正确答案是D。
50.B\nB)【解析】在E.R图中用矩形表示实体集,在矩形内写上该实体集的名字,用椭圆形表示属性,在椭圆形内写上该属性的名称,用菱形表示联系,菱形内写上联系名。
\n
51.D解析:C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。注意,大写字母和小写字母被认为是两个不同的字符。C语言中的关键字不能用作标识符。
52.D解析:一个源文件中的外部变量的作用域是从定义该变量的位置开始到本文件结束。
53.B解析:全程变量是可以在子函数中对其值作改变,且它也可作为函数间的值传递。但当函数或子函数中定义了与全程变量名称相同的局部变量,则全程变量将被屏蔽。
54.B解析:选项A)缺少分号,是一个表达式,而不是语句;选项C)包含一个不合法的运算符“++=”;选项D)应改为a=(int)i;。
55.D
56.D
57.B解析:t=1是将t赋值为1,所以循环控制表达式的值为1。判断t是否等于1时,应用t==1,注意“=”与“==”的用法。
58.B解析:本题考查带参数的宏的定义及相关运算:S=m+n+m+n*k=1+2+1+2*3=10。
59.B解析:T是R∪S的结果,关系T由属于关系R的或者属于关系S的元组组成。
60.C解析:函数fun的形参是简单变量,main函数中调用fun时只是把实参的值传递给形参,形参的改变不影响实参,所以调用完函数fun后a的值不发生变化,即a=31。
61.A标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。B选项int不是表达变量类型的标识符,它不能再用做变量名和函数名。C选项do是C语言的一个关键字。D选项标识符只能以字母或下划线开始。
62.D
63.A静态类别变量的生存期贯穿于整个程序的运行,直到程序运行结束为止,全局变量也是一样,静态局部变量的初值在编译时赋予,程序执行期间不再赋予其他值,即重复当调用函数时,函数内部的再次赋初值无效。
64.B解析:在本题中,选项B,实际是先计算关系表达式“‘A<=c’”的值是0还是1,再比较该值与字符‘Z’之间的大小关系,显然不能实现题目所要求的功能,而选项A,C,D都可以。
65.A一一k先自减再使用,所以第一次判断条件即为while(4),条件为真,执行打印k的值k=4—3,结果为1;第二次判断条件即为while(0),条件为假,结束循环,打印回车换行符。所以选择A选项。
66.C
67.D程序调试是由程序开发者完成诊断和改正程序中的错误的过程;软件测试是由专门的测试人员完成,是发现错误而执行程序的过程;软件维护是指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程,是软件生存周期中非常重要的一个阶段。
68.A使用900t0语句会使程序混乱,所以B)错误;一个结构化程序没有必要同时由顺序、分支、循环三种结构组成,所以c)错误;使用三种基本结构构成的程序可以解决任何复杂的问题。所以D)错误。
69.Breturn语句又称为返回语句。该语句的格式如下:“return;”和“return(<表达式>);”。其中,return是关键字。该语句有两种格式:不带返回值格式和带返回值格式。该语句用在被调用函数中,在被调用函数中执行到该语句时,将结束对被调用函数的执行,并把控制权返回给调用函数,继续执行调用函数后边的语句。在带有返回值的情况下,将return语句所带的表达武的值返回给调用函数,作为被调用函数的值。在被调用函数中,可以用return语句,也可以不用return语句。如果要求被调用函数有返回值,则一定要用return语句,采用return(<表达式>);格式。如果被调用函数不需要返回值,并且当被调用函数的所有语句执行完后进行返回,则被调用函数可以不用return语句。
70.B常见的实体之间的联系有一对一、一对多、多对一、多对多。如果对于实体集A中的每一个实体(工厂),实体集B中有n个实体(工人)(n≥0)与之联系,反之,对于实体集B中的每一个实体(工人),实体集A中至多只有一个实体(工厂)与之联系,则称实体集A与实体集B有一对多联系。
71.D
\n要想使程序输出25,则j-40=25,j=65,而j初值是50,所以填入for循环的语句,使引用的数组元素累加65-50=15即可,D选项中,i下标从0开始,i=2指向第3个数50+a[2]=50+10=60,继续循环60+a[3]=60+5=65,此时i=4跳出,循环结束。
\n
72.C解析:线性表、栈和队列所表达和处理的数据以线性结构为组织形式。栈是一种特殊的线性表,它只能在固定的一端进行插入和删除操作,又称后进先出表(LastInFirstOut);队列是插入在一端进行,删除在另一端进行的线性表,又称先进先出表(FirstInFirstOut)。
73.A
74.A函数fun的功能是将第二个字符串链接到第一个字符串的末尾,第二个字符串不变。所以选择A)。
75.D在格式输入中,要求给出的是变量的地址,而B)答案中给出的s[1]是一个值的表达式。
76.A程序模块化可以采用自顶向下、逐步细化的方法,所以A选项中“自底向上”的说法是错误的。故本题答案为A选项。
77.C
78.D
\nstatic变量是局部度量,函数无法修改,所以当i=1时,第2次进入f函数时c=5,所以最终main函数中C的值为5。
\n
79.A本题主要考查C语言中一些常见运算符的基本知识。在题目中,给出了四种不同的运算符,分别如下:
“/”是除法运算符。在C语言中,该运算符的作用是将两操作数进行除法运算,在更改运算符时,两操作数可以是同类型的数值类型,也可以是不同类型的数值类型。
“=”是赋值运算符。在C语言中,该运算符的作用是将运算符左边的结果值复制到右边的变量中保存,该运算符可以操作整型数据,也可以操作其他类型的数据。
“<”是小于关系运算符。如果左边的操作数小于右边,则返回真,否则返回假。该运算符可以操作整型数据,也可以操作其他类型的数据。
“%”是取余运算符。该运算符的作用是求两操作数相除后的余数,该运算符要求两操作数都不能为实数。
\r\n\r\n\r\n
80.C
81.
82.voidfun(STREC*a){inti;a->ave=0.0;for(i=0;i<N;i++)a->ave=a->ave+a->s[i];/*求各门课程成绩的总和*/a->ave=a->ave/N;/*求平均分*/}【解析】本题考查的是指向结构体类型的指针变量做参数和结构体类型成员的运算。fun函数中求出平均成绩,要带回主函数则必须定义一个指针类型的形参STREC*a,同时引用成员使用指向运算符,a->ave和a->s[i]。2021-2022年广东省肇庆市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.设长度为n的链队列用单循环链表表示,若只设头指针,则入队操作的时间复杂度为_______。
A.O(1)B.O(log2n)C.O(n)D.O(n2)
2.和顺序栈相比,链栈有一个比较明显的优势是()。
A.通常不会出现栈满的情况B.通常不会出现栈空的情况C.插入操作更容易实现D.删除操作更容易实现
3.以下说法中正确的是()。
A.C程序总是从第一个定义的函数开始执行
B.C程序总是从main函数开始执行
C.C函数必须有返回值,否则不能使用函数
D.C程序中有调用关系的所有函数必须放在同一个程序文件中
4.有下列程序:
main()
{inty=20;
do{y--;}while(--y);
phntf("%d\n",y--);
}
当执行程序时,输出的结果是()。
A.-1B.1C.4D.0
5.a、b、c、d变量均为float类型且已正确赋值,下列选项中与数学式子“2ab/(5cd)”等价的C语言表达式是()。
A.2/5*a/c*d/b
B.a/(5*c*d)*(2*b)
C.2*a*b/5*c*d
D.2/5*a*d*(1/c*d)
6.以下语句中,正确制作电子邮件链接的是()。
7.若有以下语句:typedefstructS{intg;charh;}T;以下叙述中正确的是()。A.可用S定义结构体变量B.可用T定义结构体变量C.S是struct类型的变量D.T是structS类型的变量
8.下列函数的类型是()。fun(doublex){floaty;y=3*x-4;returny;}
A.intB.不确定C.voidD.float
9.若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是A.#defineN10inta[N];B.#definen5inta[2*n];C.inta[5+5];
D.intn=10,a[n];
10.下面软件中,属中应用软件的是()
A.UnixB.人事管理系统C.数据库管理理系统D.DOS
11.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30
12.若有定义“intw[3][5];”,则以下不能正确表示该数组元素的表达式是()。
A.*(&w[0][0]+1)B.*(*w+3)C.*(*(w+1))D.*(w+1)[4]
13.函数fseek(pf,OL,SEEKEND)中的SEEKENE代表的起始点是()。
A.文件开始B.文件末尾C.文件当前位置D.以上都不对
14.数据处理的最小单位是()。
A.数据B.数据元素C.数据项D.数据结构
15.一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是()
A.不确定B.n-i+1C.iD.n-i
16.设有以下语句,其中不是对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))
17.广义表(a,b,c,d)的表头是()。
A.aB.(a)C.(b,c,d)D.((b,c,c))
18.以下关于指针的说法错误的是()。
A.可以向指针中写入任意数据
B.可以向指针所指内存单元中写入数据
C.指针可以指向与其基类型相同的普通变量
D.可以通过加法运算,使指针指向下一个内存单元
19.在以下的叙述中,正确的是()。
A.线性表的顺序存储结构优于链表存储结构
B.二维数组是其数据元素为线性表的线性表
C.栈的操作方式是先进先出
D.队列的操作方式是先进后出
20.C程序的基本模块为()。
A.表达式B.标识符C.语句D.函数
二、2.填空题(20题)21.二叉树的遍历可以分为三种:前序遍历、()遍历和后序遍历。
22.C语言用于结构化程序设计的3种基本结构是______、选择结构和循环结构。
23.下面函数用来求出两个整数之和,并通过形参传回两数相加之和值。请填空。
intadd(intx,inty,【】,)
{【】=x+y;}
24.在一个容量为25的循环队列中,若头指针front=16,尾指针rear=9,则该循环队列中共有【】个元素。
25.对于一棵具有n个结点的树,该树中所有结点的度为【】。
26.下列程序中的函数stropy2()实现字符串两次复制,即将t所指字符串复制两次到s所指内存空间中,合并形成一个新字符串。例如,若t所指字符串为:efgh,调用strcpy2后,s所指字符串为:efghefgh。请填空。
#include<stdio.h>
#include<string.h>
voidstrcpy2(char*s,char*t)
{char*p=t;
while(*s++=*t++);
s=【】;
while(【】=*p++);
}
main()
{charstr1[100]="abed",str2[]="efgh";
strcpy2(str1,str2);printf("%s\n",str1);
}
27.下列程序的输出结果是______。
#defineP(A)printf("%d,",(int)(A))
#definePRINT(A)P(A);printf("theend")
main()
{inti,a=0;
for(i=1;i<5.i++)
PRINT(a+i);
printf("\n");
}
28.在最坏情况下,堆排序需要比较的次数为()。
29.若线性表的长度经常发生变化,那么该线性表应采用的存储结构是【】。
30.软件的需求分析阶段的工作,可以概括为四个方面:【】、需求分析、编写需求规格说明书和需求评审。
31.以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:
abcl23edf456gh,执行程序后输出:123456。请填空。
#include<stdio.h>
#include<ctype,h>
main()
{chars[80],d[80];inti,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(【】){d[j]=s[i];j++;}
d[j]='\0';
puts(d);
}
32.fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大数,再求这N个最大值中最小的那个数并作为函数值返回。请填空。
#include<stdio.h>
#defineN100
intfun(int(*a)[N])
{introw,col,max,min;
for(row=0;row<N;row++)
{for(max=a[row][0],col=1;col<N;col++)
if(【】)max=a[row][col];
if(row==0)min=max;
elseif(【】)min=max;
}
returnmin;
}
33.以下程序中,fun()函数的功能是求3行4列二维数组每行元素中的最大值,请填空。
voidfun(int,int,int(*)[4],int*);
main()
{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
fun(3,4,a,b);
for(i=0;i<3;i++)printf("%4d",b[i]);
printf("\n");
}
voidfun(intm,intn,intar[][4],int*br)
{inti,j,x;
for(i=0;i<m;i++)
{x=ar[i][0];
for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];
______=x;
}
}
34.以下程序的功能是建立—个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data域不放数据,表空的条件是ph->next==NULL),请填空。
#include<stdio.h>
structlist{intdata;structlist*next;};
structlist*creatlist()
{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(struct
35.当数据的物理结构(存储结构)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【】。
36.对于长度为n的顺序存储的线性表,当随机插入和删除一个元素时,需平均移动元素的个数为【】。
37.以下程序的输出结果是【】。
main()
{inta=177;
printf(“%o\n”,A);
}
38.以下程序中函数fun的功能是求出能整除x且不是偶数的务正整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15。
请按题意,完成填空。
试题程序:
#include<stdio.h>
voidfun(intx,intpp[],int*n)
{inti,j=0;
【】;
if(x%i==0)pp[j++]=i;
【】;
}
main()
{intx,aa[1000],n,i;
printf("\nPleaseenteranintegernumber:\n");
scanf("%d",&x);
fun(x,aa,&n);
for(i=0;i<n;i++)printf("%d",aa[i]);
printf("\n");
}
39.树中度为零的结点称为______。
40.若按功能划分,软件测试的方法通常分为______测试方法和黑盒测试方法。
三、1.选择题(20题)41.对于下列定义,不正确的叙述是()。uniondata{inta;charb;doublec;}x=y;
A.变量x所占内存的长度等于成员c的长度
B.变量x的地址和它的各成员地址都是相同的
C.可以在定义时对x初始化
D.不能对变量x赋值,故x=y非法
42.设a、b、c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,值为0的表达式是______。
A.'a'&&'b',
B.a<=b
C.a||b+c&&b-c
D.!((a<<b)&&!c||1)
43.将E-R图转换到关系模式时,实体与联系都可以表示成________。
A.属性B.关系C.键D.域
44.有以下程序:main(){charch[]="uvwxyz",*pc;pc=ch;printf("%c\n",*(pc+5));}程序运行后的输出结果是()。
A.zB.0C.元素ch[5]地址D.字符y的地址
45.下面对对象概念描述错误的是()
A.任何对象都必须有继承性B.对象是属性和方法的封装体C.对象间的通讯靠消息传递D.操作是对象的动态属性
46.有以下程序:main(){charstr[][10]={"China","Beijing"),*p=str;printf("%s\n",p+10);}程序运行后的输出结果是()。
A.ChinaB.BeijngC.ngD.ing
47.下列叙述中正确的是()。
A.一个算法的空间复杂度大,则其时间复杂度也必定大
B.一个算法的空间复杂度大,则其时间复杂度必定小
C.一个算法的时间复杂度大,则其空间复杂度必定小
D.上述三种说法都不对
48.在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是()
A.逻辑设计B.需求分析C.详细设计D.物理设计
49.在关系数据库中,用来表示实体之间联系的是
A.树结构B.网结构C.线性表D.二维表
50.在E-R图中,用()来表示实体之间联系。
A.矩形B.菱形C.椭圆形D.正方形
51.下列可用于C语言标识符的一组是_______。
A.voidWORDdefine
B.a6$sysFor
C.2asizeofabc
D.Intdefinesizeof
52.一个源文件中的外部变量的作用域为()。
A.本文件的全部范围B.本程序的全部范围C.本函数的全部范围D.从定义该变量的位置开始到本文件结束
53.以下程序的结果是______。inta,b;voidfun(){a=100;b=200;}main(){inta=5;b=7fun();printf("%d%d\n",a,b);}
A.100200B.57C.200100D.75
54.若变量a,i已正确定义,且i已正确赋值,下面合法的语句是()。
A.a==1B.++i;C.a=a++=5;D.a=int(i);
55.打印当前屏幕内容应使用的控制键是()
A.Scroll-LockB.Num-LockC.PgDnD.PrtSc(PrintScreen)
56.下列程序的输出结果是______。main(){intn[5]={0,0,0},i,k=2;for(i=0;i
A.不确定的值B.2C.1D.0
57.已知intt=0;while(t=1){…}则以下叙述正确的是()。
A.循环控制表达式的值为0B.循环控制表达式的值为1C.循环控制表达式不合法D.以上说法都不对
58.下列程序的运行结果是()。#include<stdio.h>#defineADD(x)x+xmain(){intm=1,n=2,k=3;ints=ADD(m+n)*k;printf("s=%d",s);}
A.sum=18B.sum=10C.sum=9D.sum=25
59.设有如下关系表:
则下列操作中,正确的是()。
A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S
60.以下程序的输出结果是______。fun(intx,inty,intz){z=x*x+y*y;}main(){inta=31;fun(5,2,a);printf("%d",a);}
A.0B.29C.31D.无定值
四、选择题(20题)61.下列合法的声明语句是()。
A.intabc=50;
B.doubleint=3+5e2.5;
C.longdo=1L;
D.float3asd=3e一3;
62.
63.以下叙述中错误的是()。
A.全局变量的作用域一定比局部变量的作用域范围大
B.静态(static)类别变量的生存期贯穿于整个程序的运行期间
C.全局变量的生存期是整个程序的运行期间
D.静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值
64.已有定义:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断e中的字符是否为大写字母的表达式是()。
A.isupper(c)
B.A<=c<=Z
C.A<=cc<=Z
D.c<=(z-32)(a-32)<=c
65.有以下程序:
程序执行后的输出结果是()。
A.1B.2C.4D.死循环
66.
67.下列叙述中正确的是()。
A.软件测试应该由程序开发者来完成
B.程序经调试后一般不需要测试
C.软件维护只包括对程序代码的维护
D.以上三种说法都不对
68.以下关于结构化程序设计的叙述中正确的是()。A.在C语言中,程序的模块化是利用函数实现的
B.结构化程序使用sotoi吾句会很便捷
C.一个结构化程序必须同时由顺序、分支、循环三种结构组成
D.由三种基本结构构成的程序只能解决小规模的问题
69.以下关于return语句的叙述中正确的是()。
A.一个自定义函数中必须有一条return语句
B.一个白定义函数中可以根据不同情况设置多条return语句
C.定义成void类型的函数中可以有带返回值的return语句
D.没有return语句的自定义函数在执行结束时不能返回到调用处
70.一间工厂可有多个工人,则实体工厂和工人之间的联系是
A.一对一B.一对多C.多对一D.多对多
71.
若希望下列的程序运行后输出25,程序空白处的正确选项是()。
main
{intid=50,a[]=(7,4,10,5,8};
for()
j+=a[i];
printf("%d",j-40);
}
A.i=1;i<4;++i
B.i=l;i<3;++i
C.i=4;i>2;i--
D.i=2;i<4;++i
72.以下数据结构中不属于线性数据结构的是______。
A.队列B.线性表C.二叉树D.栈
73.
74.有以下程序
75.有定义语句:chars[10];,若要从终端给s输入5个字符,错误的输入语句是()。
A.gets(&s[0]);
B.scanf("%s",s+1);
C.gets(s);
D.scanf("%s",s[1]);
A.存储空间不一定连续,且各元素的存储顺序是任意的
B.存储空间不一定连续,且前件元素一定存储在后件元素的前面
C.存储空间必须连续,且前件元素一定存储在后件元素的前面
D.存储空间必须连续,且各元素的存储顺序是任意的
76.以下选项中关于程序模块化的叙述错误的是()。
A.可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序
B.把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块
C.把程序分成若干相对独立的模块,可便于编码和调试
D.可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序
77.
78.
下列程序的输出结果是()。
#include<stdio.h>
intfun(inta)
{intb=0;
staticintc=4:
a=c++:b++;
return(a):
main
{inta=2,i,c;
for(i=0:i<2;i++)
c=f(a+1):
printf("%d\n",c);
}
A.4B.7C.6D.5
79..C语言运算对象必须是整型的运算符是
A.%B./C.=D.<
80.
五、程序改错题(1题)81.下列给定程序中,函数fun的功能是:求两个非零正整数的最大公约数,并作为函数值返回。例如,若nmnl和num2分别为49和21,则输出的最大公约数为7;若num1和num2分别为27和81,则输也的最大公约数为27。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或硼行,也不得更改程序的结构!试题程序:
六、程序设计题(1题)82.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数,其功能是:求出该学生的平均分,并放入记录的ave成员中。例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun部位中填入你编写的若干语句。试题程序:#include<stdio.h>#defineN8typedefstruct{charnum[10];doubles[N];doubleave;}STREC;voldfun(STREC*a){}voidmainSTRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};inti;fun(&s);printf("The%ssstudentdata:\n",s.num);for(i=0;i<N;i++)printf("%4.1fkn",s.s[i]);printf("\nknave=%7.3fkn",s.aVe);printf("\n");}
参考答案
1.C
2.A
3.B解析:C++程序总是从main函数开始执行。
4.D解析:本题考查do…while循环。当--寸是0(即y是0)时结束循环,输出y--是先输出y的值再将y的值减1。
5.B解析:选项A和选项D中首先计算2/5,因为两个计算分量都是整型,所以结果为2,与实际运算不符;选项B中因为乘除法满足交换律,所以2*b放前面和放后面都是一样的,所以满足题目要求;选项C中的表达式等价于2abcd/5,所以不满足题目要求。故应该选择B。
6.C
7.B解析:语句typedefstructS{intg;charh;}T的作用是用T作为struetS{intg;charh;)的简写,所以选B。
8.A本题考查函数值的类型。在函数调用时,尽管Y的类型是float.x的类型是double,但是因为函数定义时没有指定类型说明,系统默认函数值的类型为int型,所以计算后Y的类型是int型。
9.D答案D
解析:在选项D中,n是一个整型的变量。C语言规定,在一维数组的定义中,其下标只能是常量表达式,不能包含变量。
10.B
11.B本题考查for循环的使用。对于第1个for循环,任何一个i,内层j的循环都要使j~0到3,j=4时不符合,所以退出j循环;然后i减1,J仍然要从0~3,j=4时退出J循环直到i变成0,退出i循环。第一条for语
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全球医疗科技创新的驱动因素和挑战考核试卷
- 太阳能器具在边防哨所的应用考核试卷
- 建筑装饰施工中的质量改进案例分析考核试卷
- 2025深圳经济特区物业管理委托合同
- 2025商品房销售合同协议范本
- 2025商业地产开发项目合同协议
- 2025企业商业房屋租赁合同范本
- 2025学校物业管理合同范例
- DB3207T 1040-2023青贮玉米品种连青贮101高产优 质栽培技术规程
- 二零二五版经营贷款合同范例
- 剪叉式升降工作平台作业专项施工方案24
- 2024中考地理复习知识要点提纲(-商务星球版-)
- 铅锌矿的矿石加工与冶炼技术改进
- 《群英会蒋干中计》课件 2023-2024学年高教版中职语文基础模块下册
- 2024年地基基础(基桩静荷载试验)知识考试题库(供参考)
- 保密管理与人工智能技术发展
- 毒理学新技术
- 新生儿贫血护理查房课件
- 电信电源专业应急预案
- “0”何去何从-小数近似数的教学思考与实践 论文
- GMW 17408-2017 Flexible Expanded Rubber And Rubber-Like Materials原版完整文件
评论
0/150
提交评论