




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2022-2023年福建省龙岩市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点的个数是()。
A.9B.11C.15D.不能确定
2.有以下程序:main(){intX,i;for(i=1;i<=50;i++){x=i;if(X%2=O)if(x%3=O)if(X%7=0)printf("%d,i)";}}输出结果是()。A.28B.27C.42D.41
3.下列数据结构中,按先进后出原则组织数据的是
A.线性链表B.栈C.循环链表D.顺序表
4.字符串"alibaba"的二进制哈夫曼编码有多少位()
A.11B.12C.13D.14
5.要求当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,以下不满足要求的表达式是()。A.A%2==1B.!(A%2==0)C.A%2D.!(A%2)
6.软件生命周期可分为定义阶段、开发阶段和维护阶段。详细设计属于()。
A.定义阶段B.开发阶段C.维护阶段D.上述三个阶段
7.当接受用户输入的含有空格的字符串时,应使用()函数。
A.gets()B.getchar()C.scanf()D.printf()
8.
9.有以下程序:#include<stdio.h>#definePT3.5;#defineS(x)PT*x*x;main(){inta=1,b=2;printf(“%4.1f\n”,S(a+b));}程序的运行结果是()。
A.7.5B.31.5C.程序有错,无输出结果D.14.0
10.有以下程序:#include<stdio.h>main(){inti,j,m=1;for(i=1;i<3;i++){for(j=3;j>0;j--){if(i*j>3)break;m*=i*j;}}printf(“m=%d\n”,m);}程序运行后的输出结果是()A.m=4B.m=2C.m=6D.m=5
11.在inta=3,int*p=&a;中,*p的值是()。
A.变量a的地址值B.无意义C.变量p的地址值D.3
12.下列说法正确的是()。
A.在C语言中,可以使用动态内存分配技术定义元素个数可变的数组
B.在c语言中,数组元素的个数可以不确定,允许随机变动
C.在C语言中,数组元素的数据类型可以不一致
D.在C语言中,定义一个数组后.就确定了它所容纳的元素的个数
13.假设以行序为主序存储二维数组array[100][100],设每个数据元素占2个存储单元,基地址为10,下标从0开始,则元素array[5][5]的地址为()。
A.808B.818C.1010D.1020
14.有以下程序:#includeMain(){intb[3][3]={0.1,2.0,1,2.0.1.2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t+=b[i][b[j][i]];printf(“%d\n”,t);程序运行后的输出结果是()。A.3B.4C.1D.9
15.当变量c的值不为2、4、6时,值为“真”的表达式是()。
A.(c>=2&&c<=6)&&(c%2!=1)
B.(c==2)||(c==4)||(c==6)
C.(c>=2&&c<=6)&&!(c%2)
D.(c>=2&&c<=6)||(c!=3)||(c!=5)
16.#define能作简单的替代,用宏来替代计算多项式5*x*x+5*x+5的值的函数f,正确的宏定义语句为()。
A.#definef(x)5*x*x+5*x+5
B.#definef5*X*x+5*x+5
C.#definef(a)(5*a*a+5*a+5)
D.#define(5*x*x+5*x+5)f(x)
17.以下叙述中错误的是
A.在函数外部定义的变量在所有函数中都有效
B.在函数内部定义的变量只能在本函数范围内使用
C.函数中的形参属于局部变量
D.在不同的函数中可以使用相同名字的变量
18.给定数列(541,132,984,746,518,181,946,314,205,827)按照从小到大的顺序排列,采用快速排序(以中间元素518为基准)的第一趟扫描结果是()
A.(541,132,827,746,518,181,946,314,205,984)
B.(205,132,314,181,518,746,946,984,541,827)
C.(132,541,746,984,181,518,314,946,205,827)
D.(132,541,746,518,181,946,314,205,827,984)
19.链表不具有的特点是A.A.不必事先估计存储空间
B.可随机访问任一元素
C.插入和删除不需要移动元素
D.所需空间与线性表长度成正比
20.有以下程序:#include<stdio.h>main(){char*p=“6938”;inti,s=0;for(i=3;i>=0;i--)s=10*s+p[i]-‘0’;printf(“%d\n”,s);}程序运行后的输出结果是()。
A.8396B.6938C.3869D.3689
二、2.填空题(20题)21.在程序设计阶段应该采取【】和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。
22.对于长度为n的顺序存储的线性表,当随机插入和删除一个元素时,需平均移动元素的个数为【】。
23.以下程序的运行结果是()。
main()
(inta=2,b=7,c=5;
switch(a>0)
{case1:switch(b<0)
{case1:switch(");break;
case2:printf("!");break;
}
case0:switch(c==5)
{case0:printf("*");break;
case1:printf("#");break;
case2:printf("$");break;
}
default:printf("&");
}
printf("\n");
}
24.在最坏情况下,冒泡排序的时间复杂度为【】。
25.若有定义语句chars[100],d[100];intj=0,i==0;且s中已赋字符串,请填空以实现拷贝。(注:不使用逗号表达式)
while(s[i]=【】;j++;}
d[j]=0;
26.以下程序的功能是输入任意整数给n后,输出n行由大写字母A开始构成的三角形字符阵列图形。例如,输入整数5时(注意:n不得大于10),程序运行结果如下:
ABCDE
FGHI
JKL
MN
O
请填空完成该程序。
main()
{inti,j,n;charch='A';
scanf("%d",&n);
if(n<11)
{for(i=1;i<=n;i++)
{for(j=1;j<=n-i+1;j++)
{printf("%2c",ch);
【】;
}
【】;
}
}
elseprintf("nistoolarge!\n")
printf("\n"0);
}
27.软件测试分为白箱(盒)测试和黑箱(盒)测试。等价类划分法属于【】测试。
28.软件的可移植性是用来衡量软件【】的重要尺度之一。
29.以下程序的输出是【】。
main()
{
charstrl[]]="Howdoyoudo",*p1=strl;
strcpy(strl+strlen(strl)/2,"esshe");
printf("%s\n",p1);
}
30.瀑布模型将软件生存周期划分为【】、开发和运行3个阶段。
31.下列程序的输出结果是______。
#include<stdio.h>
main()
{inta=2,b=-1,c=2;
if(a<b)
if(b<0)c=0;
elsec++;
printf("%d\n",c);
}
32.己定义charch='$';inti=l,j;,执行j=!ch&&ii++以后,i的值为【】。
33.以下程序运行后的输出结果是【】。
main()
{
intx=0210;
printf("%X\n",x);
}
34.关系数据库的关系演算语言是以【】为基础的DML语言。
35.以下程序段的输出结果是【】。
inti=9;
prinff("%o\n",i);
36.下面程序把从终端读入的10个整数以二进制的方式写到一个名为bi.dat的新文件中。请填空。
#include<stdio.h>
FILE*fp;
main()
{inti,j;
if((fp=fopen(【】,"wb"));=NULL)exit(0);
for(i=0;i<10;i++)
{scanf("%d",&j);
fwrite(&j,sizeof(int),1,【】);
}
fclose(fp);
}
37.在面向对象方法中,信息隐蔽是通过对象的______性来实现的。
38.软件工程研究的内容主要包括:【】技术和软件工程管理。
39.以下程序段的输出结果是【】。
main()
{inta=2,b=3,c=4;
a*=16+(b++)-(++c);
printf("%d",a);
}
40.线性表的存储结构主要分为顺序存储结构和链式存储结构。队列是一种特殊的线性表,循环队列是队列的【】存储结构。
三、1.选择题(20题)41.假设在turboc2.0采用small模式编译如下程序main(){chara[4]={'a','b'};char*b="abc";printf("%d,%d",sizeof(a),sizeof(b));}其输出结果为______。
A.4,2B.4,4C.4,3D.2,2
42.线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是()
A.每个元素都有一个直接前件和直接后件
B.线性表中至少要有一个元素
C.表中诸元素的排列顺序必须是由小到大或由大到小
D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件
43.12.以下说法中正确的是()
A.#define和printf都是C语句
B.#define是C语句,而printf不是
C.printf是C语句,但#define不是
D.#define和printf都不是C语句
44.有以下程序:fun(inti,intj){i++;j++;returni+j;}main(){inta=1,b=2,c=3;c+=fun(a,b)+a;printf("%d,%d,%d\n",a,b,c);}
A.1,2,9B.2,3,10C.1,2,10D.2,3,9
45.以下说法错误的是
A.一个算法应包含有限个步骤
B.在计算机上实现的算法是用来处理数据对象的
C.算法中指定的操作,不能通过已经实现的基本运算执行有限次后实现
D.算法的目的是求解
46.有以下程序:#include<stdio.h>main(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen("d1.dat","w");for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);fprintf(fp,"\n");fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d",&n);fclose(fp);printf("%d\n",n);程序的运行结果是()。
A.12300B.123C.1D.321
47.下列叙述中正确的是_______。
A.线性表是线性结构B.栈与队列是非线性结构C.线性键表是非线性结构D.二叉树是线性结构
48.下面四个选项中,均是不合法的用户标识符的选项是()。
A.AP_0doB.floatla0_AC.b-agotointD._123tempint
49.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及()。A.A.数据的存储结构B.计算方法C.数据映象D.逻辑存储
50.已经定义ch为字符型变量,以下赋值表达式中错误的是______。
A.ch='\'B.ch=62+3C.ch=NULLD.ch='\xaa'
51.以下程序的运行结果为______。main(){intx,*p,**q;x=10;p=&x;q=&p;printf("%d\n",**q);}
A.10B.9C.8D.11
52.下面程序的输出是______。main(){intx=3,y=6,a=0;while(x++!=(y-=1)){a+=1;if(y<x)break;}printf("x=%d,y=%d,a=%d\n",x,y,a);}
A.x=4,y=4,a=1B.x=5,y=5,a=1C.x=5,y=4,a=3D.x=5,y=4,a=1
53.若有“doublea;”,则正确的输入语句是()。
A.scanf("%1f",a);
B.scanf("%f",&a);
C.scanf("%1f",&a)
D.scanf("%le",&a);
54.以下程序运行后的输出结果是()main(){inta,b;a=50;b=90;printf("%d\n",(a,b))}
A.90B.5090C.50D.450
55.设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为______。
A.0B.1C.2D.3
56.有以下程序:main(){inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf("%d\n",C);}执行后的输出结果是()。
A.1B.2C.3D.4
57.下列说法不正确的是()。
A.一个C语言源程序可以由一个函数组成也可以由多个函数组成
B.main()中的“()”是函数的参数部分,括号内可为空,但括号不能省略
C.C语言程序是以函数为基本单位的
D.在C语言程序中,注释行只能位于一条语句的后面
58.有以下函数定义:
voidfun(intn,doublex){……}
若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是A.fun(inty,doublem);
B.k=fun(10,12.5);
C.fun(x,n);
D.voidfun(n,x);
59.下列所述中,是软件调试技术的是()。
A.错误推断B.集成测试C.回溯法D.边界值分析
60.在深度为5的满二叉树中,叶子结点的个数为()。
A.31B.32C.16D.15
四、选择题(20题)61.34.有以下程序
#include<stdio.h>
unionpw
{inti;
charch[2];
}a;
main()
{a.ch[0]=13;a.ch[1]=0;
printf("%d\n",a.i);
}
程序的输出结果是
A.13B.14
C.0D.20
62.简单的交换排序方法是()。
A.快速排序B.选择排序C.堆排序D.冒泡排序
63.已知
则以下叙述正确的是()。
A.循环控制表达式不合法B.循环控制表达式的值为0C.循环控制表达式的值为lD.以上说法都不对
64.有以下程序
#include<stdio.h>
structst
{intx,y,z;}data[2]={3,10,2,20,15,7};
main()
{structst*p=data;
printf("%d,",p->y);
printf("%d\n",(++p)->x);
}
程序的运行结果是
A.10,3B.20,3
C.10,20D.20,2
65.
66.
67.
68.
69.
下列程序输出结果是()。
#include<stdio.h>
main
{chara[]={a,b,C,d,e,f,\0).
inti,j;
i=sizeof(a);
j=strlen(a);
printf("%d,%d",i,j);
}
A.7,7B.7,6C.6,6D.6,7
70.以下选项中不能用做C程序合法常量的是()。
A.1,234B.‘\123’C.123D.“\x7G”
71.若有定义语句:
char}sl=‘’0K”,:Its2=”ok”;
以下选项中,能够输出“OK”的语句是()。
A.if(strcmp(sl,s2)!=0)puts(s2);
B.if(strcmp(sl,s2)!=0)puts(s1);
C.if(strcmp(sl,s2)==1)puts(s1);
D.if(strcmp(sl,s2)==0)puts(s1);
72.
有下列程序:
#include<stdio.h>
main
{intx=0;
inty=0;
while(x<7&&++v)
{y--;
x++;}
printf("%d,%d",y,x);
}
程序的输出结果是()。
A.0,7B.7,7C.0,6D.1,6
73.
有以下程序
#include<stdio.h>
structtt
(intx;structtt*y;)*P;
structtta[4]={20,a+1,15,a+2,30,a+3,17,a};
main
{inti;
p=a;
for(i=l;i<=2;i++){printf("%d,",p->x);P=p->y;}
}
程序的运行结果是()。
A.20,30,B.30,17,C.15,30,D.20,15,
74.
75.
76.若有定义语句:doublea,*p=&a;,以下叙述中错误的是()。
A.定义语句中的*号是一个间址运算符
B.定义语句中的*号只是一个说明符
C.定义语句中的P只能存放double类型变量的地址
D.定义语句中,*p=&n把变量a的地址作为初值赋给指针变量P
77.
78.
79.
有以下程序
#include<stdio.h>
main
{inta=1,b=2,c=3,x;
x=(a^b)&C;printf("%d",x);
}
程序的运行结果是()。
A.0B.1C.2D.3
80.
下述程序的输出结果是()。
#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[0][1]+a[1][1]+a[1][2]);}
A.8B.7C.12D.9
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:从m个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如输入8名学生的成绩:987867563489.578.576.5则低于平均分的学生人数为3(平均分为72.187500)。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.m个人的成绩存放在score数组中,请编写函数proc(),它的功能是:将高于平均分的人数作为函数值返回,将高于平均分的分数放在up所指的数组中。例如,当score数组中的数据为100,80,76,60,59,48,43,35,59时,函数返回的人数应该是4,up中的数据应为100,80,76,95。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.B
2.C只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42,故选择c选巩。
3.B解析:栈是限定在二端进行插入与删除的线性表。在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素,即栈是按照“先进后出”或“后进先出”的原则组织数据的。注意:队列组织数据的原则是“先进先出”或“后进后出”。注意:数据结构中,栈和队列组织数据的原则。
4.C
5.D
6.B解析:软件生命周期由软件定义、软件开发和软件维护三个阶段组成。软件定义可分为软件系统的可行性研究和需求分析两个阶段。软件开发阶段由5个阶段组成:概要设计、详细设计、编写代码、组装测试和确认测试。软件维护时期的主要任务是使软件持久地满足用户的需要。选项B正确。
7.A
8.D
9.C宏定义不是C语句,末尾不需要有分号。语句“printf(“%4.1f\\n”,S(a+b));”展开后为“printf(“%4.1f\\n”,3.5;*a+b*a+b;);”,所以程序会出现语法错误。故本题答案为C选项。
10.C第一次外循环的值为1,第一次内循环j的值为3,不满足条件执行m*=i*j即m的值为3;第二次j的值为2。不满足条件执行m*=i*j,即的值为6;第三次j的值为1,不满足条件执行m*=i*j,即m的值仍为6。第二次外循环的值2,j的值为3,满足条件执行break语句跳出循环。
11.D
12.D在C语言中,数组元素的个数是确定的,不允许随机变动,数组定义好后,它所能容纳的元素的个数也就确定了,并且同一个数组中所有元素都是同一类型。
13.C
14.B
15.D逻辑或运算中只要有一个运算量为真,结果就为真。当“c>=2&&c<=6”条件不成立时,c的值肯定不是2、3、4、5、6,“c!=3”与“c!=5”均成立,所以D选项的结果一定为真。故本题答案为D选项。
16.C解析:带参数宏的格式为:#define标识符(形参表)形参表达式。其功能是:在预处理程序中将程序中出现的所有带实参的宏名,展开成由实参组成的表达式。
17.A全局变量有效范围是从定义的位置开始到所在源文件的结束,在这区域内的函数才可以调用,如果在定义函数之后,定义的变量,该变量不能被之前的函数访问所以A选项说法错误,答案为A选项。
18.B
19.B链表是一种特殊的线性表,链表的存储结构与顺序存储结构不同,它的存储区域可以是任意的存储单元,对存储系统中零碎的存储部分具有更好的应用,在给其分配存储单元时,不必事先估计整个存储单元的空间大小;由于链表的元素是通过指针域的指针相连的,用链表存储数据时,对其进行插入和删除操作时,不需要移动其他元素,只需改变其直接前驱指针域,使其指向该结点,并将该结点的指针域修改为指向其直接后继结点即可。当然,不管是链表还是顺序存储,所需空间与线性表长度都成正比。在链式存储的链表结构中,由于后一结点数据被存储在哪里,只有通过前一结点的指针域才知道,因此,访问时只能是逐个访问,而不能实现随机访问。
20.A程序首先定义一个字符指针P,使其指向一个字符串“6938”。然后通过for循环使用逆序的方式遍历字符串的各个字符,并将各个字符当作整数参与算术运算。其中,“p[i]-‘0’”的含义是将字符串中的数字字符转换成对应的整数;“10*s+P[i]-‘0’”是将上一次运算结果乘以10后与转换后的整数相加,再累加到S中。所以for循环执行完后,S的值是将字符串“6938”逆序后当作整数输出。故本题答案为A选项。
21.自顶而下自顶而下
22.n/2n/2解析:删除一个元素,平均移动的元素个数为(n-1+n-2+…+0)/n=(n-1)/2;插入一个元素,平均移动元素个数为(n+n-1+n-2+…+1)/n=(n+1)/2;所以总体平均移动元素个数为n/2。
23.#&#&解析:刚开始时,switch后面的表达式a>0为真(1),与case1匹配,然后执行case1后面的switch语句,表达式b<0值为0,没有与其匹配的语句,返回外层,因为外层没有break语句,顺序执行case0后面的switch语句,表达式“c==5”值为1,与其后面的case1匹配,因此输出#,遇到break返回外层,又因为外层没有break语句,顺序执行default后的语句,输出&。
24.
解析:冒泡排序法是通过相邻数据元素的交换逐步将线性表变成有序。假设线性表的长度为n,则在最坏的情况下,冒泡排序需要经过遍的从前往后的扫描和遍的从后往前的扫描,需要的比较次数为。
25.s[i++]s[i++]解析:本题中为了能实现字符串的拷贝,需要使字符数组s从头到尾依次遍历其所有元素。本题应使用i的自增后置来实现。
26.ch++;或++ch;或ch=ch+1;或ch=1+ch;或ch+=1;priintf("\n");或putchar('\n');ch++;或++ch;或ch=ch+1;或ch=1+ch;或ch+=1;\r\npriintf('\\n');或putchar(\'\\n\');解析:因为ch被初始化为\'A\',而内循环中有—条输出ch的语句,整个程序都没有一条改变ch值的语句。所以,第1空应该填ch++或其它类似的表达式,以使每次输出一个字母后ch都能变为下一个字母。内循环结束后,代表这一行已经输出完毕,此时即将开始下一行的输出,所以在第2空位置应该输出一个换行符,故应填入printf('\\n');或其他等价形式。
27.黑箱或黑盒黑箱或黑盒解析:黑箱测试是根据程序规格说明所规定的功能来设计测试用例,它不考虑程序的内部结构和处理过程。常用的黑箱测试技术分为等价类划分、边界分析、错误猜测以及因果图等。
28.质量质量
29.HowdoessheHowdoesshe解析:strcpy(strl,s1):字符串拷贝函数,作用是将字符串s1拷贝到字符数组strl中去。strlen(str):测试字符串str的长度,函数的值为字符串中实际长度,不包括\'\\0\'在内。本题中strlen(strl)的值为13,则strcpy(strl+strlen(strl)/2,'esshe');相当于strcpy(strl+6,'esshe');,因此可得答案为Howdoesshe。
30.计划计划解析:瀑布模型是B.W.Boehm于1976年提出的。它将软件生存周期划分为计划、开发、运行3个时期,每个时期又分为若干个阶段。
31.22解析:分析程序,a=2,b=-1,c=2时,if语句的表达式a<b不成立,不再往下判断,直接退出if语句,执行后面的输出语句,程序结束。在这个程序中a、b、c的值没做任何改变。
32.11解析:本题中的ch是一个字符变量,其初始值为'$'(非0值即为真),所以!ch的结果为假,此时&&右边的i++被“短路”,即不会被计算。由此可见,i的值不会改变,故本题应该填1。
33.8888解析:C语言规定,以0开头的整型常量为八进制。另外,在primf()函数中,%X表示以十六进制无符号形式输出一个整数,且十六进制中的ABCDEF为大写字母。本题的输出应该是八进制210的十六进制形式。将八进制转换为十六进制,可以先将其转换为二进制。因为1位八进制表示3位二进制,4位二进制表示1位十六进制。(210)8=(10001000)2=(88)16,故本题输出为880
34.谓词演算谓词演算
35.1111解析:格式字符。是以八进制无符号形式输出整数(不输出前导符0),因为整数9的八进制为11,所以输出结果为11。
36."bi.dat"fp
37.封装封装
38.软件开发
39.2828解析:a*=16+(b++)-(++c)等价于a=a*(16+(b++)-(++c)),b++的值为3;++c的值为5,请注意前缀++和后缀++的用法。
40.顺序顺序解析:线性表的存储结构主要分为顺序存储结构和链式存储结构。当队列用链式存储结构实现时,就称为链队列;当队列用顺序存储结构实现时,就称为循环表。因此,本题划线处应填入“顺序”。
41.A解析:用small模式编译,指针变量占2个字节。sizeof(array):数组名array代表数组本身,sizeof函数测出的是整个数组的大小。a数组的大小为4,b指针变量的大小为2。
42.D解析:线性表可以为空表,排除选项B。第一个元素没有直接前件,最后一个元素没有直接后件,故排除选项A。线性表的定义中,元素的排列没有规定大小顺序,故选项C也有误,只有D项是正确的。
43.CC[解析]#define是宏命令,而不是C语句
44.A解析:本题主要考查了函数的调用作为表达式来使用,同时函数调用是按值传递的,函数中对形参的操作并不能影响到实参。函数fun(1,2)的返回值为5,而实参a的值保持不变仍为1,所以c+=fun(1,2)+1执行后,c=3+5+1=9。
45.C解析:算法是指为解决某个特定的问题而采取的确定且有限的步骤,一个算法应当具有以下几个特性:有穷性、确定性、可行性、有零个或多个输入和有一个或多个输出。C)答案是对算法可行性的解释,即算法中指定的操作,可以通过已经实现的基本运算执行有限次后实现。
46.B
47.A解析:一般将数据结构分为两大类型:线性结构与非线性结构。线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。
48.C解析:C语言规定的标识符只能由字母、数字和下划线3种字符组成,第一个字符必须为字母或下划线,并且不能使用C语言中的关键字作为标识符。选项C)中goto和int是关键字,b-a中'-'不是组成标识符的3种字符之一;选项D)中int是关键字,所以,均是不合法用户标识符的选项是C)。
49.A解析:数据结构作为计算机的一门学科,主要研究和讨论以下三个方面的问题:①数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;②在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;③对各种数据结构进行的运算。
50.A解析:反斜杠字符“\\”赋给字符,应该写成ch='\\\\',所以A是错误的。
51.A解析:程序中的p指向变量x,q被定义为二级指针,即指向指针的指针,其值为指针p的地址,因此,**q即是x,打印结果为10。
52.D解析:注意的是X++中x值的引用时,这里应当是先引用,后自加,具体执行过程如下:
第一次while循环;条件为真,执行a=a+1=1;此时,x的值已为4,判断y<x不成立,继续执行循环;
第二次while循环:条件为假,此时x的值已为5,退出while循环,执行printf。
53.D解析:函数scanf()的调用形式是:scanf(格式字符串,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的地址。本题中定义变量a为双精度型变量,双精度变量的格式符为“le”:变量的地址用取地址符“&”加变量名表示,如变量a的地址为“&a”。
54.A
55.A解析:C语言中比较表达式的运算结果为0或1。0代表不成立,1表示成立。
56.C解析:*p1=1,*p2=3,*p=3,指针p指向变量c,故正确选项为C。
57.D解析:本题涉及C语言基本的3个知识点:①C语言是以函数为基本单位的,每一个函数完成相对独立的功能,一个程序可以包括多个函数,但有且仅有一个主函数;②主函数main()的圆括号内是填写参数的,可以没有参数,但括号不可以省略;③程序的注释部分应该在“/*…………*/”之间,它允许出现在程序的任何位置。
58.C解析:选项A中应将y和m前面的函数的类型说明符去掉,故选项A不正确;选项B中函数传了2个参数,其中一个为整型一个为浮点型,而fun()函数在定义时声明的2个参数,一个为整型一个为双精度型,其参数类型不一致,故选项B不正确;选项D在调用函数时,不应该再声明其返回类型,故迭项D不正确.所以,4个选项中选项C符合题意。
59.C解析:软件调试技术包括强行排错法、回溯法和原因排除法。边界值分析、错误推断都是黑盒测试的方法。
60.C解析:二叉树的一个性质是,在二叉树的第k层上,最多有2(k-1)(k>=1)个结点。对于满二叉树,每一层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点。所以,在深度为5的满二叉树中,所有叶子结点在第5层上,即其结点数为2(k-1)=2(5-1)=16。
61.A本题主要考查联合体的内容。关于联合体,我们需要注意以下几个特点。
(1)联合体不允许做初始化赋值,赋值只能在程序中进行。
(2)由于联合体成员共享存储空间的原因,导致一个联合体变量每次只能给一个成员变量赋值,而且联合体中所有成员的首地址相同,即都是变量的地址。
(3)联合体的存储空间与其成员变量中所需空间最大的变量保持一致,即联合变量的长度等于各成员中最长的长度。
在本题中,程序首先定义了一个联合体和一个该联合体的联合体变量a,在主函数中,分别用两条语句给联合体成员赋值,由于ch是一个数组,它的元素仍按普通数组一样排列。程序要求的输出结果是a.i,由于联合体中所有成员的首地址相同,即a.i与a.ch的首地址相同,而在ch中第一个元素为13,因此,输出a.i的结果就为13。本题正确的答案是A。
62.D解析:所谓的交换类排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序是一种最简单的交换排序方法,它通过相邻元素的交换,逐步将线性表变成有序。
63.Cx=1是将X赋值为1,所以循环控制表达式的值为1。判断x是否等于l时,应用x==1,注意”=”与”==”的用法。
64.C本题考查结构体数组的相关操作。结构体数组的定义方法与结构体变量的定义方法一样,只不过将变量变为数组。数组内的各元素在内存中是连续存放的。题目中给出了一个结构体st,该结构体有三个整型成员x,y,z。结构体数组data元素的个数为2,并对数组进行初始化,data[0]={3,10,2},data[1]={20,15,7}。主函数main中定义了一个指针p指向数组data,第一个printf函数是输出p->y,即data[0].y,该值等于10。第二个printf函数是输出(++p)->x,++p使得指针p指向data[1],输出的目标为data[1].x,该值等于20。故输出结果为10,20。
65.B
66.A
67.A
68.C
69.B
\n本题要注意sizeof和strlen的区别,sizeof函数的功能是返回字符串所占的字节数,strlen函数的功能是返回字符串长度,\0是一个转义符,它占存储空间,但不计入串的长度。
\n
70.AA选项中逗号是一个操作符。
71.Bstrcmp(sl,s2)是字符串比较函数,比较规则是两个字符串自左向右逐个字符相比(按照ASCIl码值大小),-以第一个不相同的字符的大小作为比较结果。因为。O。<10.,所以strcmp(sl,s2)为负值,只有B选项正确。
72.A
\n本题考查while循环。在while循环中,y自加每次循环都加l,在循环体内y--每次减1,所以总的y值不变,当x自加到7时,不满足循环条件,循环结束。
\n
73.D
\n程序的结构体数组a的元素形成了一个单向的循环链表,每个元素的指针成员都指向下一个元素的地址。
\n
74.C
75.B
76.C\ndoublea,*p=&a语句的意思是将a的值存放到指针变量P中,P是指针可以随意指向任何地址,所以答案C错误。
\n
77.C
78.C
79.D
\n首先计算1与2的或运算,再将其结果与3进行“与”运算,结果为00000011,即十进制数3。
\n
80.B\n根据判断本题共进行三次for循环,第一次执行for循环,p[1][0]=p[1][0]-1=3;第2次执行for循环,p[1][1]=p[1][1]-1=4;第3次执行for循环,[1][2]=1,最后输出的是a[o][1]+a[1][1]+a[1][2]=2+4+1=7。
\n
81.(1)错误:t=<[3];
正确:t+=s[k];
(2)错误:*aver=&ave;
正确:*aver=ave;
【解析】由函数proe()可知,变量t中存放所有学生成绩之和。因此,“t=s[k];”应改为“t+=s[k];”。题目中要求将学生的平均成绩由形参aver返回主函数中,因此,“*aver=&ave;”应改为“*aver=ave;”。
82.
【解析】要找出低于平均分数的学生记录,首先应该算出所有学生的平均成绩,然后将每一个学生的成绩与平均成绩相比较,将低于平均成绩的学生记录放入数组below中,最后将低于平均分的人数返回给主函数。
2022-2023年福建省龙岩市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点的个数是()。
A.9B.11C.15D.不能确定
2.有以下程序:main(){intX,i;for(i=1;i<=50;i++){x=i;if(X%2=O)if(x%3=O)if(X%7=0)printf("%d,i)";}}输出结果是()。A.28B.27C.42D.41
3.下列数据结构中,按先进后出原则组织数据的是
A.线性链表B.栈C.循环链表D.顺序表
4.字符串"alibaba"的二进制哈夫曼编码有多少位()
A.11B.12C.13D.14
5.要求当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,以下不满足要求的表达式是()。A.A%2==1B.!(A%2==0)C.A%2D.!(A%2)
6.软件生命周期可分为定义阶段、开发阶段和维护阶段。详细设计属于()。
A.定义阶段B.开发阶段C.维护阶段D.上述三个阶段
7.当接受用户输入的含有空格的字符串时,应使用()函数。
A.gets()B.getchar()C.scanf()D.printf()
8.
9.有以下程序:#include<stdio.h>#definePT3.5;#defineS(x)PT*x*x;main(){inta=1,b=2;printf(“%4.1f\n”,S(a+b));}程序的运行结果是()。
A.7.5B.31.5C.程序有错,无输出结果D.14.0
10.有以下程序:#include<stdio.h>main(){inti,j,m=1;for(i=1;i<3;i++){for(j=3;j>0;j--){if(i*j>3)break;m*=i*j;}}printf(“m=%d\n”,m);}程序运行后的输出结果是()A.m=4B.m=2C.m=6D.m=5
11.在inta=3,int*p=&a;中,*p的值是()。
A.变量a的地址值B.无意义C.变量p的地址值D.3
12.下列说法正确的是()。
A.在C语言中,可以使用动态内存分配技术定义元素个数可变的数组
B.在c语言中,数组元素的个数可以不确定,允许随机变动
C.在C语言中,数组元素的数据类型可以不一致
D.在C语言中,定义一个数组后.就确定了它所容纳的元素的个数
13.假设以行序为主序存储二维数组array[100][100],设每个数据元素占2个存储单元,基地址为10,下标从0开始,则元素array[5][5]的地址为()。
A.808B.818C.1010D.1020
14.有以下程序:#includeMain(){intb[3][3]={0.1,2.0,1,2.0.1.2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t+=b[i][b[j][i]];printf(“%d\n”,t);程序运行后的输出结果是()。A.3B.4C.1D.9
15.当变量c的值不为2、4、6时,值为“真”的表达式是()。
A.(c>=2&&c<=6)&&(c%2!=1)
B.(c==2)||(c==4)||(c==6)
C.(c>=2&&c<=6)&&!(c%2)
D.(c>=2&&c<=6)||(c!=3)||(c!=5)
16.#define能作简单的替代,用宏来替代计算多项式5*x*x+5*x+5的值的函数f,正确的宏定义语句为()。
A.#definef(x)5*x*x+5*x+5
B.#definef5*X*x+5*x+5
C.#definef(a)(5*a*a+5*a+5)
D.#define(5*x*x+5*x+5)f(x)
17.以下叙述中错误的是
A.在函数外部定义的变量在所有函数中都有效
B.在函数内部定义的变量只能在本函数范围内使用
C.函数中的形参属于局部变量
D.在不同的函数中可以使用相同名字的变量
18.给定数列(541,132,984,746,518,181,946,314,205,827)按照从小到大的顺序排列,采用快速排序(以中间元素518为基准)的第一趟扫描结果是()
A.(541,132,827,746,518,181,946,314,205,984)
B.(205,132,314,181,518,746,946,984,541,827)
C.(132,541,746,984,181,518,314,946,205,827)
D.(132,541,746,518,181,946,314,205,827,984)
19.链表不具有的特点是A.A.不必事先估计存储空间
B.可随机访问任一元素
C.插入和删除不需要移动元素
D.所需空间与线性表长度成正比
20.有以下程序:#include<stdio.h>main(){char*p=“6938”;inti,s=0;for(i=3;i>=0;i--)s=10*s+p[i]-‘0’;printf(“%d\n”,s);}程序运行后的输出结果是()。
A.8396B.6938C.3869D.3689
二、2.填空题(20题)21.在程序设计阶段应该采取【】和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。
22.对于长度为n的顺序存储的线性表,当随机插入和删除一个元素时,需平均移动元素的个数为【】。
23.以下程序的运行结果是()。
main()
(inta=2,b=7,c=5;
switch(a>0)
{case1:switch(b<0)
{case1:switch(");break;
case2:printf("!");break;
}
case0:switch(c==5)
{case0:printf("*");break;
case1:printf("#");break;
case2:printf("$");break;
}
default:printf("&");
}
printf("\n");
}
24.在最坏情况下,冒泡排序的时间复杂度为【】。
25.若有定义语句chars[100],d[100];intj=0,i==0;且s中已赋字符串,请填空以实现拷贝。(注:不使用逗号表达式)
while(s[i]=【】;j++;}
d[j]=0;
26.以下程序的功能是输入任意整数给n后,输出n行由大写字母A开始构成的三角形字符阵列图形。例如,输入整数5时(注意:n不得大于10),程序运行结果如下:
ABCDE
FGHI
JKL
MN
O
请填空完成该程序。
main()
{inti,j,n;charch='A';
scanf("%d",&n);
if(n<11)
{for(i=1;i<=n;i++)
{for(j=1;j<=n-i+1;j++)
{printf("%2c",ch);
【】;
}
【】;
}
}
elseprintf("nistoolarge!\n")
printf("\n"0);
}
27.软件测试分为白箱(盒)测试和黑箱(盒)测试。等价类划分法属于【】测试。
28.软件的可移植性是用来衡量软件【】的重要尺度之一。
29.以下程序的输出是【】。
main()
{
charstrl[]]="Howdoyoudo",*p1=strl;
strcpy(strl+strlen(strl)/2,"esshe");
printf("%s\n",p1);
}
30.瀑布模型将软件生存周期划分为【】、开发和运行3个阶段。
31.下列程序的输出结果是______。
#include<stdio.h>
main()
{inta=2,b=-1,c=2;
if(a<b)
if(b<0)c=0;
elsec++;
printf("%d\n",c);
}
32.己定义charch='$';inti=l,j;,执行j=!ch&&ii++以后,i的值为【】。
33.以下程序运行后的输出结果是【】。
main()
{
intx=0210;
printf("%X\n",x);
}
34.关系数据库的关系演算语言是以【】为基础的DML语言。
35.以下程序段的输出结果是【】。
inti=9;
prinff("%o\n",i);
36.下面程序把从终端读入的10个整数以二进制的方式写到一个名为bi.dat的新文件中。请填空。
#include<stdio.h>
FILE*fp;
main()
{inti,j;
if((fp=fopen(【】,"wb"));=NULL)exit(0);
for(i=0;i<10;i++)
{scanf("%d",&j);
fwrite(&j,sizeof(int),1,【】);
}
fclose(fp);
}
37.在面向对象方法中,信息隐蔽是通过对象的______性来实现的。
38.软件工程研究的内容主要包括:【】技术和软件工程管理。
39.以下程序段的输出结果是【】。
main()
{inta=2,b=3,c=4;
a*=16+(b++)-(++c);
printf("%d",a);
}
40.线性表的存储结构主要分为顺序存储结构和链式存储结构。队列是一种特殊的线性表,循环队列是队列的【】存储结构。
三、1.选择题(20题)41.假设在turboc2.0采用small模式编译如下程序main(){chara[4]={'a','b'};char*b="abc";printf("%d,%d",sizeof(a),sizeof(b));}其输出结果为______。
A.4,2B.4,4C.4,3D.2,2
42.线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是()
A.每个元素都有一个直接前件和直接后件
B.线性表中至少要有一个元素
C.表中诸元素的排列顺序必须是由小到大或由大到小
D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件
43.12.以下说法中正确的是()
A.#define和printf都是C语句
B.#define是C语句,而printf不是
C.printf是C语句,但#define不是
D.#define和printf都不是C语句
44.有以下程序:fun(inti,intj){i++;j++;returni+j;}main(){inta=1,b=2,c=3;c+=fun(a,b)+a;printf("%d,%d,%d\n",a,b,c);}
A.1,2,9B.2,3,10C.1,2,10D.2,3,9
45.以下说法错误的是
A.一个算法应包含有限个步骤
B.在计算机上实现的算法是用来处理数据对象的
C.算法中指定的操作,不能通过已经实现的基本运算执行有限次后实现
D.算法的目的是求解
46.有以下程序:#include<stdio.h>main(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen("d1.dat","w");for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);fprintf(fp,"\n");fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d",&n);fclose(fp);printf("%d\n",n);程序的运行结果是()。
A.12300B.123C.1D.321
47.下列叙述中正确的是_______。
A.线性表是线性结构B.栈与队列是非线性结构C.线性键表是非线性结构D.二叉树是线性结构
48.下面四个选项中,均是不合法的用户标识符的选项是()。
A.AP_0doB.floatla0_AC.b-agotointD._123tempint
49.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及()。A.A.数据的存储结构B.计算方法C.数据映象D.逻辑存储
50.已经定义ch为字符型变量,以下赋值表达式中错误的是______。
A.ch='\'B.ch=62+3C.ch=NULLD.ch='\xaa'
51.以下程序的运行结果为______。main(){intx,*p,**q;x=10;p=&x;q=&p;printf("%d\n",**q);}
A.10B.9C.8D.11
52.下面程序的输出是______。main(){intx=3,y=6,a=0;while(x++!=(y-=1)){a+=1;if(y<x)break;}printf("x=%d,y=%d,a=%d\n",x,y,a);}
A.x=4,y=4,a=1B.x=5,y=5,a=1C.x=5,y=4,a=3D.x=5,y=4,a=1
53.若有“doublea;”,则正确的输入语句是()。
A.scanf("%1f",a);
B.scanf("%f",&a);
C.scanf("%1f",&a)
D.scanf("%le",&a);
54.以下程序运行后的输出结果是()main(){inta,b;a=50;b=90;printf("%d\n",(a,b))}
A.90B.5090C.50D.450
55.设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为______。
A.0B.1C.2D.3
56.有以下程序:main(){inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf("%d\n",C);}执行后的输出结果是()。
A.1B.2C.3D.4
57.下列说法不正确的是()。
A.一个C语言源程序可以由一个函数组成也可以由多个函数组成
B.main()中的“()”是函数的参数部分,括号内可为空,但括号不能省略
C.C语言程序是以函数为基本单位的
D.在C语言程序中,注释行只能位于一条语句的后面
58.有以下函数定义:
voidfun(intn,doublex){……}
若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是A.fun(inty,doublem);
B.k=fun(10,12.5);
C.fun(x,n);
D.voidfun(n,x);
59.下列所述中,是软件调试技术的是()。
A.错误推断B.集成测试C.回溯法D.边界值分析
60.在深度为5的满二叉树中,叶子结点的个数为()。
A.31B.32C.16D.15
四、选择题(20题)61.34.有以下程序
#include<stdio.h>
unionpw
{inti;
charch[2];
}a;
main()
{a.ch[0]=13;a.ch[1]=0;
printf("%d\n",a.i);
}
程序的输出结果是
A.13B.14
C.0D.20
62.简单的交换排序方法是()。
A.快速排序B.选择排序C.堆排序D.冒泡排序
63.已知
则以下叙述正确的是()。
A.循环控制表达式不合法B.循环控制表达式的值为0C.循环控制表达式的值为lD.以上说法都不对
64.有以下程序
#include<stdio.h>
structst
{intx,y,z;}data[2]={3,10,2,20,15,7};
main()
{structst*p=data;
printf("%d,",p->y);
printf("%d\n",(++p)->x);
}
程序的运行结果是
A.10,3B.20,3
C.10,20D.20,2
65.
66.
67.
68.
69.
下列程序输出结果是()。
#include<stdio.h>
main
{chara[]={a,b,C,d,e,f,\0).
inti,j;
i=sizeof(a);
j=strlen(a);
printf("%d,%d",i,j);
}
A.7,7B.7,6C.6,6D.6,7
70.以下选项中不能用做C程序合法常量的是()。
A.1,234B.‘\123’C.123D.“\x7G”
71.若有定义语句:
char}sl=‘’0K”,:Its2=”ok”;
以下选项中,能够输出“OK”的语句是()。
A.if(strcmp(sl,s2)!=0)puts(s2);
B.if(strcmp(sl,s2)!=0)puts(s1);
C.if(strcmp(sl,s2)==1)puts(s1);
D.if(strcmp(sl,s2)==0)puts(s1);
72.
有下列程序:
#include<stdio.h>
main
{intx=0;
inty=0;
while(x<7&&++v)
{y--;
x++;}
printf("%d,%d",y,x);
}
程序的输出结果是()。
A.0,7B.7,7C.0,6D.1,6
73.
有以下程序
#include<stdio.h>
structtt
(intx;structtt*y;)*P;
structtta[4]={20,a+1,15,a+2,30,a+3,17,a};
main
{inti;
p=a;
for(i=l;i<=2;i++){printf("%d,",p->x);P=p->y;}
}
程序的运行结果是()。
A.20,30,B.30,17,C.15,30,D.20,15,
74.
75.
76.若有定义语句:doublea,*p=&a;,以下叙述中错误的是()。
A.定义语句中的*号是一个间址运算符
B.定义语句中的*号只是一个说明符
C.定义语句中的P只能存放double类型变量的地址
D.定义语句中,*p=&n把变量a的地址作为初值赋给指针变量P
77.
78.
79.
有以下程序
#include<stdio.h>
main
{inta=1,b=2,c=3,x;
x=(a^b)&C;printf("%d",x);
}
程序的运行结果是()。
A.0B.1C.2D.3
80.
下述程序的输出结果是()。
#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[0][1]+a[1][1]+a[1][2]);}
A.8B.7C.12D.9
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:从m个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如输入8名学生的成绩:987867563489.578.576.5则低于平均分的学生人数为3(平均分为72.187500)。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.m个人的成绩存放在score数组中,请编写函数proc(),它的功能是:将高于平均分的人数作为函数值返回,将高于平均分的分数放在up所指的数组中。例如,当score数组中的数据为100,80,76,60,59,48,43,35,59时,函数返回的人数应该是4,up中的数据应为100,80,76,95。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.B
2.C只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42,故选择c选巩。
3.B解析:栈是限定在二端进行插入与删除的线性表。在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素,即栈是按照“先进后出”或“后进先出”的原则组织数据的。注意:队列组织数据的原则是“先进先出”或“后进后出”。注意:数据结构中,栈和队列组织数据的原则。
4.C
5.D
6.B解析:软件生命周期由软件定义、软件开发和软件维护三个阶段组成。软件定义可分为软件系统的可行性研究和需求分析两个阶段。软件开发阶段由5个阶段组成:概要设计、详细设计、编写代码、组装测试和确认测试。软件维护时期的主要任务是使软件持久地满足用户的需要。选项B正确。
7.A
8.D
9.C宏定义不是C语句,末尾不需要有分号。语句“printf(“%4.1f\\n”,S(a+b));”展开后为“printf(“%4.1f\\n”,3.5;*a+b*a+b;);”,所以程序会出现语法错误。故本题答案为C选项。
10.C第一次外循环的值为1,第一次内循环j的值为3,不满足条件执行m*=i*j即m的值为3;第二次j的值为2。不满足条件执行m*=i*j,即的值为6;第三次j的值为1,不满足条件执行m*=i*j,即m的值仍为6。第二次外循环的值2,j的值为3,满足条件执行break语句跳出循环。
11.D
12.D在C语言中,数组元素的个数是确定的,不允许随机变动,数组定义好后,它所能容纳的元素的个数也就确定了,并且同一个数组中所有元素都是同一类型。
13.C
14.B
15.D逻辑或运算中只要有一个运算量为真,结果就为真。当“c>=2&&c<=6”条件不成立时,c的值肯定不是2、3、4、5、6,“c!=3”与“c!=5”均成立,所以D选项的结果一定为真。故本题答案为D选项。
16.C解析:带参数宏的格式为:#define标识符(形参表)形参表达式。其功能是:在预处理程序中将程序中出现的所有带实参的宏名,展开成由实参组成的表达式。
17.A全局变量有效范围是从定义的位置开始到所在源文件的结束,在这区域内的函数才可以调用,如果在定义函数之后,定义的变量,该变量不能被之前的函数访问所以A选项说法错误,答案为A选项。
18.B
19.B链表是一种特殊的线性表,链表的存储结构与顺序存储结构不同,它的存储区域可以是任意的存储单元,对存储系统中零碎的存储部分具有更好的应用,在给其分配存储单元时,不必事先估计整个存储单元的空间大小;由于链表的元素是通过指针域的指针相连的,用链表存储数据时,对其进行插入和删除操作时,不需要移动其他元素,只需改变其直接前驱指针域,使其指向该结点,并将该结点的指针域修改为指向其直接后继结点即可。当然,不管是链表还是顺序存储,所需空间与线性表长度都成正比。在链式存储的链表结构中,由于后一结点数据被存储在哪里,只有通过前一结点的指针域才知道,因此,访问时只能是逐个访问,而不能实现随机访问。
20.A程序首先定义一个字符指针P,使其指向一个字符串“6938”。然后通过for循环使用逆序的方式遍历字符串的各个字符,并将各个字符当作整数参与算术运算。其中,“p[i]-‘0’”的含义是将字符串中的数字字符转换成对应的整数;“10*s+P[i]-‘0’”是将上一次运算结果乘以10后与转换后的整数相加,再累加到S中。所以for循环执行完后,S的值是将字符串“6938”逆序后当作整数输出。故本题答案为A选项。
21.自顶而下自顶而下
22.n/2n/2解析:删除一个元素,平均移动的元素个数为(n-1+n-2+…+0)/n=(n-1)/2;插入一个元素,平均移动元素个数为(n+n-1+n-2+…+1)/n=(n+1)/2;所以总体平均移动元素个数为n/2。
23.#&#&解析:刚开始时,switch后面的表达式a>0为真(1),与case1匹配,然后执行case1后面的switch语句,表达式b<0值为0,没有与其匹配的语句,返回外层,因为外层没有break语句,顺序执行case0后面的switch语句,表达式“c==5”值为1,与其后面的case1匹配,因此输出#,遇到break返回外层,又因为外层没有break语句,顺序执行default后的语句,输出&。
24.
解析:冒泡排序法是通过相邻数据元素的交换逐步将线性表变成有序。假设线性表的长度为n,则在最坏的情况下,冒泡排序需要经过遍的从前往后的扫描和遍的从后往前的扫描,需要的比较次数为。
25.s[i++]s[i++]解析:本题中为了能实现字符串的拷贝,需要使字符数组s从头到尾依次遍历其所有元素。本题应使用i的自增
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业文化体验旅游创新创业项目商业计划书
- 金融合规服务创新创业项目商业计划书
- 汽车客户关系管理系统升级创新创业项目商业计划书
- 2025年共青城市市级机关公开遴选考试笔试试题(含答案)
- 消费者购物体验研究创新创业项目商业计划书
- 编程乐园探险记创新创业项目商业计划书
- 智能化烹饪菜谱创新工具创新创业项目商业计划书
- 2025年数字艺术市场创作与交易政策环境分析报告
- 2025年文化创意产品创新研发资金申请策略研究报告
- 2025年心血管疾病心血管疾病心血管疾病患者教育项目市场前景报告
- 西餐烹调工艺与实训PPT全套完整教学课件
- 北京市建筑施工作业人员安全生产知识教育培训考核试卷(A-B-C-D-E)【完整版】
- ZZ031 园林微景观设计与制作赛项赛题-2023年全国职业院校技能大赛拟设赛项赛题完整版(10套)
- 北师大版古诗
- GB/T 9634.8-2018铁氧体磁心表面缺陷极限导则第8部分:PQ型磁心
- GB/T 27749-2011绝缘漆耐热性试验规程电气强度法
- 金风风电Vensys变桨系统课件
- 【高校辅导员资料】高校辅导员理论与实务
- 工程项目成本核算制度
- um-joyo c2001跨平台监控防误一体化系统使用说明书
- 中央供料系统介绍
评论
0/150
提交评论