![2021-2022年甘肃省酒泉市全国计算机等级考试C语言程序设计_第1页](http://file4.renrendoc.com/view/01fe0c49eb31b4274629d14071192097/01fe0c49eb31b4274629d140711920971.gif)
![2021-2022年甘肃省酒泉市全国计算机等级考试C语言程序设计_第2页](http://file4.renrendoc.com/view/01fe0c49eb31b4274629d14071192097/01fe0c49eb31b4274629d140711920972.gif)
![2021-2022年甘肃省酒泉市全国计算机等级考试C语言程序设计_第3页](http://file4.renrendoc.com/view/01fe0c49eb31b4274629d14071192097/01fe0c49eb31b4274629d140711920973.gif)
![2021-2022年甘肃省酒泉市全国计算机等级考试C语言程序设计_第4页](http://file4.renrendoc.com/view/01fe0c49eb31b4274629d14071192097/01fe0c49eb31b4274629d140711920974.gif)
![2021-2022年甘肃省酒泉市全国计算机等级考试C语言程序设计_第5页](http://file4.renrendoc.com/view/01fe0c49eb31b4274629d14071192097/01fe0c49eb31b4274629d140711920975.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年甘肃省酒泉市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.
2.下列描述中正确的是______。A.软件工程只是解决软件项目的管理问题
B.软件工程主要解决软件产品的生产率问题
C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则
D.软件工程只是解决软件开发中的技术问题
3.有以下程序:main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}执行后输出结果是()。
A.77B.88C.810D.1010
4.若有函数内部说明:inta[3][4];则数组a中各元素
A.可在程序的运行阶段得到初值0
B.可在程序的编译阶段得到初值0
C.不能得到确定的初值
D.可在程序的编译或运行阶段得到初值0
5.若用一个大小为6的数值来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为()。
A.1和5B.2和4C.4和2D.5和1
6.以下选项中,不能作为合法常量的是
A.1.234e04B.1.234e0.4C.1.23E+4D.1.234e0
7.若已定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素不正确的引用是______。
A.a[p-a]B.*(&a[i])C.p[i]D.a[10]
8.第
17
题
若有条件表达式(exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是
A.(exp==0)B.(exp!=0)C.(exp==1)D.(exp!=1)
9.已定义以下函数“intfun(int*p){return*p;}”,fun函数的返回值是()。
A.—个整数B.不确定的值C.形参p中存放的值D.形参p的地址值
10.有以下程序:#include<stdio.h>main(){inta=7;while(a--);print[("%d\n",a);}程序运行后的输出结果是()。A.-1B.0C.1D.7
11.以三级模式为框架形成的3种数据库中,真实存在于计算机外存的数据库是()。
A.概念数据库B.用户数据库C.物理数据库D.逻辑数据库
12.若有以下程序
则程序的输出结果是
A.3B.7C.6D.10
13.执行以下程序后,a,b的值分别为main(){ina,b,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;b=(*p1)/(*p2)+7;printf("a=%d\n",a);printf("b=%d\n",b);}
A.-1,5B.1,6C.0,7D.4,10
14.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指()
A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程
15.一个序列中有10000个元素,若只想得到其中前10个最小元素,最好采用_______方法
A.快速排序B.堆排序C.插入排序D.二路归并排序
16.下列数据结构中,按先进后出原则组织数据的是
A.线性链表B.栈C.循环链表D.顺序表
17.设ch是char型变量,值为'A',则表达式ch=(ch>='A'&&ch<='Z')?ch+32:ch的值是()。
A.ZB.aC.zD.A
18.下面软件中,属中应用软件的是()
A.UnixB.人事管理系统C.数据库管理理系统D.DOS
19.在目标串T[0,n-1]=”xwxxyxy”中,对模式串p[0,m-1]=”xy”进行子串定位操作的结果_______
A.0B.2C.3D.5
20.用数组r存储静态链表,结点的next域指向后继,工作指针j指向链中结点,使j沿链移动的操作为()。
A.j=r[j].nextB.j=j+1C.j=j->nextD.j=r[j]->next
二、2.填空题(20题)21.下列程序执行后输出的结果是【】。
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);
22.以下程序中,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(i=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];
______=X;
}
}
23.设x和y均为int型变量,且x=1,y=2,则表达式double(1+x/y)的值为【】。
24.设有以下程序,为使之正确运行,请在横线中填入应包含的命令行。(注:try_me()函数在a:\myfile.txt中有定义。)
______
main()
{printf("\n");
try_me();
printf("\n");}
25.以下程序的输出结果是______。
main()
{ints,i;
for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n".s);
}
26.如果输入'1'、'2'、'3'、'4',则以下程序的运行结果为【】。
#include<stdio.h>
main()
{charc;
inti,k;
k=0;
for(i=0;i<4;i++)
{while(1)
{c=getchar();
if(c>='0'&&c<='9')break;
}
k=k*10+c-'0';
}
printf("k=%d\n",k);
}
27.算法的复杂度主要包括【】复杂度和空间复杂度。
28.下列程序的功能是对输入的一行字符中的数字字符的字面值累加,输出此累加和,请填空。
#include<stdio.h>
#include<ctype.h>
main()
{charc;
inta,s=0;
while(______)
if(isdigit(C))
{a=c-'0';s+=a;}
printf("s=%d",s);
}
29.算法的复杂度主要包括时间复杂度和______复杂度。
30.若有程序
main()
{inti,j;
scanf("i=%d,j=%d",&i,&j);
printf("i=%d,j-%d\n",i,j);
}
要求给i赋10,给j赋20,则应该从键盘输入______。
31.以下程序输出的结果是______。
mazn()
{inta=5,b=4,c=3,d;
d=(a>b>C);
printf("%d\n",D);
}
32.有以下程序:
floatf1(floatn)
{returnn*n;}
floatf2(floatn)
{return2*n;}
main()
{float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;
p1=f1;p2=f2;
y1=p2(p1(2.0));
t=P1;p1=p2;p2=t;
y2=p2(p1(2.0));
printf("%3.0f,%3.0f\n",y1,y2);
}
程序运行后的输出结果是【】。
33.表示“整数x的绝对值大于5”时值为“假”的C语言表达式是______。
34.若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为【】。
35.下列表达式用于判断y是否为闰年。闰年的判断条件是:年号能被4整除但不能被100整除或年号能被400整除,请填空______。
36.软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和【】的设计来实现。
37.下列程序段的运行结果是______。
charstr口="ABCD",*p=str;
printf("%d\n",*(p+3));
38.测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。
39.若有程序
main()
{inti,j;
scanf("i=%d,j=%d",&i,&j);
pfintf("i=%d,j=%d\n",i,j);
}
要求给i赋10,给j赋20,则应该从键盘输入【】。
40.以下程序的运行结果是()。
intk=0;
voidfun(intm)
{m+=k;k+=m;printf("m=%d\nk=%d",m,k++);}
main()
{inti=4;
fun(i++);printf("i=%dk=%d\n",i,k);
}
三、1.选择题(20题)41.以下语句或语句组中,能正确进行字符串赋值的是______。A.char*sp;*sp="right!";
B.chars[10];s="right!";
C.chars[10];*s="right!";
D.char*sp="right!";
42.下面程序段的运行结果是chara[]="lanuage",*p;p=a;while(*p!='u'){printf("%c",*p-32);p++;}
A.LANGUAGEB.languageC.LAND.langUAGE
43.C语言中while循环和do-while循环的主要区别是______。
A.do-while的循环体至少无条件执行一次
B.while的循环控制条件比do-while的循环控制条件严格
C.do-while允许从外部转到循环体内
D.do-while的循环体不能是复合语句
44.下列程序的输出结果是()。
main
{
doubled=3.2;intx,y;
x=1.2;y=(x+3.8)/5.0;
printf("%d\n",d*y);
}
A.3B.3.2C.0D.3.07
45.以下不正确的叙述是A.A.在C程序中,逗号运算符的优先级最低
B.在C程序中,APH和aph是两个不同的变量
C.若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
46.在C语言中,while和do…while循环的主要区别是()。
A.do…while的循环体不能是复合语句
B.do…while允许从循环体外转到循环体内
C.while的循环体至少被执行一次
D.do…while的循环体至少被执行一次
47.现有定义inta;doubleb;floatc;chark;,则表达式a/b+c-k值的类型为:
A.intB.doubleC.floatD.char
48.下列程序的执行结果是()。#include<stdio.h>main(){inta,b,c;a=b=2;c=(a++)-1;printf("%d,%d",a,c);c+=-a+++(++b);printf("%d,%d",a,c);}
A.3,14,1B.3,14,2C.2,04,1D.2,14,1
49.以下选项中可作为C语言合法常量的是()。
A.-80B.-80C.-80.0D.-80.0e
50.下列关于标识符的说法中错误的是
A.合法的标识符是由字母、数字和下划线组成
B.C语言的标识符中,大写字母和小写字母被认为是两个不同的字符
C.C语言的标识符可以分为三类,即关键字、预定义标识符和用户标识符
D.用户标识符与关键字不同时,程序在执行时将给出出错信息
51.结构化程序设计主要强调的是______。
A.程序的规模B.程序的易读性C.程序的执行效率D.程疗的可移植性
52.有以下函数定义:
voidfun(intn,doublex){……}
若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是A.fun(inty,doublem);
B.k=fun(10,12.5);
C.fun(x,n);
D.voidfun(n,x);
53.若有定义:inta=4,b=5;floatx=3.4,y=2.1;,则下列表达式的值为()。
(float)(a+b)/2+(int)x%(int)y
A.5.5B.55C.5.500000D.55.00000
54.软件生命周期中花费费用最多的阶段是
A.详细设计B.软件编码C.软件测试D.软件维护
55.以下对联合类型叙述正确的是()。
A.可以对联合变量名直接赋值
B.使用联合变量的目的是为了节省内存
C.任何一个联合变量可以同时引用联合中的不同成员
D.联合类型定义中不能同时出现结构类型的成员
56.以下函数值的类型是_______。fun(floatx){floaty;y=3*x-4;returny;}
A.intB.不确定C.voidD.float
57.数据处理的最小单位是()。
A.数据B.数据元素C.数据项D.数据结构
58.下列对于线性链表的描述中正确的是______。
A.存储空间不一定是连续,且各元素的存储顺序是任意的
B.存储空间不一定是连续,且前件元素一定存储在后件元素的前面
C.存储空间必须连续,且各前件元素一定存储在后件元素的前面
D.存储空间必须连续,且各元素的存储顺序是任意的
59.完整的计算机存储器应包括______。
A.软盘、硬盘B.磁盘、磁带、光盘C.内存储器、外存储器D.RAM、ROM
60.有以下程序段:main(){inta=5,*b,**c;c=&b;b=&a;}程序在执行了c=&b;b=&a;语句后,表达式**c的值是______。
A.变量a的地址B.变量b中的地址C.变量a中的值D.变量b的地址
四、选择题(20题)61.以下选项中正确的定义语句是()。
A.double,a,b;B.doublea=b=7;C.doublea;b;D.doublea=7,b=7;
62.程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、p、q均已正确定义,并用于指向链表结点,指针变量s总是作为指针指向链表的第一个结点。
若有以下程序段:
该程序段实现的功能是()。
A.删除尾结点B.尾结点成为首结点C.删除首结点D.首结点成为尾结点
63.以下选项中合法的标识符是()。A.1_2B._12C.2_1D.12__
64.
65.
66.有以下程序:
程序运行后的输出结果是()。
A.116B.8C.40D.4
67.有以下程序程序运行后的输出结果是()。
A.4B.3C.1D.9
68.在数据管理技术发展的三个阶段中,数据共享最好的是()。
A.人工管理阶段B.文件系统阶段C.数据库系统阶段D.三个阶段相同
69.以下数组定义中错误的是()。
A.
B.
C.
D.
70.软件设计中衡量模块独立性的度量标准是()。
A.抽象和信息隐蔽B.局部化和封装化C.内聚性和耦合性D.激活机制和控制方法
71.
72.定义如下变量和数组:
则下面语句的输出结果是()。
A.951B.741C.753D.963
73.有以下程序:
程序运行后的输出结果是()。
A.2344B.4332C.1234D.1123
74.有以下程序:
#include<stdio.h>
structord
{intX,y;)dt[2]={1,2,3,4};
main()
{
structord*p=dt;
printf("%d,",++(p->x));printf("%d\n",++(p->y));
}
程序运行后的输出结果是()。
A.1,2
B.4,1
C.3,4
D.2,3
75.以下叙述中错误的是()。
A.可以通过typedef增加新的类型
B.可以用typedef将已存在的类型用一个新的名字来代表
C.用typedef定义新的类型名后,原有类型名仍有效
D.用typedef可以为各种类型起别名,但不能为变量起别名
76.
77.计算机能直接执行的程序是()。A.可执行程序B.目标程序C.汇编程序D.源程序
78.以下程序爱中,与语句:
79.有以下程序:
若运行时输入:246<;回车>;,则输出结果为()。
A.204B.200C.240D.246
80.
五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:将str所指字符串中的字母转换为按字母序列的后续字母(Z转换A,z转换a),其他字符不变。
请修改函数fun()中的错误,得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
六、程序设计题(1题)82.请编写一个函数proc(),它的功能是:将str所指字符串中所有下标为奇数位置的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入abcdel23,则应输出aBcDe123。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.D
2.C\r\n软件工程是试图用工程、科学和数学的原理与方法研制、维护计算机软件的有关技术及管理方法。软件工程的主要思想是强调在软件开发工程中需要应用工程化的原则。软件工程用来解决以下问题:软件需求的增长得不到满足、软件开发成本和进度无法控制、软件质量难以保证、软件不可维护或维护程度低、软件得成本不断提高、软件开发生产率的提高赶不上硬件的发展和应用需求的增长。软件项目的管理、软件产品的生产率、软件开发中的技术都是软件工程需要解决的部分问题。因此选项C正确。
3.C解析:本题考核的知识点是字符数组的定义、赋初值以及函数sizeof()的应用。本题中定义两个字符型数组,其中a省略了长度,定义了b的长度为10,并赋初值分别为“abcdefg”和“abcdfg”。所以a的长度为赋值给它的字符串的字符个数7加上一个结束转义字符,即a的长度为7+1为8.定义时b的长度定义为10,故b的长度为10,因此最后通过函数sizeof()求得的数组a和数组b的长度分别为8和10,所以,4个选项中选项C符合题意。
4.C本题主要考查数组的定义及初始化。在对数组进行定义和初始化时,需要注意以下事项。
(1)数组的内存空间在编译时确定,定义数组时的n值只能使用常量,不能使用变量。
(2)定义数组时可以不标明数组元素的个数,而是通过赋初值的方式确定,编译系统将自动计算花括号内的数据数量作为数组的元素个数。
(3)数组初始化时,当初值的个数小于整型常量n时,编译系统会自动补0。一旦给定初值数超过n,编译系统将报错。
(4)初始化数组的元素类型,必须与定义数组时的类型一致。
(5)数组名记录了数组在内存中的首地址,其值不能更改。
(6)除字符数组外,不能直接用数组名对数组进行整体输入或输出。
本题中定义了一个3行4列的数组,但没有对其进行赋初值操作,可能我们会想在系统编译时会自动补0,这只是在初值个数小于数组定义大小的情况下的操作,如果没有进行赋初值操作,数组中的元素值是不能被确定的。因此,本题答案选C。
5.B
6.B解析:C语言的语法规定,字母e(E)之前必须有数字,且e(E)后面的指数必须是整数,而选项B)中,e(E)后面的指数是小数,所以不合法。
7.D解析:通常,引用一个数组元素可以用下标法,如a[P-a]形式,或指针法,如*(&a[i])的形式。本题中a[9]=9,a[10]显然超出了数组范围,注意,数组的下标是从0开始的。
8.B解析:条件运算符要求有3个操作对象,称三目(元)运算符,它是C语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式17表达式2:表达式3其求解顺序是:先求解表达式1,若为非O(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。并且注意++、--的用法。
9.A函数返回值为指针变量指向的数据,该数据已被定义为整型。故本题答案为A选项。
10.A此题考查a--和--a之间的区别,当while(a--)为真循环执行,a--是执行再减1,所以答案选择A。
11.B
\n①以内模式为框架所组成的数据库,1物理数据库;②以概念模式为框架所组成的数据库叫概念数据库;③以外模式为框架所组成的数据库叫用户数据库。它是真实存在于计算机外存中的数据库。
\n
12.D第—个if语句a!=1条件为假,所以执行dse后的语句r=1。第二个if语句b==2条件成立,执行r+=2,r的值变为3,第三个if语句c!=3条件为假,所以不做任何操作。执行下面的r+=3操作,r的值变为6。判断第四个讧条件,d==4条件成立,执行r+=4操作,结果为10。
13.C解析:inta,b,k=4,m=6,*p1=&k,*p2=&m;声明整型变量a,b,k,m和指针p1,p2,并分别将4和6赋给k和m,将k和m的地址赋给P1和p2;a=p1==&m;等价于a=(p1==&m);将p1是否等于地址m的值(0)赋给变量a,b=(*p1)/(*p2)+7;该句的含义是将后面表达式的的值7赋给变量b。
14.B软件设计包括软件的结构设计、数据接口设计和过程设计。其中软件结构设计主要包括系统由哪些子系统构成,以及这些子系统之间的关系是怎样的,并将这些内容编写成文档;数据接口设计的任务是为每个子系统设计其与其他子系统间的接口,并编写成文档,这个接口要是一个无二义的接口,不需要子系统的操作知识就可以使用;过程设计是指系统结构部件转换成软件的过程描述。
15.B
16.B解析:栈是限定在二端进行插入与删除的线性表。在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素,即栈是按照“先进后出”或“后进先出”的原则组织数据的。注意:队列组织数据的原则是“先进先出”或“后进后出”。注意:数据结构中,栈和队列组织数据的原则。
17.B
18.B
19.C
20.A
21.1212解析:本题的第一个for循环用于给数组arr赋初值,第二个for循环用于求和运算。由于第二个for循环初始值为1,而循环条件为i<4,所以求的是arr[1]到arr[3]及i的和,所以输出结果为12。
22.br[i]或*(br+i)br[i]或*(br+i)解析:求最大值算法要求输入的一般是一系列数,例如一个数组,而输出只有一个值。计算时通常的做法是,首先将这一系列数的笫1个值保存到结果变量中,然后用一个指针或循环变量从头(或从第2个值)至尾遍历这一系列数,每次比较结果变量和被遍历的值,如果该值比结果大,则将该值保存到结果中。本题中,3行4列二维数组a显然是算法的输入值,而传给函数fun()的3和4在函数中起到限制循环次数的作用,所以它们代表输入数据的行列数.而传递给函数的一维数组b即没有初始化,最后又要输出它,所以数组b肯定是用来保存每行的最大值。在函数中是一个二重循环,外循环首先将ar[i][0]赋给x,然后内循环中比较x和ar[il刚,若x比较小就让x=ar[i][j],这就说明x是保存结果的临时变量.最后应该将x的值输出到数组b中,也就是形参br的相应位置。故在空格处应该填的内容为br[i]或者写成指针方式*(br+i)。
23.11解析:本题考查两个知识点:一是x/y的值为整型,即为0;二是数1是double类型。
24.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本题考查了函数的存储分类的概念。如果没有特别说明,函数的存储范围是从定义函数的位置到文件的结尾,如果其他文件想使用这个函数,需要用ginclude文件包含命令将定义函数的文件包含进来。
25.55解析:此程序中,for循环语句后面直接跟了一个“;”,表明循环体为空.输出语句不在for循环体内,所以在循环执行完毕后才输出s的值.s、i的初值分别为0和1,判断循环条件,表达式“1<3”成立,执行“i++,s+=i”后,i和s的值分别为2和1,继续判断循环条件,表达式“2<3”成立,执行“i++,s+=i”后,i和s的值分别为3,再次判断循环条件,表达式“3<3”不成立,循环结束。
26.k=1234
27.时间时间解析:算法的复杂度主要指时间复杂度和空间复杂度。所谓算法的时间复杂度,是指执行算法所需要的计算工作量;算法的空间复杂度,一般是指执行这个算法所需要的内存空间。
28.(c=getchar())!='\n'(c=getchar())!='\\n'解析:分析题目可知,程序中运用函数c=getchar()从标准输入设备读取下一个字符,而且是一行的字符(即没有换行),所以条件为(c=getchar())!='\\n'。
29.空间空间解析:算法的复杂度主要包括时间复杂度和空间复杂度。所谓算法的时间复杂度,是指执行算法所需要的计算工作量。一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。
30.i=0j=20i=0j=20解析:本题考核的知识点是scanf()数的使用.该函数的第一个参数是格式字符串,主要由两类字符组成,一类是非格式符要求原样输入,一类是格式符对应要输入的变量,所以说本题中应该原样输入i=j=,后面分别给变量0和20,所以说空格处应该填入i=0,j=20。
31.00解析:关系运算符“>”的结合方式是从左向右的,所以在本题中的表达式a>b>c;从左向右开始计算,a>b的结果为“1”,接着1和c比较假,该空格处应该填0。
32.8168,16解析:float(*p1)(float)是定义p1为指向函数的float型的指针变量。因此p1=f1;p2=f2;表示p1指向函数f1,p2指向函数f2,故所有y1=p2(p1(2.0))=f2(f1(2.0))=8;后面将p1与p2互换,y2=f1(f2(2.0))=16。
33.(x>-5)&&(x<5)(x>-5)&&(x<5)解析:本题考查基本逻辑表达,“整数x的绝对值大于5”时值为“假”,即整数x的绝对值小于等于5,也就是整数x要大于等于-5且要小于等于5。这里“且”用“与(&&)”表示,所以C语言表达式为:(x>-5)&&(x<5)。
34.88解析:fabs函数功能是求x的绝对值,计算结果为double型。pow功能是计算x的y次方的值,计算结果同样为double型。所以本题表达式相当于2.0的3.0次方,结果为8.000000。
35.(y%4==0)&&(y%100!=0)||(y%400==0)(y%4==0)&&(y%100!=0)||(y%400==0)解析:考查逻辑表达。年号能被4整除(y%4==0)但不能被100整除(y%100!=0),两者是与的关系,年号能被400整除即y%400==0,与前两项是或的关系。
36.测试实例测试实例解析:进行软件测试时,应精心设计测试实例和选择测试数据,以对系统进行全面测试。
37.6868解析:本题考查如何用指针引用数组元素。本题先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],*(p+3)指的是字符“D”,输出时是以“%d,格式输出的,即输出其相应ASCII码值68。
38.调试调试
39.i=0j=20i=0,j=20解析:scanf()函数的使用,该函数的第一个参数是格式字符串,主要由两类字符组成,一类是非格式符要求原样输入,一类是格式符对应要输入的变量,所以说本题中应该原样输入i=,j=,后面分别给变量0和20,所以说空格处应该填入i=0,j=20。
40.m=4k=4i=5k=5m=4k=4i=5k=5解析:在主函数main()中定义了一个变量i,并赋初值4,调用fun()函数将i的初值传递给形参m,进行fun()函数后的运算,输出结果为m=4,k=4。将k值输出后自行增加1,k=5,此时全局变量k的值变为5。主函数中调用fun()函数后,i再自行增加1,i=5,所以主函数输出的结果为“i=5k=5”。
41.D解析:本题考查了考生对字符串常量的理解。字符串常量是一段以双引号括起来的字符序列,它既可以出现在对字符数组的初始化中,也可以出现在表达式中。当它用于对字符数组的初始化时,应注意系统自动为其添加的结束标志'\\0'。而当它出现在表达式中时,应该将其看作一个constchar*类型的指针常量。在选项A中,首先定义了一个字符指针sp,然后将一个字符串赋给甲所指的地址,这是错误的。因为sp是一个未经初始化的野指针,不知其指向哪儿,往一个不确定的地址中写数据很容易让程序出错。选项B首先定义了一个字符数组,然后将一个字符串赋给数组名,这是错误的。因为数组名是一个指针常量,不可以被改变。选项C首先定义了一个字符数组,然后将一个字符串赋给数组的第一个元素,这也是错误的。因为字符串在表达式中相当于一个常字符指针,将一个指针值赋给一个字符型变量是行不通的。选项D是定义一个字符指针sp,同时使其指向一个字符串常量,即将一个常字符型指针赋给sp。这是可行的。所以,4个选项中选项D符合题意。
42.C解析:本段程序的作用是输出字符串“lanuage”中字母u之前的字符,并将其转化为大写字母。注意:如果一个字符数组用来作为字符串使用,那么在定义该字符数组时,数组的大小就应该比它将要实际存放的最长字符多一个元素,以存放‘\\0’。
43.A解析:本题考核C++语言中while循环和do-while循环之间的区别。do-while语句与while语句不同的是,do-while循环中的<语句>至少会执行一次,而while语句中当条件在第一次循环就不满足时,语句一次也不会执行。
44.C解析:本题中,程序先执行语句x=1.2;,根据赋值运算的类型转换规则,先将double型的常量1.2转换为int型,即取整为1,然后将1赋值给变量x。接下来执行语句y=(x+3.8)/5.0;根据运算符的优先级,先计算小括号内,再计算除法,最后执行赋值运算。小括号内的运算过程:先将整型变量x的值1转换为double型1.0,然后与3.8进行加法运算,得到中间结果4.8。接着进行除法运算4.8/5.0,其结果小于1.0,这里没有必要计算出精确值,因为接着进行赋值运算,赋值号左边的变量y的类型为整型,于是对这个小于1.0的中间结果进行取整,结果为0,于是变量y的值为0,d*y的值也为0。注意:格式输出语句printf的使用。
45.D解析:在C语言所有的运算符中,逗号运算符的优先级最低。C语言中区分大小写,所以APH和aph是两个不同的变量。赋值表达式a=b表示将b的值付给a,而b本身的值保持不变;通过键盘可以向计算机输入允许的任何类型的数据。选项D)中当从键盘输入数据时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数值和整型数值等。
46.D解析:本题考查while和do…while循环的区别。while循环的控制出现在循环体之前,只有当while后面的表达式的值为非零时,才可能执行循环体:在do…while构成的循环体中,总是先执行一次循环体,然后再求表达式的值,因此无论表达式的值是否为零,循环体至少要被执行一次。
47.B解析:双目运算中两边运算量类型转换规律:
运算数1运算数2转换结果类型
短整型长整型短整型->长整型
整型长整型整型->长整型
字符型整型字符型->整型
有符号整型无符号整型有符号整型->无符号整型
整型浮点型整型->浮点型
在a/b的时候,a、b的类型不一致,根据类型转换规则,把整型转换成double类型,之后的加、减类似。转化规则为char,short->int->unsigned->long->double←float。
48.A解析:本题主要考查自加运算符(++、--)的使用。①前缀变量“++i、--i”,在使用i之前,先使i的值加1或者减1,再使用此时的表达式的值参与运算;②后缀变量“i++、i--”,先使用此时的表达式的值参与运算,在使用i之后,再使i的值加1或者减1。本题中计算表达式c=(a++)-1时先使用a的值进行计算,结果为c=2-1=1,然后将a的值加1,即执行完此语句后a的值是3;表达式c+=-a+++(++b)等价于c=c+(-a++)+(++b),c=1+(-3)+3=1,此时a=4,b=3。
49.A
50.D解析:用户标识符与关键字相同时,程序在编译过程中将给出出错信息。注意:选项D)应该改为用户标识符与关键字相同,程序在编译时将给出出错信息。注意:合法的标识符第一个字符必须为字母或下划线。
51.B解析:结构化程序设计主要强调的是结构化程序清晰易读,可理解性好,程序员能够进行逐步求精、程序证明测试,以保证程序的正确性。
52.C解析:选项A中应将y和m前面的函数的类型说明符去掉,故选项A不正确;选项B中函数传了2个参数,其中一个为整型一个为浮点型,而fun()函数在定义时声明的2个参数,一个为整型一个为双精度型,其参数类型不一致,故选项B不正确;选项D在调用函数时,不应该再声明其返回类型,故迭项D不正确.所以,4个选项中选项C符合题意。
53.C解析:在计算(float)(a+b/2时,由于通过强制类型转换将(a+b转换成了foat型,所以应先将2转换成float型,再进行计算,得4.500000。
在计算(int)x%(int)y时,先将x和y通过强制类型转换成int型,再进行求余运算,得1。又因为4.500000是float型,所以将1和它相加时,先将1换成float型,再计算,得到5.500000。
[知识扩展]类型转换的一般规则是:低级类型服从高级类型,并进行相应的转换。数据类型的级别由低到高的排序表示为:char→int→unsigned→long→float→double。
54.D解析:软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。本题中,详细设计、软件编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。
55.B由于联合体是同一存储区域由不同类型的变量共享,所以不可以直接对联合体变量名进行赋值,且联合体中的空间在某一时刻只能保持某一成员的数据;另外合体中可以出现结构类型的成员。
56.A解析:函数定义时如果数据类型默认,则默认为int。函数中如果有“retum(表达式):”语句,表达式的类型可能与函数的类型不一致,但它并不能改变函数的类型,实际情况是把表达式转换为函数值的类型作为返回值,因此本题的函数值类型是int。
57.C解析:数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。故正确答案为选项C)。
58.A解析:线性表的链式存储结构称为线性链表,是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接来实现的。
59.C
60.C解析:指针变量是用来存放地址的。&:取地址运算符。*:指针运算符。**c为指针变量*c所指向的存储单元,*c为指针指针变量c所指向的存储单元,而c=&b表示c为变量b的地址,b=&a表示b为变量a的地址。表边式**c的值就是变量a中的值。
61.DA选项中变量类型符double后面不能有逗号。B选项中变量b不能先使用再定义,应该写成选项D中的格式。C选项中变量a后面应该是逗号而不是分号。
62.D本题考查链表的操作,本题中首先是s指向了它的下个结点,题目中说明了s总是指向链表的第一个结点,然后while循环找到链表的最后一个元素,然后最后一个元素指向了之前链表的头结点,之前头结点指向了空结点,所以本题实现的功能是使首结点成为尾结点。选项D正确。
63.B标识符命名规则:标识符必须由字母(a~z或A~z)或下划线(_)开头;标识符的其他部分可以用字母、下划线或数字(0~9)组成;大小写字母表示不同意义,如cout和Cout代表不同的标识符;在定义标识符时,虽然语法上允许用下划线开头,但是,最好避免定义用下划线开头的标识符,因为编译器常常定义一些下划线开头的标识符。因此,本题正确答案为B)。
64.C
65.D
66.B本题考查位运算,题目中将4向左移一位然后重新赋值给a,4左移一位为8,程序运行结果为8,选项B正确。
67.A每次内循环只循环一次就结束,第一次外循环时t=t+b[o][b[o][0]]=1+h[0][O]-1+0=1;第二次外循环时t=t“[l][b[1][1]]-1+b[1][l]-1+1=2;第三次外循环时t=t+b[2][b[2][2]]=2+b[2][2]=2+2=4。故本题答案为A)。
68.C数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在各方面的表现都最好,一直占据数据库领域的主导地位,所以选择C)。
69.B二维数组的初始化有以下几种形式:①分行进行初始化;②不分行进行初始化;③部分数组元素进行初始化;④省略第一维的定义,不省略第二维的定义。选项B)等号右边分了3行,大于等号左边数组的行数2。
70.C耦合性与内聚性是模块独立与否的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内蒙、低耦合,即减弱模块之间的耦合性而提高模块内的内聚性,这样有利于提高模块的独立性。
71.B
72.C考查二维数组元素的引用方法。题中通过二维数组的行、列下标来定位元素的位置,从而实现元素的引用。
73.B在for(i=0;i<12;i++)C[s[i]]++中,数组元素s[i]的值作为数组c的下标,当退出循环时,数组c的4个元素的值分别为4…332。因此B选项正确。
74.D\np一>x的值为1,++(p->x)作用是取p->x的值加1作为表达式的值即值为2,同理++(p->y)的值为3。所以选D。
\n
75.A解析:typedef用来声明新的类型名来代替已有的类型名,typedef只是对已经存在的类型增加了一个类型名,原有类型名仍有效。typedef不能用来定义变量。
76.C
77.A计算机能直接执行的程序是二进制的可执行程序,其他的不能直接执行。
78.Ak=a>b?(b>C?1:o):o;a>b并且b>C,k为1,其他情况k为o,答案为A)。
79.A本题中输入的3个数据2,4,6分别赋值给了x[0[0],x[1][0],x[2][0]。x[o][1]仍为初始时的0,所以打印输出时的结果为A选项。
80.D81.(1)错误:while(*str!=ˊ@ˊ)
正确:while(*str)或while(*str!=ˊ\0ˊ)或while(*str!=0)
(2)错误:(*str++);
正确:str++
【解析】首先判断字母是否为小写字母,如果是小写字母则进行转换。
第一个标识下“while(*str!=ˊ@ˊ)”语句原意是str不指向字符串尾就进入下面的循环,所以对于指针判断不为结束符的语句应该是循环为真,所以应为“while(*str)”或“while(*str!=ˊ\Oˊ)”或“while(*str!=0)”。
第二个标识下“(*str)++;”是对字符内容加1,而原题是对字符位置加1,所以将其改为“str++;”。
82.
【解析】要将字符串中为奇数的字母转换为大写。首先应该判断奇数位置上的字符是否为小写字母,若是则将其转换为大写,若不是则不予处理。
2021-2022年甘肃省酒泉市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.
2.下列描述中正确的是______。A.软件工程只是解决软件项目的管理问题
B.软件工程主要解决软件产品的生产率问题
C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则
D.软件工程只是解决软件开发中的技术问题
3.有以下程序:main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}执行后输出结果是()。
A.77B.88C.810D.1010
4.若有函数内部说明:inta[3][4];则数组a中各元素
A.可在程序的运行阶段得到初值0
B.可在程序的编译阶段得到初值0
C.不能得到确定的初值
D.可在程序的编译或运行阶段得到初值0
5.若用一个大小为6的数值来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为()。
A.1和5B.2和4C.4和2D.5和1
6.以下选项中,不能作为合法常量的是
A.1.234e04B.1.234e0.4C.1.23E+4D.1.234e0
7.若已定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素不正确的引用是______。
A.a[p-a]B.*(&a[i])C.p[i]D.a[10]
8.第
17
题
若有条件表达式(exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是
A.(exp==0)B.(exp!=0)C.(exp==1)D.(exp!=1)
9.已定义以下函数“intfun(int*p){return*p;}”,fun函数的返回值是()。
A.—个整数B.不确定的值C.形参p中存放的值D.形参p的地址值
10.有以下程序:#include<stdio.h>main(){inta=7;while(a--);print[("%d\n",a);}程序运行后的输出结果是()。A.-1B.0C.1D.7
11.以三级模式为框架形成的3种数据库中,真实存在于计算机外存的数据库是()。
A.概念数据库B.用户数据库C.物理数据库D.逻辑数据库
12.若有以下程序
则程序的输出结果是
A.3B.7C.6D.10
13.执行以下程序后,a,b的值分别为main(){ina,b,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;b=(*p1)/(*p2)+7;printf("a=%d\n",a);printf("b=%d\n",b);}
A.-1,5B.1,6C.0,7D.4,10
14.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指()
A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程
15.一个序列中有10000个元素,若只想得到其中前10个最小元素,最好采用_______方法
A.快速排序B.堆排序C.插入排序D.二路归并排序
16.下列数据结构中,按先进后出原则组织数据的是
A.线性链表B.栈C.循环链表D.顺序表
17.设ch是char型变量,值为'A',则表达式ch=(ch>='A'&&ch<='Z')?ch+32:ch的值是()。
A.ZB.aC.zD.A
18.下面软件中,属中应用软件的是()
A.UnixB.人事管理系统C.数据库管理理系统D.DOS
19.在目标串T[0,n-1]=”xwxxyxy”中,对模式串p[0,m-1]=”xy”进行子串定位操作的结果_______
A.0B.2C.3D.5
20.用数组r存储静态链表,结点的next域指向后继,工作指针j指向链中结点,使j沿链移动的操作为()。
A.j=r[j].nextB.j=j+1C.j=j->nextD.j=r[j]->next
二、2.填空题(20题)21.下列程序执行后输出的结果是【】。
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);
22.以下程序中,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(i=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];
______=X;
}
}
23.设x和y均为int型变量,且x=1,y=2,则表达式double(1+x/y)的值为【】。
24.设有以下程序,为使之正确运行,请在横线中填入应包含的命令行。(注:try_me()函数在a:\myfile.txt中有定义。)
______
main()
{printf("\n");
try_me();
printf("\n");}
25.以下程序的输出结果是______。
main()
{ints,i;
for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n".s);
}
26.如果输入'1'、'2'、'3'、'4',则以下程序的运行结果为【】。
#include<stdio.h>
main()
{charc;
inti,k;
k=0;
for(i=0;i<4;i++)
{while(1)
{c=getchar();
if(c>='0'&&c<='9')break;
}
k=k*10+c-'0';
}
printf("k=%d\n",k);
}
27.算法的复杂度主要包括【】复杂度和空间复杂度。
28.下列程序的功能是对输入的一行字符中的数字字符的字面值累加,输出此累加和,请填空。
#include<stdio.h>
#include<ctype.h>
main()
{charc;
inta,s=0;
while(______)
if(isdigit(C))
{a=c-'0';s+=a;}
printf("s=%d",s);
}
29.算法的复杂度主要包括时间复杂度和______复杂度。
30.若有程序
main()
{inti,j;
scanf("i=%d,j=%d",&i,&j);
printf("i=%d,j-%d\n",i,j);
}
要求给i赋10,给j赋20,则应该从键盘输入______。
31.以下程序输出的结果是______。
mazn()
{inta=5,b=4,c=3,d;
d=(a>b>C);
printf("%d\n",D);
}
32.有以下程序:
floatf1(floatn)
{returnn*n;}
floatf2(floatn)
{return2*n;}
main()
{float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;
p1=f1;p2=f2;
y1=p2(p1(2.0));
t=P1;p1=p2;p2=t;
y2=p2(p1(2.0));
printf("%3.0f,%3.0f\n",y1,y2);
}
程序运行后的输出结果是【】。
33.表示“整数x的绝对值大于5”时值为“假”的C语言表达式是______。
34.若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为【】。
35.下列表达式用于判断y是否为闰年。闰年的判断条件是:年号能被4整除但不能被100整除或年号能被400整除,请填空______。
36.软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和【】的设计来实现。
37.下列程序段的运行结果是______。
charstr口="ABCD",*p=str;
printf("%d\n",*(p+3));
38.测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。
39.若有程序
main()
{inti,j;
scanf("i=%d,j=%d",&i,&j);
pfintf("i=%d,j=%d\n",i,j);
}
要求给i赋10,给j赋20,则应该从键盘输入【】。
40.以下程序的运行结果是()。
intk=0;
voidfun(intm)
{m+=k;k+=m;printf("m=%d\nk=%d",m,k++);}
main()
{inti=4;
fun(i++);printf("i=%dk=%d\n",i,k);
}
三、1.选择题(20题)41.以下语句或语句组中,能正确进行字符串赋值的是______。A.char*sp;*sp="right!";
B.chars[10];s="right!";
C.chars[10];*s="right!";
D.char*sp="right!";
42.下面程序段的运行结果是chara[]="lanuage",*p;p=a;while(*p!='u'){printf("%c",*p-32);p++;}
A.LANGUAGEB.languageC.LAND.langUAGE
43.C语言中while循环和do-while循环的主要区别是______。
A.do-while的循环体至少无条件执行一次
B.while的循环控制条件比do-while的循环控制条件严格
C.do-while允许从外部转到循环体内
D.do-while的循环体不能是复合语句
44.下列程序的输出结果是()。
main
{
doubled=3.2;intx,y;
x=1.2;y=(x+3.8)/5.0;
printf("%d\n",d*y);
}
A.3B.3.2C.0D.3.07
45.以下不正确的叙述是A.A.在C程序中,逗号运算符的优先级最低
B.在C程序中,APH和aph是两个不同的变量
C.若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
46.在C语言中,while和do…while循环的主要区别是()。
A.do…while的循环体不能是复合语句
B.do…while允许从循环体外转到循环体内
C.while的循环体至少被执行一次
D.do…while的循环体至少被执行一次
47.现有定义inta;doubleb;floatc;chark;,则表达式a/b+c-k值的类型为:
A.intB.doubleC.floatD.char
48.下列程序的执行结果是()。#include<stdio.h>main(){inta,b,c;a=b=2;c=(a++)-1;printf("%d,%d",a,c);c+=-a+++(++b);printf("%d,%d",a,c);}
A.3,14,1B.3,14,2C.2,04,1D.2,14,1
49.以下选项中可作为C语言合法常量的是()。
A.-80B.-80C.-80.0D.-80.0e
50.下列关于标识符的说法中错误的是
A.合法的标识符是由字母、数字和下划线组成
B.C语言的标识符中,大写字母和小写字母被认为是两个不同的字符
C.C语言的标识符可以分为三类,即关键字、预定义标识符和用户标识符
D.用户标识符与关键字不同时,程序在执行时将给出出错信息
51.结构化程序设计主要强调的是______。
A.程序的规模B.程序的易读性C.程序的执行效率D.程疗的可移植性
52.有以下函数定义:
voidfun(intn,doublex){……}
若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是A.fun(inty,doublem);
B.k=fun(10,12.5);
C.fun(x,n);
D.voidfun(n,x);
53.若有定义:inta=4,b=5;floatx=3.4,y=2.1;,则下列表达式的值为()。
(float)(a+b)/2+(int)x%(int)y
A.5.5B.55C.5.500000D.55.00000
54.软件生命周期中花费费用最多的阶段是
A.详细设计B.软件编码C.软件测试D.软件维护
55.以下对联合类型叙述正确的是()。
A.可以对联合变量名直接赋值
B.使用联合变量的目的是为了节省内存
C.任何一个联合变量可以同时引用联合中的不同成员
D.联合类型定义中不能同时出现结构类型的成员
56.以下函数值的类型是_______。fun(floatx){floaty;y=3*x-4;returny;}
A.intB.不确定C.voidD.float
57.数据处理的最小单位是()。
A.数据B.数据元素C.数据项D.数据结构
58.下列对于线性链表的描述中正确的是______。
A.存储空间不一定是连续,且各元素的存储顺序是任意的
B.存储空间不一定是连续,且前件元素一定存储在后件元素的前面
C.存储空间必须连续,且各前件元素一定存储在后件元素的前面
D.存储空间必须连续,且各元素的存储顺序是任意的
59.完整的计算机存储器应包括______。
A.软盘、硬盘B.磁盘、磁带、光盘C.内存储器、外存储器D.RAM、ROM
60.有以下程序段:main(){inta=5,*b,**c;c=&b;b=&a;}程序在执行了c=&b;b=&a;语句后,表达式**c的值是______。
A.变量a的地址B.变量b中的地址C.变量a中的值D.变量b的地址
四、选择题(20题)61.以下选项中正确的定义语句是()。
A.double,a,b;B.doublea=b=7;C.doublea;b;D.doublea=7,b=7;
62.程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、p、q均已正确定义,并用于指向链表结点,指针变量s总是作为指针指向链表的第一个结点。
若有以下程序段:
该程序段实现的功能是()。
A.删除尾结点B.尾结点成为首结点C.删除首结点D.首结点成为尾结点
63.以下选项中合法的标识符是()。A.1_2B._12C.2_1D.12__
64.
65.
66.有以下程序:
程序运行后的输出结果是()。
A.116B.8C.40D.4
67.有以下程序程序运行后的输出结果是()。
A.4B.3C.1D.9
68.在数据管理技术发展的三个阶段中,数据共享最好的是()。
A.人工管理阶段B.文件系统阶段C.数据库系统阶段D.三个阶段相同
69.以下数组定义中错误的是()。
A.
B.
C.
D.
70.软件设计中衡量模块独立性的度量标准是()。
A.抽象和信息隐蔽B.局部化和封装化C.内聚性和耦合性D.激活机制和控制方法
71.
72.定义如下变量和数组:
则下面语句的输出结果是()。
A.951B.741C.753D.963
73.有以下程序:
程序运行后的输出结果是()。
A.2344B.4332C.1234D.1123
74.有以下程序:
#include<stdio.h>
structord
{intX,y;)dt[2]={1,2,3,4};
main()
{
structord*p=dt;
printf("%d,",++(p->x));printf("%d\n",++(p->y));
}
程序运行后的输出结果是()。
A.1,2
B.4,1
C.3,4
D.2,3
75.以下叙述中错误的是()。
A.可以通过typedef增加新的类型
B.可以用typedef将已存在的类型用一个新的名字来代表
C.用typedef定义新的类型名后,原有类型名仍有效
D.用typedef可以为各种类型起别名,但不能为变量起别名
76.
77.计算机能直接执行的程序是()。A.可执行程序B.目标程序C.汇编程序D.源程序
78.以下程序爱中,与语句:
79.有以下程序:
若运行时输入:246<;回车>;,则输出结果为()。
A.204B.200C.240D.246
80.
五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:将str所指字符串中的字母转换为按字母序列的后续字母(Z转换A,z转换a),其他字符不变。
请修改函数fun()中的错误,得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
六、程序设计题(1题)82.请编写一个函数proc(),它的功能是:将str所指字符串中所有下标为奇数位置的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入abcdel23,则应输出aBcDe123。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.D
2.C\r\n软件工程是试图用工程、科学和数学的原理与方法研制、维护计算机软件的有关技术及管理方法。软件工程的主要思想是强调在软件开发工程中需要应用工程化的原则。软件工程用来解决以下问题:软件需求的增长得不到满足、软件开发成本和进度无法控制、软件质量难以保证、软件不可维护或维护程度低、软件得成本不断提高、软件开发生产率的提高赶不上硬件的发展和应用需求的增长。软件项目的管理、软件产品的生产率、软件开发中的技术都是软件工程需要解决的部分问题。因此选项C正确。
3.C解析:本题考核的知识点是字符数组的定义、赋初值以及函数sizeof()的应用。本题中定义两个字符型数组,其中a省略了长度,定义了b的长度为10,并赋初值分别为“abcdefg”和“abcdfg”。所以a的长度为赋值给它的字符串的字符个数7加上一个结束转义字符,即a的长度为7+1为8.定义时b的长度定义为10,故b的长度为10,因此最后通过函数sizeof()求得的数组a和数组b的长度分别为8和10,所以,4个选项中选项C符合题意。
4.C本题主要考查数组的定义及初始化。在对数组进行定义和初始化时,需要注意以下事项。
(1)数组的内存空间在编译时确定,定义数组时的n值只能使用常量,不能使用变量。
(2)定义数组时可以不标明数组元素的个数,而是通过赋初值的方式确定,编译系统将自动计算花括号内的数据数量作为数组的元素个数。
(3)数组初始化时,当初值的个数小于整型常量n时,编译系统会自动补0。一旦给定初值数超过n,编译系统将报错。
(4)初始化数组的元素类型,必须与定义数组时的类型一致。
(5)数组名记录了数组在内存中的首地址,其值不能更改。
(6)除字符数组外,不能直接用数组名对数组进行整体输入或输出。
本题中定义了一个3行4列的数组,但没有对其进行赋初值操作,可能我们会想在系统编译时会自动补0,这只是在初值个数小于数组定义大小的情况下的操作,如果没有进行赋初值操作,数组中的元素值是不能被确定的。因此,本题答案选C。
5.B
6.B解析:C语言的语法规定,字母e(E)之前必须有数字,且e(E)后面的指数必须是整数,而选项B)中,e(E)后面的指数是小数,所以不合法。
7.D解析:通常,引用一个数组元素可以用下标法,如a[P-a]形式,或指针法,如*(&a[i])的形式。本题中a[9]=9,a[10]显然超出了数组范围,注意,数组的下标是从0开始的。
8.B解析:条件运算符要求有3个操作对象,称三目(元)运算符,它是C语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式17表达式2:表达式3其求解顺序是:先求解表达式1,若为非O(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。并且注意++、--的用法。
9.A函数返回值为指针变量指向的数据,该数据已被定义为整型。故本题答案为A选项。
10.A此题考查a--和--a之间的区别,当while(a--)为真循环执行,a--是执行再减1,所以答案选择A。
11.B
\n①以内模式为框架所组成的数据库,1物理数据库;②以概念模式为框架所组成的数据库叫概念数据库;③以外模式为框架所组成的数据库叫用户数据库。它是真实存在于计算机外存中的数据库。
\n
12.D第—个if语句a!=1条件为假,所以执行dse后的语句r=1。第二个if语句b==2条件成立,执行r+=2,r的值变为3,第三个if语句c!=3条件为假,所以不做任何操作。执行下面的r+=3操作,r的值变为6。判断第四个讧条件,d==4条件成立
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- racemic-6-7-Epoxy-cannabichromene-生命科学试剂-MCE-6900
- Gluconapin-生命科学试剂-MCE-5096
- 25B-NB3OMe-hydrochloride-生命科学试剂-MCE-6391
- 施工日志填写样本外墙装饰工程
- 跨代沟通与家庭关系中的文化融合
- DB15T 3843-2025新能源分布式电源并网技术规范
- 云计算建设项目服务合同
- 事业单位与员工停薪留职合同范本
- 个人车位交易合同范例
- 个人企业房屋租赁合同模板
- 苏州2025年江苏苏州太仓市高新区(科教新城娄东街道陆渡街道)招聘司法协理员(编外用工)10人笔试历年参考题库附带答案详解
- 搞笑小品剧本《大城小事》台词完整版
- 物业服务和后勤运输保障服务总体服务方案
- 2025年北京市文化和旅游局系统事业单位招聘101人笔试高频重点提升(共500题)附带答案详解
- 中学学校2024-2025学年第二学期教学工作计划
- 人大代表小组活动计划人大代表活动方案
- 《大模型原理与技术》全套教学课件
- 2023年护理人员分层培训、考核计划表
- 《销售培训实例》课件
- 2025年四川省新高考八省适应性联考模拟演练(二)地理试卷(含答案详解)
- 【经典文献】《矛盾论》全文
评论
0/150
提交评论