




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年江西省鹰潭市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.有以下程序:
程序运行后的输出结果是().
A.1,3
B.2,3
C.1,4
D.1,2
2.
3.现有如下程序段#include"stdio.h"main(){inta[5][6]={23,3,65,21,6,78,28;5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};inti=0,j=5;printf("%d\n",*(&a[0][0]+2*i+j-2));}则程序的输出结果为
A.21B.78C.23D.28
4.在Windows环境下,单击当前应用程序窗口中的“关闭”按钮,其功能是A.将当前应用程序转为后台运行
B.退出Windows后再关机
C.退出Windows后重新启动计算机
D.终止当前应用程序的运行
5.有以下程序:#include<stdio.h>main(){chars[]=“abcde”;s+=2;printf(“%d\n”,s[0]);}程序的运行结果是()。
A.输出字符c的ASCII值B.程序出错C.输出字符cD.输出字符a的ASCII值
6.
7.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0;c=(a=a=5);(a=b,b+=4);printf("%d,%d,%d\n",a,bc);}程序运行后的输出结果是()。A.0,4,5B.4,4,5C.4,4,4D.0,0,0
8.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30
9.若有下列说明语句int(*p)();则标识符p代表的是()
A.一个用于指向函数的指针变量,函数返回值的类型为int型
B.一个带回值类型为整型的函数名
C.一个用于指向整型数据的指针变量
D.一个带回值类型为指针类型的函数名
10.下列程序的输出结果是______。#include<stdio.h>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
11.如果最常用的操作是取第i个结点及其前驱,最节省时间的存储方式是()。
A.单链表B.双向链表C.单循环链表D.顺序表
12.有以下程序:程序运行后的输出结果是()。A.1.000000B.0.000000C.0.250000D.0.500000
13.若有定义语句:“charS[3][10],(*k)[3],*p;”,则以下赋值语句正确的是()。
A.p=S;B.p=k;C.p=s[0];D.k=s;
14.有下列程序段:intk=0,a=1,b=2,c=3;k=a<b?b:a;k=k>c?c=k;执行该程序段后,k的值是()。
A.3B.2C.1D.0
15.设C语言中,一个int型数据在内存中占2个字节,则unsignedint型数据的取值范围为()。
A.0~255B.0~32767C.0~65535D.0~2147483647
16.判断有向图是否存在回路,利用()方法最佳。
A.求关键路径B.求最短路径C.拓扑排序D.广度优先遍历
17.
18.有以下程序
main()
{inti;
for(i=1;i<=40;i++)
{if(i++%5==0)
if(++i%8==0)printf("%d",i);
}
printf("\n");
}
执行后的输出结果是
A.5B.24C.32D.40
19.在一个顺序队列中,队首指针指向队首元素的____位置。
A.前一个B.后一个C.当前D.最后一个
20.以下关于C语言数据类型使用的叙述中错误的是A.若要准确无误差的表示自然数,应使用整数类型
B.若要保存带有多位小数的数据,应使用双精度类型
C.若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型
D.若只处理“真”和“假”两种逻辑值,应使用逻辑类型
二、2.填空题(20题)21.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。
22.在关系运算中,【】运算是在给定关系的某些域上进行的运算。
23.设y为血型变量,请写出描述“y是偶数”的表达式______。
24.在程序设计阶段应该采取______和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,继而用某种程序设计语言写成程序。
25.以卜函数sstrcat()的功能是实现宁符串的连接,即将t所指字符串复制到s所指字符串的尾部。例如:s所指字符串为abcd,t所指字符申为efgh,函数调用后s所指字符串为abcdefgh。请填空。
#include<string.h>
voidsstrcat(char*s,char*t)
{intn;
n=strlen(s);
while(*(s+n)=){s++;t++;}
}
26.以下程序运行后的输出结果是【】。
main()
{
intp=30;
printf("%d\n",(p/3>0?p/10:p%3));
}
27.下列程序的输出结果是______。
main()
{inti=0,a=0;
while(i<20)
{for(;;)
{if((i%10)==0)break;
elsei--;}
i+=11;
a+=i;
}
printf("%d\n",A);
}
28.有以下程序:
main()
{intt=1,i=5;
for(;i>=0;i--)t*=i;
printf("%d\n",t);
}
执行后的输出结果是【】。
29.有以下程序段,且变量已正确定义和赋值
for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));
printf("s=%f\n\n",s);
请填空,使下面程序段的功能与之完全相同
s=1.0;k=1;
while(【】){s=s+1.0/(k*(k+1));【】;}
printf("s=%f\n\n",s);
30.以下程序的运行结果是#defineMAX(A,B)(A)>(B)?(A):(B)#definePRINT(Y)printf(:Y=%d\t",Y)main(){inta=1,b=2,c=3,d=4,t;t:MAX(a+b,c+d);PRINT(t);}
31.数据结构分为逻辑结构与存储结构,线性链表属于【】。
32.在面向对象方法中,【】描述的是具有相似属性与操作的一组对象。
33.若想通过以下输入语句给a赋值1,给b赋值2.则输入数据的形式应该是【】。
inta,b;
scanf("a=%d,b=%d",&a,&b);
34.下面程序的运行结果是()。#defineP(A)printf("%d",A)main(){intj,a[]={1,2,3,4,5,6,7},i=5;for(j=3;j>1;j--){switch(j){case1:case2:P(a[i++]);break;case3:P(a[--i]);}}}
35.下面程序的功能是将字符串a下标值为偶数的元素由小到大排序,其他元素不变,请填空。
#include<stdio.h>
main()
{
chara[]="labchmfye",t:
int1,j;
for(i=0;i<7;i+=2)
for(j=i+2;j<9;【】)
if(【】)
{t=a[i];a[i]=a[j];a[j]=t;j++;}
puts(a);printf("\n");
}
36.己定义charch='$';inti=l,j;,执行j=!ch&&ii++以后,i的值为【】。
37.已知字母A的ASCII码为65。以下程序运行后的输出结果是______。
main()
{chara,b;
a='A'+'5'-'3';b=a+'6'-'2';
printf("%d%c\n",a,B);
}
38.在树型结构中,根结点没有【】结点,其余每个结点有且仅有【】个前驱结点;叶结点没有后继结点,其余每个结点的【】结点数不受限制。
39.与结构化需求分析方法相对应的是【】方法。
40.在面向对象方法中,允许作用于某个对象上的操作称为【】。
三、1.选择题(20题)41.有以下结构体说明和变量定义,如图所示,指针p、q、r,分别指向此链表中的3个连续结点。Structnode{intdata;Structnode*hext;}*p,*q,
*r;
现要将Q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是
A.p->next=q->next;
B.p->next=p->next->next;
C.p->next=r;
D.p=q->next;
42.一些重要的程序语言(如Pascal语言)允许过程的递归调用,而实现递归调用中的存储分配通常用()。
A.栈B.堆C.数组D.链表
43.已有定义:inti,a[10],*p;则合法的赋值语句是()。
A.p=100;B.p=a[5];C.p=a[2]+2;D.p=a+2;
44.有以下程序段intn=0,p;do{scanf(“%d”,&p);n++;}while(p!=12345&&n<3);此处do-while循环的结束条件是
A.P的值不等于12345并且n的值小于3
B.P的值等于12345并且n的值大于等于3
C.P的值不等于12345或者n的值小于3
D.P的值等于12345或者n的值大于等于3
45.有如下程序:main(){intn=9;while(n>6){n--;printf("%d",n);}}该程序的输出结果是
A.987B.876C.8765D.9876
46.下列对于软件测试的描述中正确的是()。
A.软件测试的目的是证明程序是否正确
B.软件测试的目的是使程序运行结果正确
C.软件测试的目的是尽可能多地发现程序中的错误
D.软件测试的目的是使程序符合结构化原则
47.下列叙述中正确的是()。
A.接口复杂的模块,其耦合程度一定低
B.耦合程度弱的模块,其内聚程度一定低
C.耦合程度弱的模块,其内聚程度一定高
D.上述3种说法都不对
48.有以下结构体说明和变量定义,如图所示:struetnode{intdata;structnode*next;}*p,*q,*r;
现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是
A.p->next=q->next;
B.p->next=p->next->next;
C.p->next=r;
D.p=q->next;
49.若在以下定义和赋值语句,则才s数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的合法引用为ints[2][3]={0},(*p)[3];p=s;
A.*(*(p+i)+j)B.*(p[i]+j)C.(p+i)+jD.(*(p+i))[j]
50.以下对结构体类型变量td的定义中,错误的是
A.typedefstructaa{intn;floatm;}AA;AAtd;
B.structaa{intn;floatm;}td;structaatd;
C.struct{intn;floatm;}aa;structaatd;
D.struct{intn;floatm;}td;
51.下列说法中不正确的是()
A.调制解调器(Modem)是局域网络设备
B.集线器(Hub)是局域网络设备
C.网卡(NIC)是局域网络设备
D.中继器(Repeater)是局域网络设备
52.若程序中已包含头文件stdio.h,以下选项能正确运用指针变量的程序段是()。
A.int*i=NULL;scanf("%d",i);
B.float*f=NULL;*f=10.5;
C.chart='m',*c;*c=&t;
D.long*L;L='\0';
53.以下非法的赋值语句是
A.n=(i=2,++i);B.j++;C.++(i+1);D.x=j>0;
54.下列关于E-R图的描述中正确的是()。
A.E-R图只能表示实体之间的联系
B.E-R图只能表示实体和属性之间的联系
C.E-R图只能表示实体和属性
D.E-R图能表示实体、属性和实体之间的联系
55.以下程序段给数组所有的元素输入数据,请选择正确答案填入。#include<stdio.h>main(){inta[10],i=0;while(i<10)scanf("%d",______);}
A.a+(i++)B.&a[i+1]C.a+iD.&a[++i]
56.下列语句中符合C语言语法的赋值语句是()
A.a=7+b+c=a+7;
B.9=7+b+9++a+7;
C.a=7+b,b++,a+7;
D.a=7+b,c=a+7;
57.有以下程序#include<stdio.h>#definePT5.5#defineS(x)PT*x*xmain(){inta=1,b=2;printf("%4.1f\n",S(a+b));}程序运行后的输出结果是()
A.49.5B.9.5C.22D.45
58.下列程序的输出结果是()。#include<stdio.h>structabc{inta,b,c,s;};main(){structabcs[2]={{1,2,3},{4,5,6}};intt;t=s[0].a+s[1].b;printf("%d\n",t);}
A.5B.6C.7D.8
59.设a=1,b=2,c=3,d=4,则表达式a<b?a:c<d?a:d的结果为______。
A.4B.3C.2D.1
60.下面程序的运行结果是#include<stdio.h>#include<string.h>main(){char*s1="AbDeG";char*s2="AbdEg";s1+=2;s2+=2;printf("%d\n",strcmp(s1,s2));}
A.正数B.负数C.零D.不确定的值
四、选择题(20题)61.以下选项中不能作为C语言合法常量的是
A.’Fab’B.0.7e+9C."\b"D.’\01211’
62.
63.设有如下说明
typedefstruct
{intn;
charc;
doublex;
}STD;
则以下选项中,能正确定义结构体数组并赋初值的语句是
A.STDtt[2]={{1,’A’,62},{2,’B’,75}};B.STDtt[2]={1,"A",62,2,"B",75};
C.structtt[2]={{1,’A’},{2,’B’}};D.structtt[2]={{1,"A",62.5},{2,"B",75.0}};
64.以下叙述中错误的是()。
A.可以给指针变量赋一个整数作为地址值
B.函数可以返回地址值
C.改变函数形参的值,不会改变对应实参的值
D.当在程序的开头包含头文件stdi0.h时,可以给指针变量赋NULL、、、
65.下列对于线性链表的描述中正确的是()。
A.存储空间不一定连续,且各元素的存储顺序是任意的
B.存储空间不一定连续,且前件元素一定存储在后件元素的前面
C.存储空间必须连续,且前件元素一定存储在后件元素的前面
D.存储空间必须连续,且各元素的存储顺序是任意的
66.有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是()。
A.自然连接B.交C.除D.并
67.下列选项中,能正确定义数组的语句是()。
68.以下叙述中错误的是()。
A.全局变量的作用域一定比局部变量的作用域范围大
B.静态(static)类别变量的生存期贯穿于整个程序的运行期间
C.全局变量的生存期是整个程序的运行期间
D.静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值
69.以下程序的输出结果是()。
#include<stdio.h>
voidmain()
{inta,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);}
A.6,1B.2,1C.6,0D.2,0
70.在一个C程序中
A.main函数必须出现在所有的函数之前B.main函数可以在任何地方出现
C.main函数必须出现在所有的函数之后D.main函数必须出现在固定位置
71.下列关于结构型、共用型、枚举型的定义语句中,正确的是()。
A.structss{intx}
B.unionuu{intx;}xx=5;
C.enumee{intx};
D.struct{intx;};
72.
73.数据库管理系统是()。
A.操作系统的一部分B.在操作系统支持下的系统软件C.一种编译系统D.一种操作系统
74.
75.在JavaScript语言中,拥有onsubmit事件的对象是()。
A.documentB.eventC.windowD.form.
76.下列关于指针变量赋空值的说法错误的是
A.当赋空值的时候,变量指向地址为0的存储单元B.赋值语句可以表达为变量名=’\0’;
C.赋值语句可以表达为变量名=0;D.一个指针变量可以被赋空值
77.
78.
79.有以下程序:
执行后的输出结果是()。
A.7
B.3
C.20)O
80.有以下程序#include<stdio.h>voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/{intt,i,j;for(i=0;i<n-1;j++)for(j=i+l;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main{intc[10]={1,2,3,4,5,6,7,8,9,0),i;fun(c+4,6);for(i=0;i<10;i++)printf("%d,",c[i]);printf("\n");}程序运行的结果是()。A.1,2,3,4,5,6,7,8,9,0,
B.0,9,8,7,6,5,1,2,3,4,
C.0,9,8,7,6,5,4,3,2,1,
D.1,2,3,4,9,8,7,6,5,0,
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:从字符串str中,删除所有小写字母c。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是根据以下公式计算S,并将计算结果作为函数值返回,通过形参传入。例如,若n的值为11时,函数的值为1.833333。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>floatfun(intn){}voidmain(){ intn; floats; system(“CLS”); printf(“\nPleaseenterN:”); scanf(“%d”,&n); s=fun(n); printf(“Theresultis:%f\n”,s);}
参考答案
1.Af函数功能使第二个指针指向的元素增1,第一个指针指向的元素不变,所以答案选择A)。
2.B
3.A解析:通过地址来引用二维数组,若有以下定义:inta[3][4],i,j;且当0≤i≤3,0≤j<4则可以有以下几种方式来引用数组中的第i行,第j列的元素:\ue008a[i][j]\ue009,\ue008*(a[i]+j),\ue009*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。表达式&a[0][0]+2*i+j-2相当于是地址&a[0][0]加上多少偏移量。
4.D
5.B在C语言中,数组名类似于一个指向数组首地址的指针常量,一旦定义就不能修改其内容。所以本题中的“s+=2;”语句让数组名S的内容加2是错误的,编译无法通过。故本题答案为B选项。
6.B
7.A本题考查简单的赋值运算,在程序中c=(a-=am5),先算括号中的a-=a-5=5,所以c=5,再计算(a=b,b+=4);,a=b=0,b+=4=0+4=4,所以b=4,所以a=0,b=4,c=5,答案选择A。
8.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次。
9.A
10.C
11.D
12.D程序定义double变量x、y,给x赋初值2.0。if语句判断,当x小于0.0时,给y赋值0.0。否则当x小于10.0时,y的值为1.0/x;当x大于等于10.0时,y的值为1.0。题干中x的值为2.0,所以y的值为1.0/x,即0.500000。本题答案为D选项。
13.C答案C的意思是*P指向数组的第一个值。
14.B解析:因为a<b成立,所以条件表达式a<b?b:a的值等于b的值等于2,因此变量k的值等于2。又因为k=2>c=3不成立,所以条件表达式k>c?c:k的值等于k的值等于2。把条件表达式k>c?c:k的值赋给变量k,因而变量k的值等于2。因此,选项B)为正确答案。
15.C
16.C
17.A
18.C解析:当for循环执行到第30次时,i的值为30能被5整除,然后继续执行两次if语句,i经过两次自加1运算,值变为32,能被8整除,故此时第一次执行'printf('%d',i);'语句,即输出32。
19.A
20.D解析:C语言中没有逻辑类型,若只处理"真"或"假"两种逻辑值,可以使用整型数"1"或"0"表示,故选D。
21.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。
22.投影投影解析:在关系运算中,投影运算是在给定关系的某些域上进行的运算。
23.(y%2)==0(y%2)==0解析:因符合偶数的条件是对2取余为0,所以要描述y是偶数的表达式是(y%2)==0。
24.自顶向下自顶向下解析:在程序设计时,应先考虑总体,后考虑细节,逐步使问题具体化,对复杂的问题,应该设计一些子目标作为过渡,上述方法概括为:自顶向下,逐步细化。
25.*t*t解析:函数中首先让n=stxlen(s)所以while循环的循环条件表达式中*(s+n)指向字符串s的结束标志'0',处,而该处应该等于字符串t的第1个字符,另外循环体中让s和t指向下一个字符,即s+n和t同时被移动到下一个位置,所以该处应该填*t,即t所指内容.当t指向字符串结束标志'\\0'的时候,整个循环条件表达式的值也为0(“假”)了,循环结束.正好满足将t所指字符串复制到s所指的字符串的尾部。
26.33解析:条件表达式的一般形式为;表达式1?表达式2:表达式3条件运算符的执行顺序:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值;若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。30/3=10>0,所以执行p/10,结果为3。
27.3232解析:while(表达式)的功能是:首先计算表达式的值,若为真,则执行循环体语句,执行完毕,再计算表达式的值,若仍为真,则重复执行循环体语句,直到表达式的值为假时,结束while语句的执行,继续执行while语句后面的语句:i=0时满足循环条件,也满足if的条件,执行语句得i=11,a=11,第2次循环不满足if的条件,执行i--,i=10,执行i+=11;a+=i后,得i=21,a=32,不满足i<20,循环结束。
28.00解析:for循环执行完成后t=5×4×3×2×1×0=0。
29.k<=nk++k<=n\r\nk++解析:本题要求将一个for循环改成while循环。首先要保证循环条件相同,在for循环中,每次执行循环之后,循环控制变量k都会加1,而while循环则没有,故需在循环体中增加改变k数值的语句“k++;”。
30.C
31.存储结构
32.类类解析:在面向对象方法中,类描述的是具有相似属性与操作的一组对象。
33.a=1b=2
34.5555解析:分析程序执行过程,第一次循环时,j=3,i=5,因为switch(3),所以执行case3,调用P(a[--i])=P(a[4])=P(5),输出5;第二次循环时,j=2,i=4,因为switch(2),所以执行case2,调用P(a[i++])=P(a[4])=P(5),输出5,之后i自加1等于5。
35.j++a[j]>a[j]
36.11解析:本题中的ch是一个字符变量,其初始值为'$'(非0值即为真),所以!ch的结果为假,此时&&右边的i++被“短路”,即不会被计算。由此可见,i的值不会改变,故本题应该填1。
37.67G67G解析:字符型变量中保存的是某个字符的ASCII码值,是一个整数,因此字符型变量的算术运算和整型变量并无区别。所以。a='A'+'5'-'3'='A'+('5'='3')='A'+2=65+2=67:b=a+'6'='2'='C'+('6'-'2')='C'+4='G'。最后分别按十进制整数和字符形式输出a和b的值为:67G。
38.前驱一后继前驱\r\n一\r\n后继
39.结构化设计结构化设计解析:与结构化需求分析方法相对应的是结构化设计方法。结构化设计就是采用最佳的可能方法设计系统的各个组成部分以及各个成分之间的内部联系的技术。
40.方法方法解析:在面向对象方法中,方法是指允许作用于某个对象上的各种操作。
41.D解析:要删除链表中间的某个结点,只需要使它的前一个结点的next指针指向它的后一个结点-不过,严格来讲还需要使用free()函数释放掉该结点在内存中所占的空间。本题要删除的是q所指结点(以下简称q结点),只需使p结点的next指针指向r结点即可。选项A中,因为Q结点的next指向r结点,所以执行p->next=q->next;语句后p结点的next就指向了r结点,故选项A能完成删除。选项B中,p->next->next等价于q->next,因此也能完成删除。选项C直接让p->next指向r结点,当然可以删除。选项D使指针p指向q->next(即r结点),这样做不会影响到内存中的链表,所以应该选择D。
42.A解析:一些较流行的程序语言允许过程的递归调用。递归调用就是过程调用本身。递归实现的是:当过程每一次执行后,都能返回到最近一次调用它的过程中。这样各调用点之间形成一种后进先出关系,而栈结构正适合来存储这些调用点。
43.D解析:本题考核的知识点是指针变量的赋值。本题中定义了一个整型数组a和一个整型指针变量P。选项A中将一个整型数赋值给一个指针变量,C语言规定,只能特地址赋给指针指针变量,故选项A不正确:选项B中a[5]为一数组元素,同样不是一个地址,故选项B不正确;选项c中a[2]为一数组元素,同样是一个整型数据,不是个地址,故选项C不正确:选项D中数蛆名a代表数组首地址加2,代表第三个元素的地址,故选项D正确,所以,4个选项中选项D符合题意。
44.D解析:本题考查的知识点是do-while循环结构循环执行条件的判断.使用do-while语句必须注意以下几点:
先执行语句,后判断表达式。所以,无论一开始表达式的值为“真”还是“假”,循环体中的语句至少执行一次,这一点与while不同,
如果do-while语句循环体部分是由多个语句组成,则必须用花括号括起来,使其形成复合语句。
C语言中的do—while语句是在表达式“真”时重复执行循环体。
在本题中,循环执行判断条件为while后面括号里的表达式即p!=12345&&n<3(意思为p不等于12345且n小于3)是否为“真”,由此可得循环结束的条件为:p大于12345或者p小于12345又或者n大于等于3。选项A的意思是:p的值不等于12345并且n的小于3和while后面括号里的表达式等价是循环执行的条件而不是循环结束的条件,所以选项A不正确;选项B的意思是:p的值等于12345并且n的值大于3,不是循环结束的条件一个子集,所以选项B不正确;选项C的意思是:p的值不等于12345或者n的值小于3前一半是结束条件的子集,后一部分不是结束条件,所以选项C不正确;选项D描述的意思是:p的值等于12345或者你的大于等于3是结束条件的子集,所以选项D满足题意。所以4个选项中D正确。
45.B解析:该题目应该根据循环体第一次和最后一次执行时的输出结果来决定哪一项是正确的。第一次进入循环时,n的值是9,循环体内,先经过n--运算,n的值变为8,所以第一次的输出值是8,由此可以排除选项A)和D)。由循环条件n>6可以知道,最后一次循环开始时,n的值应该为7,所以最后一次执行循环时,输出为6,由此可以排除选项C)。
46.C解析:关于软件测试的目的,GrenfordJ.Myers在《TheArtofSoftwareTesting》一书中给出了深刻的阐述:软件测试是为了发现错误而执行程序的过程;一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。整体来说,软件测试的目的就是尽可能多地发现程序中的错误。本题答案为C。
47.C解析:影响模块之间耦合的主要因素有两个:模块之间的连接形式,模块接口的复杂性。一般来说,接口复杂的模块,其耦合程度要比接口简单的的模块强,所以选项A的说法错误;耦合程度弱的模块,其内聚程度一定高,选项B错误;选项C正确。
48.D解析:本题考查链表结点的删除。q->next中存放的是r所指结点的首地址,将r所指结点的首地址存于p->next中,则实现删除q所指结点的功能,并保持链表连续,p所指结点与r所指结点相连。
49.A解析:p+i是数组s的第i+1行的首地址,而*(p+i)则是数组第i+1行第1列的元素的地址,*(p+i)+j则是第i+1行的第j+1列的地址,*(*(p+i)+j)引用的是数组元素s[i][j]的值。注意:通过建立一个指针数组来引用二维数组元素。
50.C解析:选项t中,aa为结构体变量,而不是结构体名称,不能再用来定义td。
51.D解析:为了让计算机接入局域网必须要网卡,Hub用于把局域网中的所有计算机连接起来,调制解调器用于把局域网和互联网连接起来,中继器是广域网设备,用于网络中信息的传递。
52.D解析:本题考查指针变量的运用。选项A)、B)的指针定义错误,空指针NULL是对指针变量赋。值而得到的。例如:
#defineNULL0
int*p=NULL;
对指针变量赋。值和不赋值的时候意义是不同的:指针变量未赋值时,它是指向任意不确定的存储单元,不能使用,否则将造成意外错误;而指针变量赋0值后,则可以使用,只是它不指向具体的变量而已。选项C)中的*c=&t;错误,因为&t是地址,而*c是值。选项D)是让指针L指向字符串的末尾,即字符串的结束符。
53.C解析:本题考查的知识点是赋值语句的基本知识。在表达式的运算中,双目赋值运算符的格式为“变量二表达式”,单目运算符一般形式为“运算符表达式”或“表达式运算符”。常量和表达式是不能被赋值的。选项A为复合表达式,首先计算(i=2,++i)的值,然后赋值给n,故选项A正确;选项B为简单自加运算,故选项B正确;选项C在表达式++(i+1);中,(i+1)不是变量,该表达式的值为常量,而在++运算中,其运算对象必须为变量,故选项C错误;选项D中为复合赋值表达式,正确.所以应当选择C。
54.D解析:E-R图不仅可以描述实体及其相互之间的联系,还可以描述多个实体集之间的联系和一个实体集内部实体之间的联系。
55.A解析:a就是数组a的首地址,而a+x是数组中第x个元素的地址,所以在四个选项中,选项B和C只能输入一个数据,选项D不能给a[0]输入数据,只有A可以完成给数组所有的元素输入数据的任务。
56.D
57.B
58.B解析:在本题中,s[0].a=1,s[1].b=5,所以输出结果为6。
59.D
60.B解析:本题考查了用指针处理字符串的方法。用指针处理字符串,首先要使指针指向该字符串。例如本题中的s1='AbDeG'就是使字符指针指向了字符串'AbDeG',而指针s1+=2则是指针向后移动了两个字符的位置,指向了字符‘D’。strcmp则是字符串比较函数。
61.A本题考查C语言中常量的定义。常量是指程序在运行过程中,其值不能被改变的量。C语言中常见的常量主要有整型常量、实型常量、字符型常量。整型常量包括十进制整数,如456;八进制整数,以0开头,如0456;十六进制整数,以0x开头,如0x456。实型变量包括十进制小数形式,如.456;指数形式,如456e0,字母e前面必须有数字,e后面的数字必须为整数,如456e-4。字符型常量是用单撇号括起来的一个字符。如,’a’,’A’等。’a’不等于’A’。字符型常量还包括一种转义字符,以’\\’开头,表示将’\\’后面的字符转换成另外的意义。字符串也可以作为常量,用双撇号括起来,如'abc'。本题A选项中单撇号括起来的不是一个字符,而是三个字符,故不是合法常量。B选项是实型变量的指数表示形式。C选项是字符串常量,用双撇号引起来。D选项是字符’\\0’,因为在碰到’\\0’后,字符串结束,因此只读取到’\\0’,所以D选项是合法常量。
62.A
63.C本题主要考查关键字typedef的作用和结构体的初始化。C语言不仅提供了丰富的数据类型,而且还允许由用户自己定义类型说明符,也就是说,允许由用户为已存在的数据类型名定义一个“别名”。类型定义符typedef即可用来完成此功能。说明新类型名的语句一般形式为:
typedef类型名标识符;
这里的“类型名”必须是在此语句之前已有定义的类型标识符,可以是任何基本类型、结构或联合类型符号。
在本题中,通过题目中程序的定义可以知道,STD为该结构体的类型,而不是结构体变量,因此,STDtt[2]的声明是正确的。
由于结构体的第三个成员变量为双精度型,而在选项A中,输入与其对应的值是整型,数据类型不匹配,因此不正确。
由于结构体的第二个成员变量为字符型,而在选项B和选项D中,用双引号引起,表示字符串,而不是单个字符,因此不正确。
在选项C中,虽然缺少一个元素,但系统提供了一个默认的值0。因此,这个赋值语句是正确的。
64.A不能将一个整数直接赋给指针变量作为地址,因此A)是错误的。函数的返回值可以是地址,即指针。函数调用中形参值的变化不会传递给实参。故本题答案为A)。
65.A解析:在链式存储结构中,存储数据的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,数据元素之间的逻辑关系,是由指针域来确定的。由此可见,选项A的描述正确。因此,本题的正确答案为A。
66.C
67.A数组定义的长度必须为常量,所以A)选项正确。
68.A静态类别变量的生存期贯穿于整个程序的运行,直到程序运行结束为止,全局变量也是一样,静态局部变量的初值在编译时赋予,程序执行期间不再赋予其他值,即重复当调用函数时,函数内部的再次赋初值无效。
69.B241/100=2,2%9=2,所以a=2,b为两个非零的值的逻辑与,结果为1,。
70.B在C语言中,函数是C程序的基本组成部分,用来完成子程序的功能。一个完整的C程序至少应该包括一个main()函数,其他函数可以没有,可以有一个,也可以有多个。C程序的执行过程是:从main()函数开始执行,然后在main()函数中调用其他函数,当main()函数执行完毕时,整个程序就结束了。main()函数出现的位置不一定是程序的最前面,也不一定是程序的最后面,它没有一个固定的位置,换句话说,就是main()函数可以出现在任何位置。
71.D定义语句后必须要分号‘;’,所赋初值放在大括号里。枚举类型的基础类型定义在枚举名的后面,如果没有显式声明,则其类型为int型,无需再次声明:intx;
72.D
73.B数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,是一种在操作系统支持下的系统软件,因此本题答案为B)。
74.C
75.D
76.A本题考查的是对指针变量赋空值。在C语言中用NULL给指针赋空值,如p=NULL。当指针值为NULL时,指针不指向任何有效数据。由于NULL与整数0相对应,所以有下面三条语句等价:
p=NULL;p=0;p=’\\0’。
77.C
78.D
79.C
80.Dfun函数的功能是对数组a[]的元素从大到小进行排序。
81.82.floatfun(intn){ inti,s1=0; floats=0.0; for(i=1;i<=n;i++) { s1=s1+i; /*求每一项的分母*/ s=s+1.0/s1; /*求多项式的值*/ } returns;}首先需要根据题意分析表达式的规律,得出通项,然后再完成程序语句。本题中公式的规律类似于求1+2+…+n的倒数之和。可以通过for循环语句来实现第1项到第n项的变化。先根据题目要求定义变量,注意该变量的数据类型。然后对其进行初始化操作,因为该变量相当于累加器,所以初值应为0(或0.0,根据变量数据类型来确定),再通过for循环语句来完成累加过程。本题中s1用来表示每一项的分母,每一项的分母都是由前一项分母加项数得到的。注意,由于s1定义成一个整型,因此在s=s+1.0/s1语句中不能把1.0写成1。2021年江西省鹰潭市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.有以下程序:
程序运行后的输出结果是().
A.1,3
B.2,3
C.1,4
D.1,2
2.
3.现有如下程序段#include"stdio.h"main(){inta[5][6]={23,3,65,21,6,78,28;5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};inti=0,j=5;printf("%d\n",*(&a[0][0]+2*i+j-2));}则程序的输出结果为
A.21B.78C.23D.28
4.在Windows环境下,单击当前应用程序窗口中的“关闭”按钮,其功能是A.将当前应用程序转为后台运行
B.退出Windows后再关机
C.退出Windows后重新启动计算机
D.终止当前应用程序的运行
5.有以下程序:#include<stdio.h>main(){chars[]=“abcde”;s+=2;printf(“%d\n”,s[0]);}程序的运行结果是()。
A.输出字符c的ASCII值B.程序出错C.输出字符cD.输出字符a的ASCII值
6.
7.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0;c=(a=a=5);(a=b,b+=4);printf("%d,%d,%d\n",a,bc);}程序运行后的输出结果是()。A.0,4,5B.4,4,5C.4,4,4D.0,0,0
8.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30
9.若有下列说明语句int(*p)();则标识符p代表的是()
A.一个用于指向函数的指针变量,函数返回值的类型为int型
B.一个带回值类型为整型的函数名
C.一个用于指向整型数据的指针变量
D.一个带回值类型为指针类型的函数名
10.下列程序的输出结果是______。#include<stdio.h>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
11.如果最常用的操作是取第i个结点及其前驱,最节省时间的存储方式是()。
A.单链表B.双向链表C.单循环链表D.顺序表
12.有以下程序:程序运行后的输出结果是()。A.1.000000B.0.000000C.0.250000D.0.500000
13.若有定义语句:“charS[3][10],(*k)[3],*p;”,则以下赋值语句正确的是()。
A.p=S;B.p=k;C.p=s[0];D.k=s;
14.有下列程序段:intk=0,a=1,b=2,c=3;k=a<b?b:a;k=k>c?c=k;执行该程序段后,k的值是()。
A.3B.2C.1D.0
15.设C语言中,一个int型数据在内存中占2个字节,则unsignedint型数据的取值范围为()。
A.0~255B.0~32767C.0~65535D.0~2147483647
16.判断有向图是否存在回路,利用()方法最佳。
A.求关键路径B.求最短路径C.拓扑排序D.广度优先遍历
17.
18.有以下程序
main()
{inti;
for(i=1;i<=40;i++)
{if(i++%5==0)
if(++i%8==0)printf("%d",i);
}
printf("\n");
}
执行后的输出结果是
A.5B.24C.32D.40
19.在一个顺序队列中,队首指针指向队首元素的____位置。
A.前一个B.后一个C.当前D.最后一个
20.以下关于C语言数据类型使用的叙述中错误的是A.若要准确无误差的表示自然数,应使用整数类型
B.若要保存带有多位小数的数据,应使用双精度类型
C.若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型
D.若只处理“真”和“假”两种逻辑值,应使用逻辑类型
二、2.填空题(20题)21.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。
22.在关系运算中,【】运算是在给定关系的某些域上进行的运算。
23.设y为血型变量,请写出描述“y是偶数”的表达式______。
24.在程序设计阶段应该采取______和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,继而用某种程序设计语言写成程序。
25.以卜函数sstrcat()的功能是实现宁符串的连接,即将t所指字符串复制到s所指字符串的尾部。例如:s所指字符串为abcd,t所指字符申为efgh,函数调用后s所指字符串为abcdefgh。请填空。
#include<string.h>
voidsstrcat(char*s,char*t)
{intn;
n=strlen(s);
while(*(s+n)=){s++;t++;}
}
26.以下程序运行后的输出结果是【】。
main()
{
intp=30;
printf("%d\n",(p/3>0?p/10:p%3));
}
27.下列程序的输出结果是______。
main()
{inti=0,a=0;
while(i<20)
{for(;;)
{if((i%10)==0)break;
elsei--;}
i+=11;
a+=i;
}
printf("%d\n",A);
}
28.有以下程序:
main()
{intt=1,i=5;
for(;i>=0;i--)t*=i;
printf("%d\n",t);
}
执行后的输出结果是【】。
29.有以下程序段,且变量已正确定义和赋值
for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));
printf("s=%f\n\n",s);
请填空,使下面程序段的功能与之完全相同
s=1.0;k=1;
while(【】){s=s+1.0/(k*(k+1));【】;}
printf("s=%f\n\n",s);
30.以下程序的运行结果是#defineMAX(A,B)(A)>(B)?(A):(B)#definePRINT(Y)printf(:Y=%d\t",Y)main(){inta=1,b=2,c=3,d=4,t;t:MAX(a+b,c+d);PRINT(t);}
31.数据结构分为逻辑结构与存储结构,线性链表属于【】。
32.在面向对象方法中,【】描述的是具有相似属性与操作的一组对象。
33.若想通过以下输入语句给a赋值1,给b赋值2.则输入数据的形式应该是【】。
inta,b;
scanf("a=%d,b=%d",&a,&b);
34.下面程序的运行结果是()。#defineP(A)printf("%d",A)main(){intj,a[]={1,2,3,4,5,6,7},i=5;for(j=3;j>1;j--){switch(j){case1:case2:P(a[i++]);break;case3:P(a[--i]);}}}
35.下面程序的功能是将字符串a下标值为偶数的元素由小到大排序,其他元素不变,请填空。
#include<stdio.h>
main()
{
chara[]="labchmfye",t:
int1,j;
for(i=0;i<7;i+=2)
for(j=i+2;j<9;【】)
if(【】)
{t=a[i];a[i]=a[j];a[j]=t;j++;}
puts(a);printf("\n");
}
36.己定义charch='$';inti=l,j;,执行j=!ch&&ii++以后,i的值为【】。
37.已知字母A的ASCII码为65。以下程序运行后的输出结果是______。
main()
{chara,b;
a='A'+'5'-'3';b=a+'6'-'2';
printf("%d%c\n",a,B);
}
38.在树型结构中,根结点没有【】结点,其余每个结点有且仅有【】个前驱结点;叶结点没有后继结点,其余每个结点的【】结点数不受限制。
39.与结构化需求分析方法相对应的是【】方法。
40.在面向对象方法中,允许作用于某个对象上的操作称为【】。
三、1.选择题(20题)41.有以下结构体说明和变量定义,如图所示,指针p、q、r,分别指向此链表中的3个连续结点。Structnode{intdata;Structnode*hext;}*p,*q,
*r;
现要将Q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是
A.p->next=q->next;
B.p->next=p->next->next;
C.p->next=r;
D.p=q->next;
42.一些重要的程序语言(如Pascal语言)允许过程的递归调用,而实现递归调用中的存储分配通常用()。
A.栈B.堆C.数组D.链表
43.已有定义:inti,a[10],*p;则合法的赋值语句是()。
A.p=100;B.p=a[5];C.p=a[2]+2;D.p=a+2;
44.有以下程序段intn=0,p;do{scanf(“%d”,&p);n++;}while(p!=12345&&n<3);此处do-while循环的结束条件是
A.P的值不等于12345并且n的值小于3
B.P的值等于12345并且n的值大于等于3
C.P的值不等于12345或者n的值小于3
D.P的值等于12345或者n的值大于等于3
45.有如下程序:main(){intn=9;while(n>6){n--;printf("%d",n);}}该程序的输出结果是
A.987B.876C.8765D.9876
46.下列对于软件测试的描述中正确的是()。
A.软件测试的目的是证明程序是否正确
B.软件测试的目的是使程序运行结果正确
C.软件测试的目的是尽可能多地发现程序中的错误
D.软件测试的目的是使程序符合结构化原则
47.下列叙述中正确的是()。
A.接口复杂的模块,其耦合程度一定低
B.耦合程度弱的模块,其内聚程度一定低
C.耦合程度弱的模块,其内聚程度一定高
D.上述3种说法都不对
48.有以下结构体说明和变量定义,如图所示:struetnode{intdata;structnode*next;}*p,*q,*r;
现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是
A.p->next=q->next;
B.p->next=p->next->next;
C.p->next=r;
D.p=q->next;
49.若在以下定义和赋值语句,则才s数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的合法引用为ints[2][3]={0},(*p)[3];p=s;
A.*(*(p+i)+j)B.*(p[i]+j)C.(p+i)+jD.(*(p+i))[j]
50.以下对结构体类型变量td的定义中,错误的是
A.typedefstructaa{intn;floatm;}AA;AAtd;
B.structaa{intn;floatm;}td;structaatd;
C.struct{intn;floatm;}aa;structaatd;
D.struct{intn;floatm;}td;
51.下列说法中不正确的是()
A.调制解调器(Modem)是局域网络设备
B.集线器(Hub)是局域网络设备
C.网卡(NIC)是局域网络设备
D.中继器(Repeater)是局域网络设备
52.若程序中已包含头文件stdio.h,以下选项能正确运用指针变量的程序段是()。
A.int*i=NULL;scanf("%d",i);
B.float*f=NULL;*f=10.5;
C.chart='m',*c;*c=&t;
D.long*L;L='\0';
53.以下非法的赋值语句是
A.n=(i=2,++i);B.j++;C.++(i+1);D.x=j>0;
54.下列关于E-R图的描述中正确的是()。
A.E-R图只能表示实体之间的联系
B.E-R图只能表示实体和属性之间的联系
C.E-R图只能表示实体和属性
D.E-R图能表示实体、属性和实体之间的联系
55.以下程序段给数组所有的元素输入数据,请选择正确答案填入。#include<stdio.h>main(){inta[10],i=0;while(i<10)scanf("%d",______);}
A.a+(i++)B.&a[i+1]C.a+iD.&a[++i]
56.下列语句中符合C语言语法的赋值语句是()
A.a=7+b+c=a+7;
B.9=7+b+9++a+7;
C.a=7+b,b++,a+7;
D.a=7+b,c=a+7;
57.有以下程序#include<stdio.h>#definePT5.5#defineS(x)PT*x*xmain(){inta=1,b=2;printf("%4.1f\n",S(a+b));}程序运行后的输出结果是()
A.49.5B.9.5C.22D.45
58.下列程序的输出结果是()。#include<stdio.h>structabc{inta,b,c,s;};main(){structabcs[2]={{1,2,3},{4,5,6}};intt;t=s[0].a+s[1].b;printf("%d\n",t);}
A.5B.6C.7D.8
59.设a=1,b=2,c=3,d=4,则表达式a<b?a:c<d?a:d的结果为______。
A.4B.3C.2D.1
60.下面程序的运行结果是#include<stdio.h>#include<string.h>main(){char*s1="AbDeG";char*s2="AbdEg";s1+=2;s2+=2;printf("%d\n",strcmp(s1,s2));}
A.正数B.负数C.零D.不确定的值
四、选择题(20题)61.以下选项中不能作为C语言合法常量的是
A.’Fab’B.0.7e+9C."\b"D.’\01211’
62.
63.设有如下说明
typedefstruct
{intn;
charc;
doublex;
}STD;
则以下选项中,能正确定义结构体数组并赋初值的语句是
A.STDtt[2]={{1,’A’,62},{2,’B’,75}};B.STDtt[2]={1,"A",62,2,"B",75};
C.structtt[2]={{1,’A’},{2,’B’}};D.structtt[2]={{1,"A",62.5},{2,"B",75.0}};
64.以下叙述中错误的是()。
A.可以给指针变量赋一个整数作为地址值
B.函数可以返回地址值
C.改变函数形参的值,不会改变对应实参的值
D.当在程序的开头包含头文件stdi0.h时,可以给指针变量赋NULL、、、
65.下列对于线性链表的描述中正确的是()。
A.存储空间不一定连续,且各元素的存储顺序是任意的
B.存储空间不一定连续,且前件元素一定存储在后件元素的前面
C.存储空间必须连续,且前件元素一定存储在后件元素的前面
D.存储空间必须连续,且各元素的存储顺序是任意的
66.有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是()。
A.自然连接B.交C.除D.并
67.下列选项中,能正确定义数组的语句是()。
68.以下叙述中错误的是()。
A.全局变量的作用域一定比局部变量的作用域范围大
B.静态(static)类别变量的生存期贯穿于整个程序的运行期间
C.全局变量的生存期是整个程序的运行期间
D.静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值
69.以下程序的输出结果是()。
#include<stdio.h>
voidmain()
{inta,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);}
A.6,1B.2,1C.6,0D.2,0
70.在一个C程序中
A.main函数必须出现在所有的函数之前B.main函数可以在任何地方出现
C.main函数必须出现在所有的函数之后D.main函数必须出现在固定位置
71.下列关于结构型、共用型、枚举型的定义语句中,正确的是()。
A.structss{intx}
B.unionuu{intx;}xx=5;
C.enumee{intx};
D.struct{intx;};
72.
73.数据库管理系统是()。
A.操作系统的一部分B.在操作系统支持下的系统软件C.一种编译系统D.一种操作系统
74.
75.在JavaScript语言中,拥有onsubmit事件的对象是()。
A.documentB.eventC.windowD.form.
76.下列关于指针变量赋空值的说法错误的是
A.当赋空值的时候,变量指向地址为0的存储单元B.赋值语句可以表达为变量名=’\0’;
C.赋值语句可以表达为变量名=0;D.一个指针变量可以被赋空值
77.
78.
79.有以下程序:
执行后的输出结果是()。
A.7
B.3
C.20)O
80.有以下程序#include<stdio.h>voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/{intt,i,j;for(i=0;i<n-1;j++)for(j=i+l;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main{intc[10]={1,2,3,4,5,6,7,8,9,0),i;fun(c+4,6);for(i=0;i<10;i++)printf("%d,",c[i]);printf("\n");}程序运行的结果是()。A.1,2,3,4,5,6,7,8,9,0,
B.0,9,8,7,6,5,1,2,3,4,
C.0,9,8,7,6,5,4,3,2,1,
D.1,2,3,4,9,8,7,6,5,0,
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:从字符串str中,删除所有小写字母c。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是根据以下公式计算S,并将计算结果作为函数值返回,通过形参传入。例如,若n的值为11时,函数的值为1.833333。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>floatfun(intn){}voidmain(){ intn; floats; system(“CLS”); printf(“\nPleaseenterN:”); scanf(“%d”,&n); s=fun(n); printf(“Theresultis:%f\n”,s);}
参考答案
1.Af函数功能使第二个指针指向的元素增1,第一个指针指向的元素不变,所以答案选择A)。
2.B
3.A解析:通过地址来引用二维数组,若有以下定义:inta[3][4],i,j;且当0≤i≤3,0≤j<4则可以有以下几种方式来引用数组中的第i行,第j列的元素:\ue008a[i][j]\ue009,\ue008*(a[i]+j),\ue009*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。表达式&a[0][0]+2*i+j-2相当于是地址&a[0][0]加上多少偏移量。
4.D
5.B在C语言中,数组名类似于一个指向数组首地址的指针常量,一旦定义就不能修改其内容。所以本题中的“s+=2;”语句让数组名S的内容加2是错误的,编译无法通过。故本题答案为B选项。
6.B
7.A本题考查简单的赋值运算,在程序中c=(a-=am5),先算括号中的a-=a-5=5,所以c=5,再计算(a=b,b+=4);,a=b=0,b+=4=0+4=4,所以b=4,所以a=0,b=4,c=5,答案选择A。
8.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次。
9.A
10.C
11.D
12.D程序定义double变量x、y,给x赋初值2.0。if语句判断,当x小于0.0时,给y赋值0.0。否则当x小于10.0时,y的值为1.0/x;当x大于等于10.0时,y的值为1.0。题干中x的值为2.0,所以y的值为1.0/x,即0.500000。本题答案为D选项。
13.C答案C的意思是*P指向数组的第一个值。
14.B解析:因为a<b成立,所以条件表达式a<b?b:a的值等于b的值等于2,因此变量k的值等于2。又因为k=2>c=3不成立,所以条件表达式k>c?c:k的值等于k的值等于2。把条件表达式k>c?c:k的值赋给变量k,因而变量k的值等于2。因此,选项B)为正确答案。
15.C
16.C
17.A
18.C解析:当for循环执行到第30次时,i的值为30能被5整除,然后继续执行两次if语句,i经过两次自加1运算,值变为32,能被8整除,故此时第一次执行'printf('%d',i);'语句,即输出32。
19.A
20.D解析:C语言中没有逻辑类型,若只处理"真"或"假"两种逻辑值,可以使用整型数"1"或"0"表示,故选D。
21.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。
22.投影投影解析:在关系运算中,投影运算是在给定关系的某些域上进行的运算。
23.(y%2)==0(y%2)==0解析:因符合偶数的条件是对2取余为0,所以要描述y是偶数的表达式是(y%2)==0。
24.自顶向下自顶向下解析:在程序设计时,应先考虑总体,后考虑细节,逐步使问题具体化,对复杂的问题,应该设计一些子目标作为过渡,上述方法概括为:自顶向下,逐步细化。
25.*t*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 草种育种研发合作协议
- 护理管道标识管理
- 护理质控数据解读
- 勾股定理与实际应用的八大重难点题型(原卷版)-2024-2025学年八年级数学下册
- 高考数学总复习:二项分布、超几何分布与正态分布
- 动物的运动、行为和动物在生物圈中的作用(综合测试)-2025年中考生物一轮复习(含解析)
- 专题01 浓浓亲情读后续写-2025年高考英语话题写作高频热点通关攻略(原卷版)
- 急性心肌梗死护理流程
- 推拿治疗的作用
- 猝死护理不良事件管理要点
- 构建自媒体内容生产与运营流程
- 煤矿井下安全避险六大系统 课件 项目五供水施救系统建设
- 上海研学旅游计划书
- 食品产业园区规划设计方案案例
- 大一职业素养计划书的总结
- 《分布式计算、云计算与大大数据》习题参考解答
- 五年级下册科学全册知识点总结与梳理(新改版苏教版)
- 合同补充协议书范本(通用版)-精华版:免修版模板范本
- 项目工程安全生产评估表
- 数据链系统与技术(第2版) 课件 第9、10章 数据链的通信安全、典型数据链系统的作战运用
- 云南省昆明市五华区2022-2023学年六年级下学期期末英语试题
评论
0/150
提交评论