![2021-2022年海南省海口市全国计算机等级考试C语言程序设计_第1页](http://file4.renrendoc.com/view/bce0ee87b7f5df93d0e631a9272348df/bce0ee87b7f5df93d0e631a9272348df1.gif)
![2021-2022年海南省海口市全国计算机等级考试C语言程序设计_第2页](http://file4.renrendoc.com/view/bce0ee87b7f5df93d0e631a9272348df/bce0ee87b7f5df93d0e631a9272348df2.gif)
![2021-2022年海南省海口市全国计算机等级考试C语言程序设计_第3页](http://file4.renrendoc.com/view/bce0ee87b7f5df93d0e631a9272348df/bce0ee87b7f5df93d0e631a9272348df3.gif)
![2021-2022年海南省海口市全国计算机等级考试C语言程序设计_第4页](http://file4.renrendoc.com/view/bce0ee87b7f5df93d0e631a9272348df/bce0ee87b7f5df93d0e631a9272348df4.gif)
![2021-2022年海南省海口市全国计算机等级考试C语言程序设计_第5页](http://file4.renrendoc.com/view/bce0ee87b7f5df93d0e631a9272348df/bce0ee87b7f5df93d0e631a9272348df5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年海南省海口市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.有以下程序:main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}执行后输出结果是()。
A.77B.88C.810D.1010
2.有以下程序:voidfun1(char*p){char*q;q=p;while(*q!='\0'){(*q)++;q++;}}main(){chara[]={"Program"),*p;p=&a[3];fun1(p)printf("%s\n",A);}程序执行后的输出结果是()。
A.ProhsbnB.PrphsbnC.ProgsbnD.Program
3.若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,下列选项中错误的程序是()。
A.main(){…x=fun(2,10);…}floatfun(inta,intB){…}
B.floatfun(inta,intB){…}main(){…x=fun(i,j);…}
C.floatfun(int,int);main(){…x=fun(2,10);…}floatfun(inta,intB){…}
D.main()…{floatfun(inti,intj);…x=fun(i,j);…}floatfun(inta,intB){…}
4.右两个关系R和S如下:
则由关系R得到关系S的操作是()。A.自然连接B.并C.选择D.投影
5.下列程序的运行结果是()。#include<stdio.h>voidfun(int*S,int*p){staticintt=3:*p=s[t];t--;}voidmain{inta[]={2,3,4,5),k;intx;for(k=0,k<4,k++){fun(a,&x);printf("%d,",x);}}A.5,4,3,2B.2,3,4,5C.2,2,2,2D.5,5,5,5
6.下列关于逻辑运算符两侧运算对象的叙述中正确的是()。
A.只能是整数0或1B.只能是整数0或非0整数C.可以是结构体类型的数据D.可以是任意合法的表达式
7.下列有关图的遍历说法中,不正确的是()
A.图的遍历必须用递归实现
B.基本遍历算法两种:深度遍历和广度遍历
C.有向图和无向图都可以进行遍历操作
D.图的遍历算法可以执行在有回路的图上
8.下列选项中不是字符常量的是()。A.A.'\v'
B.'\x2a'
C.'a'
D."\0"
9.设某文件内排序后得到100个初始归并段(初始顺串),若使用多路归并排序算法,且要求三趟归并完成排序,问归并路数最少为()
A.5B.6C.7D.8
10.下述关于C语言文件的操作的结论中,正确的是______。
A.对文件操作必须先关闭文件
B.对文件操作必须先打开文件
C.对文件操作顺序无要求
D.对文件操作前必须先测文件是否存在,然后再打开文件
11.程序运行后的输出结果是()。A.10B.11C.20D.21
12.设有定义“struct{charmark[12];intnum1;doublenum2;}t1,t2;”,若变量均已正确赋初值,则下列语句中错误的是()。
A.t1=t2;
B.t2.num1=t1.num1;
C.t2.mark=t1.mark;
D.t2.num2=t1.num2;
13.
14.以下语句定义正确的是()A.A.inta[1][4]-{1,2,3,4,5};
B.floata[3][]={{1},{2},{3}};
C.longa[2][3]={{1},{1,2},{1,2,3},{0,0)};
D.doublea[][3]={O);
15.有以下程序#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,
16.若有说明:int*p,m=5,n;以下正确的程序段是
A.p=&n;scanf("%d",&p);
B.p=&n;scanf("%d",*p)
C.scanf("%d",&n);*p=n;
D.p=&n;*p=m;
17.设有序顺序表中有n个数据元素,则利用二分查找法查找数据元素X的最多比较次数不超过()。A.log2+1
B.log2(n-1)
C.log2n
D.log2(n+1)
18.若有定义“inta,b,c;”,想通过语句“scanf(“%d,%d%d”,&a,&b,&c);”把1、2、3分别赋给变量a、b、c,则正确的键盘输入是()。
A.1,2,3<Enter>
B.1,2<tab>3<Enter>
C.1<Enter><tab>2<tab>3
D.1<Enter>2<Enter>3
19.以下叙述中错误的是()。
A.函数的返回值类型不能是结构体类型,只能是简单类型
B.函数可以返回指向结构体变量的指针
C.可以通过指向结构体变量的指针访问所指结构体变量的任何成员
D.只要类型相同,结构体变量之间可以整体赋值
20.以下程序的输出结果是()。main(){inti,a[4][4]一{{1,3,5),{2,4,6},{3,5,7}};printf("%(1%d%d%d\n".a[O][3],a[1][2],a[2][1],a[3][0];}A.0650B.1470C.5430D.输出值不定
二、2.填空题(20题)21.以下程序的输出结果是【】。
#include<stdio.h>
voidswap(int*a,int*b)
{int*t;
t=a;a=b;b=t;
}
main()
{inti=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d%d\n",*p,*q);
}
22.在面向对象方法中,允许作用于某个对象上的操作称为【】。
23.下面程序中函数creat用于建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾,单向链表的头指针作为函数值返回。将程序补充完整。
#include<stdiao.h>
structlist
{chardata;structlist*next;};
structlist*creat()
{
structlist*h,*p,*q;charch;
h=【】malloc(sizeof(structlist));
p=q=h;ch=getchar();
while(ch!='?')
{
p=【】malloc(sizeof(structlist));
p->data=ch;q->next=p;q=p;ch=getchar();
}
p->next='\0';
【】;
}
24.在Windows环境下,可以将窗口最小化为【】。
25.若a=1,b=2,则表达式!(x=A)‖(y=B)&&0的值是______。
26.以下程序的输出结果是【】。
#include<string.h>
main()
{printf("%d\n",strlen("IBM\n012\1\\"));}
27.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体"项目主管"与实体"项目"的联系属于【】的联系。
28.以下程序的输出是【】。
main()
{
charstr1[]="Howdoyoudo",*p1=str1;
strcpy(str1+strlen(str1)/2,"esshe");
printf("%s\n",p1);
}
29.下面程序运行后的输出结果是()。
#include<stdio.h>
main()
{inta[]={1,2,3,4,5,6},*k[3],i=1;
while(i<4)
{k[i-1]=&a[2*i-1];
printf("%d",*k[i-1]);
i++;
}
}
30.成本估算模型中,Putnam估算模型是一种【】模型。
31.以下程序通过函数SunFun求。这里f(x)=x2+l,由F函数实现。请填空。
main()
{
printf("Thesum=%d\n",SunFun(10));
}
SunFun(intn)
{
intx,s=0;
for(x=0;x<=n;x++)
S+=F(______);
returns;
}
F(intx)
{
return(______);
}
32.下列程序段的运行结果是______。
intx=0,y=0;
while(x<15)y++,x+=++y;
printf("%d,%d",y,x);
33.下列程序的运行结果是______。
#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]);
}
}
}
34.数据库管理系统常见的数据模型有层次模型、网状模型和______三种。
35.数据的逻辑结构有线性结构和______两大类。
36.已知字母A的ASCII码为65。以下程序运行后的输出结果是______。
main()
{chara,b;
a='A'+'5'-'3';b=a+'6'-'2';
printf("%d%c\n",a,B);
}
37.若有程序
main()
{inti,j;
scanf("i=%d,j=%d",&i,&j);
pfintf("i=%d,j=%d\n",i,j);
}
要求给i赋10,给j赋20,则应该从键盘输入【】。
38.一个关系表的行称为()。
39.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。
40.设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为【】。
三、1.选择题(20题)41.若有以下定义的语句:structstudent{intage;intnum;};structstudentstu[3]={{1001,20},{1002,19},{1003,21}};main(){structstudent*p;p=stu;…}则以下不正确的引用是()。
A.(p++)->numB.p++C.(*p).numD.P=&stu.age.
42.已定义以下函数:fun(char*p2,char*p1){while((*p2=*p1)!='\0'){p1++;p2++;}}此函数的功能是()。
A.将P1所指字符串复制到p2所指内存空间,
B.将p1所指字符串的地址赋给指针p2
C.对p1和p2两个指针所指字符串进行比较
D.检查p1和p2两个指针所指字符串中是否有'\0'
43.以下合法的赋值语句是______。
A.X=Y=100B.D-;C.X+Y;D.C=int(A+B)
44.假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为``
A.log2n
B.n2
C.O(n1.5)
D.n(n-1)/2
45.在C语言中,下列关于文件操作的叙述正确的是()。
A.对文件操作必须先关闭文件B.对文件操作必须先打开文件C.对文件操作顺序没有统一规定D.以上全错
46.在单链表中,增加头结点的目的是______。
A.方便运算的实现B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单链表是线性表的链式存储实现
47.设有定义:intn1=0,n2,*p=&n2,*q=&n1;,下列赋值语句中与n2=n1;语句等价的是()。
A.*p=*q;B.p=q;C.*p=&n1;D.p=*q;
48.下面的程序执行后,文件test.t中内容是______。#include<stdio.h>voidfun(char*fname,char*st){FILE*myf;inti;myf=fopen(fname,"W");for(i=0;i<strlen(st);i++)foutc(st[i]myf;fclose(myf);}main(){fun("test.t","newworld");fun("test.t","hello,");}
A.hello,B.newworldhelloC.newworldD.hello,rid
49.以下叙述中正确的是
A.用C程序实现的算法必须要有输入和输出操作
B.用C程序实现的算法可以没有输出但必须要有输入
C.用C程序实现的算法可以没有输入但必须要有输出
D.用C程序实现的算法可以既没有输入也没有输出
50.若有运算符<<,sizeof,^,&=,则它们按优先级由高至低的正确排列次序是()。
A.sizeof,&=,<<,^
B.sizeof,<<,^,&=
C.^,<<,sizeof,&=
D.<<,^,&=,sizeof
51.有以下程序
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;
printf("%d\n",*p+*q);}
程序运行后的输出结果是
52.在c语言中,变量的隐含存储类别是()。
A.autoB.staticC.externD.无存储类别
53.设有定义:inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是()。
A.scanf("%d",pA);
B.scanf("%d",A);
C.scanf("%d",&pA);
D.seanf("%d",*pA);
54.已知在ASCⅡ代码中,字母A的序号为65,以下程序的输出结果是______。#include<stdio.h>main(){charc1='A',c2='Y';printf("%d,%d\n",c1,c2);}
A.65,90B.因输出格式不合法,输出错误信息C.A,YD.65,89
55.下列设备不是输出设备的是______。
A.显示器B.打印机C.绘图仪D.扫描仪
56.使计算机病毒传播范围最广的媒介是________
A.硬磁盘B.软磁盘C.内部存储器D.互联网
57.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。
A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca
58.下面程序段中c的二进制值是______。chara=3,b=6,c;c=a^b<<1;
A.1011B.1111C.11110D.11100
59.简单的交换排序方法是()。
A.快速排序B.选择排序C.堆排序D.冒泡排序
60.C语言库函数fgets(str,n,fg)的功能是_______。
A.从中指向的文件中读取长度n的字符串存入str指向的内存
B.从fp指向的文件中读取长度不超过n-1的字符串存入str指向的内存
C.从fp指向的文件中读取n个字符串存入str指向的内存
D.从sb读取至多n个字符到文件fp
四、选择题(20题)61.
62.以下叙述中正确的是()。
A.c语言规定必须用main作为主函数名,程序将从此开始执行
B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行
C.c语言程序将从源程序中第一个函数开始执行、
D.main的各种大小写拼写形式都可以作为主函数名,如MAIN,Main等
63.要求以下程序的功能是计算:s=1+1/2+1/3+…+1/100。
程序运行后输出结果错误,导致错误结果的程序行是()。
A.s=1.0;
B.
C.S=S+1/n;
D.
64.
65.
66.
67.以下选项中关于C语言常量的叙述错误的是()。
A.经常被陡用的变量可以定义成常量
B.常量分为整型常量、实型常量、字符常量和字符串常量
C.常量可分为数值型常量和非数值型常量
D.所谓常量,是指在程序运行过程中,其值不能被改变的量
68.C语言中char类型数据占字节数为()。
A.3B.4C.1D.2
69.有两个关系R、S如下:
由关系R通过运算得到关系s,则所使用的运算为()。
A.选择B.投影C.插入D.连接
70.
71.设有如下说明
typedefstruct
{intnumber;charclass;doublescore;}student;
则以下选项中,能正确定义结构体数组并赋初值的语句是()。
A.studenttt[2]={{189,’A’,62},{190,’B’,75}};
B.studenttt[2]={189,’"A",62,190,"B",75};
C.structtt[2]={{189,’A’},{190,’B’}};
D.structtt[2]={{189,"A",62.5},{190,"B",75.0}};
72.在数据管理技术发展的三个阶段中,数据共享最好的是()。
A.人工管理阶段B.文件系统阶段C.数据库系统阶段D.三个阶段相同
73.若有说明“chars1[30]="abc",s2[]="defghi";",则在使用函数stoat(s1,s2)后,结果是()。A.A.s1的内容更新为abcdefghiB.s1的内容更新为defghi\0
C.s1的内容更新勾defghiabc\0
D.s1的内容更新为abcdefghi\0
74.
75.设有以下定义inta=0;doubleb=1.25;charc=’A’;#defined2则下面语句中错误的是()
A.a++;B.b++C.c++;D.d++;
76.在软件开发中,需求分析阶段产生的主要文档是()。A.软件集成测试计划B.软件详细设计说明书C.用户手册D.软件需求规格说明书
77.有如下程序main(){chars[][5]={"abc","de","fgh"};printf("%c",s[2][6]);}其输出为______。
A.不确定B.编译错误C.gD.输出null字符
78.
79.一棵二叉树共有25个结点,其中5个是叶子结点,则度为l的结点数为()。
A.16B.10C.6D.4
80.有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向此链表中的3个连续结点。structnode{
int
data;structnode
*next;
}*p,*q,*r;现要将这个链表构成一个环,以下(
)操作是正确的。A.p->next=q->nextB.r->next=pC.p->next=rD.r->next=q->next->next
五、程序改错题(1题)81.下列给定程序中函数fun的功能是:将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为87653142时,t中的数为7531。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构!
六、程序设计题(1题)82.规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函
数时,不得使用c语言提供的字符串函数。
例如,字符串中的内容为:****A*BC*DEF*G*******删除*后字符串中的内容应当
是:ABCDEFG。
注意:部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
参考答案
1.C解析:本题考核的知识点是字符数组的定义、赋初值以及函数sizeof()的应用。本题中定义两个字符型数组,其中a省略了长度,定义了b的长度为10,并赋初值分别为“abcdefg”和“abcdfg”。所以a的长度为赋值给它的字符串的字符个数7加上一个结束转义字符,即a的长度为7+1为8.定义时b的长度定义为10,故b的长度为10,因此最后通过函数sizeof()求得的数组a和数组b的长度分别为8和10,所以,4个选项中选项C符合题意。
2.A解析:在函数fun1()中,首先将形参p的内容存入临时指针q中,然后使用—个while循环,当q所指内容不是字符串结束标志'\\0\'时,让q所指内容增1,然后将指针q增1指向下一个位置。所以函数fun1()实现的功能是:将传入字符串的所有字符自增1。主函数,指针p在被传入fun1()函数之前,初始化指向的是宁符数组a的第4个元素\'g\',所以最终输出的结果应该是Prohsbn。故应该选择A。
3.A在调用函数时,应对其进行说明。A选项中,调用时没有对函数进行说明。B、C选项中,被调用函数在主调函数之前定义,不用说明。D选项中,在主函数中对被调用函数的返回值类型进行了说明。故本题答案为A选项。
4.C选择:是在数据表中给予一定的条件进行筛选数据。投影:是把表中的某几个属性的数据选择出来。连接:有自然连接、外连接,内连接等,连接主要用于多表之间的数据查询。并:与数学中的并是一样的。两张表进行并操作,要求它们的属性个数相同并且需要相容。
5.A依据fun函数,可知其要实现的功能是将S中第(t+1)个元素以前的元素逆置赋给数组P。由于fun中函数定义了静态变量t=3,因此,main函数中调用函数fun(a,&x)时,就是要将数组a中前4个元素逆置赋给数x,最后输出x数组。
6.D解析:逻辑运算符两侧的运算对象可以是任意合法的表达式。逻辑表达式的运算结果或者为1(“真”),或者为0(“假”)。
7.A
8.Dc语言规定,一个字符常量代表ASCII码字符集里的一个字符,在群序中用单引号括起来,以便区分。'\v'表示的是竖向跳格:'kx2a'表示的是两位十六迸制数;'a'表示的是字符a对应的ASCII码值。"\0"用双引号故不正确。
9.A
10.B解析:在C中对文件操作必须先打开文件,待文件操作完毕后要关闭文件。对文件以读的方式进行打开操作时,同时会执行文件的检查文件是否存在,不存在将会返回空的文件指针,如果对文件以写的方式打开时,文件不存在,将会自动创建文件,因此在C中打开文件前不必对其检查文件是否存在,故答案为B。
11.D[解析]声明data是结构S数组。初始化data[0].a=10;data[O]b=100;data[1].a=20;data[]b=200.主函数中p=data[1];即p.a=data[1].a;p.b=data[1].b;执行语句prit("%odn",++(pa);打印输出时p.a先增1再打印。p.a=data\u3000\u3000[1].a=20.先增1等于21.
12.Cmark为结构体中的数组,不能直接赋值,所以C选项错误。故本题答案为C选项。
13.C
14.D本题考查的是如何对二维数组进行赋值。选项A)中数组第二维的大小是4,但却给赋了5个元素;选项B)中C语言规定,对于二维数组,只可以省略第一个方括号中的常量表达式而不可以省略第二个方括号中的常量表达式:选项c)中数组第一维的大小是2,但是赋值却超过了2;选项D)中在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取0。
15.D程序的结构体数组a的元素形成了一个单向的循环链表,每个元素的指针成员都指向下一个元素的地址。
16.D解析:“&”是求址运算符,“*”是指变量说明符。选项A)、B)应改为scanf('%d',p);选项C)中指针变量p未指向一确定的内存单元,不能为其赋值,并且这样做很危险,建议不使用。
17.A
18.B题干中,格式输入函数scanf的格式控制字符串中,第1个%d与第2个%d之间有一个逗号。所以输入的第1个整数和第2个整数之间必须要有一个逗号,选项C、D错误;输入的第2个整数和第3个整数之间需要间隔符,可以使用<Tab>键、<Enter>键、空格符。故本题答案为B选项。
19.A函数返回值类型可以是简单类型和结构体类型。
20.A当所赋的值不够其列的宽度时,系统在其后自动补0,因此a[0][3]=0,a[1][2]=6,a[2][1]=5,a[3][0]=0,故选择A选项。
21.3535解析:函数swap(int*a,int*b)的功能是实现*a和*b中两个数据的交换,在主函数中调用swap(p,q)后,形参指针变量a和b分别指向i和j,在swap(int*a,int*b)执行完后,指针变量a和b分别指向j和i,而指针变量p,q所指向变量的值没有发生变化,所以输出结果为35。
22.方法方法解析:在面向对象方法中,方法是指允许作用于某个对象上的各种操作。
23.(structlist*)(structlist*)return(h)
24.图标或按钮图标或按钮
25.00解析:根据运算符的运算顺序可知,该表达式最后运算的是与(&&)运算,而任何表达式与“0”进行“与”运算,结果都为0。
26.99解析:本题要输出的结果是字符串'IBM\\n012\\1\\\\'的长度,'IBM'是3个字符,\'\\n\'是1个字符,'012'又是3个字符,最后的\'\\1\'和\'\\\\\'都是1个字符。所以最终字符串的长度应该是3+1+3+1+1=9。故本题应该填9。
27.一对多(或1∶N)一对多(或1∶N)解析:两个实体集间的联系实际上是实体集间的函数关系,这种函数关系可以有3种,即一对一(1∶1)的联系、一对多(1∶N)或多对一(N∶1)的联系和多对多(N∶N)的联系。
28.HowdoessheHowdoesshe解析:strcpy(str1,s1);字符串拷贝函数,作用是将字符串s1拷贝到字符数组strl中去。strlen(str):测试字符串str的长度,函数的值为字符串中实际长度,不包括\'\\0\'在内。本题中strlen(str1)的值为13,则strcpy(strl+strlen(strl)/2,'esshe');相当于strcpy(strl+6,'esshe');,因此可得答案为Howdoesshe
29.246
30.动态多变量动态多变量
31.xX*X+1或1+x*xx\r\nX*X+1或1+x*x解析:题目中要求从x=0开始将f(x)的值累加起来,直到x=10。在SunFun()函数中用了一个for循环,每循环一次将f(x)累加到s中,所以在本题的第一个空格处我们应该填x,,然后x+1,共循环10次。F()函数的功能应该是求数学表达式f(x)得值,所以其返回值应该为x*x+1。
32.8208,20解析:本题考查while循环和++运算符的运用。x=0符合条件x<15,则执行y++,x+=++y后,y=1,x=0+2=2后y=2,符合条件继续循环,y=3,x=x+4=6后y=4,再循环y=5,x=x+6=6+6=12后,y=6,继续循环y=7,x=x+8=12+8-20,此时y=8。
33.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自加等于5。
34.关系模型关系模型
35.非线性结构非线性结构
36.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。
37.i=0j=20i=0,j=20解析:scanf()函数的使用,该函数的第一个参数是格式字符串,主要由两类字符组成,一类是非格式符要求原样输入,一类是格式符对应要输入的变量,所以说本题中应该原样输入i=,j=,后面分别给变量0和20,所以说空格处应该填入i=0,j=20。
38.元组元组解析:一个关系表中的行称为元组,列称为属性。
39.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。
40.33解析:本题考查的是C语言逗号表达式的相关知识。程序在计算逗号表达式时,从左到右计算由逗号分隔各表达式的值,整个逗号表达式的值等于其中最后一个表达式的值。本题中,首先i被赋值为2,再自加1,最后i++的值计算为3。
41.D解析:结构体成员的引用可以用“结构体变量名.成员名”或者“结构体变量指针->成员名”两种方式来引用。注意:结构体类型的变量、数组和指针变量的定义。
42.A解析:本题中的while((*p2=*p1)!='\\0')语句首先进行赋值*p2=*p1,即把p1所指存储单元的字符逐一复制到p2所指存储单元中,然后判断p1所指单元内容是否为'\\0',若判断条件成立,则指针p1和p2依次指向下一个字符,继续执行循环体语句,否则循环终止。
43.B解析:本题中的答案A与D都缺少“;”,而答案C中,表达式是不能独立成为语句的,答案B使用了C语言的自减运算符它就相当于D=D-1,所以答案B为一赋值语句。
44.D解析:假设线性表的长度为n,则在最坏情况下,冒泡排序要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。
45.B解析:本题考查对文件的操作。文件打开后才可以对文件进行操作,使用结束后要关闭文件。对文件的操作都是顺序读写,即从文件的第一个数据开始,依次进行读写。
46.A\nA。【解析】头结点不仅标识了表中首结点的位置,而且根据单链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点的目的是为了便于运算的实现。
\n
47.A解析:在定义指针变量p和q时,分别把变量n2和n1的地址赋给了指针变量p和q,所以*p和*q中内容就分别是变量n2和n1的值,所以语句*p=*q与语句n2=n1等价。因此选项A)正确。
48.A解析:C语言中文件有文本文件与二进制文件,对文件的使用前必须先打开,打开方式有只读、写入、读写等方式。
49.C算法具有的5个特性是:有穷性、确定性、可行性、有0个或多个输入、有一个或多个输出。所以说,用C程序实现的算法可以没有输入,但必须要有输出。因此本题答案选C。
50.B解析:关系运算符<,<=,>,>=的优先级别相同,且高于==,!=两种运算符的级别。运算符的优先级别是:算术运算符优先级别最高,关系运算符次之,赋值运算符最低。
51.88解析:*p=&a[3],即*p=4,*q=p+2;即*q=6,所以*p+*q=10。
52.A解析:auto变量:无static声明的局部变量。用auto作存储类别的声明时,可以不写auto,存储类别隐含确定为auto(自动存储类别),是动态存储方式。大多数变量是自动变量。用static声明的局部变量是静态局部变量。函数调用结束后静态局部变量占据的内存存储单元空间不释放,局部变量保留原值,下次调用时可以继续使用该值。用extern声明外部变量,外部变量即全局变量,可以用extern声明来改变全局变量的作用域,实际上,关键字'auto'可以省略,auto不写则隐含确定为'自动存储类别',属于动态存储方式。
53.A解析:本题中定义了整型变量a和一个指向整型数据的指针变量pa,并定义pa是一个存放a的地址的变量。选项B是应该将a改为&a,故选项B不正确;选项c应该将&pa改为pa,因为pa已经表示存放:的地址,故选项C不正确:选项D中*pa表示的是指针p8所指向存储空间的变量的值,而不是一个地址,故选项D不正确,所以,4个选项十选项A符合题意。
54.D解析:在C语言中,将一字符常量赋值给一个变量,是把此字符常量所对应的ASCII码值赋值给此字符变量,所以一个字符既可作为字符形式输出,也可以整数形式输出。
55.D解析:扫描仪属于输入设备。
56.D
57.D解析:中序遍历的递归算法定义:①遍历左子树;②访问根结点;③遍历右子树。前序遍历的递归算法定义:①访问根结点;②遍历左子树;③遍历右子树。后序遍历的递归算法定义:①遍历左子树;②遍历右子树;③访问根结点。根据前序遍历的结果可知,a是根结点。由中序遍历的结果dgbaechf可知,d、g、b是左子树的结点,e、c、h、f是右子树的结点。再由前序遍历的结果bdg可知,b是a左边子树的根,由cefh可知,c是a右边子树的根。再由中序遍历的结果dgb可知,d、g是b左边子树的结点,b右边子树无结点。再由前序遍历结果dg可知,d为b左子树的根,g是以d为根的子树的右结点。至此,a的左子树已完全弄清楚了。同样的道理,可以弄清楚以c为根的子树的结点位置。所以可知后序遍历的结果是D。
58.B解析:C语言提供六种位运算符,按优先级由高到低的顺序分别为:取反(~)、左移(<<)和右移(>>)、按位与(&)、按位异或(∧)、按位或(|)。所以表达式c=a^b<<1先运算b<<1得二进制值为00001100,再运算a∧00001100,最后得二进制值00001111。
59.D解析:所谓的交换类排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序是一种最简单的交换排序方法,它通过相邻元素的交换,逐步将线性表变成有序。
60.B解析:fgets函数的作用是从指定的文件读入一个字符串。fgets(str,n,fp);中的n为要求得到的字符的个数,但只从fp指向的文件输入n-1个字符,然后在最后加一个‘\\0’字符,因此得到的字符串共有n个字符。
61.D
62.AC语言中的主函数只能是main()函数,不能任意指定,所以B选项错误。C语言从主函数main()开始,到主函数main()结束,所以C选项错误。主函数必须写成小写的main,不能混淆大小写,所以D选项错误。
63.C本题的考查点是查找程序运行错误的原因。主要考查运算中字符的转换。初看此题,可能不太容易发现错误,该题的运行结果是1.0000,算法错误。s=s+1/n;1/2=0,因为n为整型,所以1/n都为0。这就是导致本题出错的原因。s=s+1/n应改为s=s+1.0/n。
64.C
65.B
66.B
67.A常量是在程序运行时,其值不能被改变的量,跟是否经常使用没关系.
68.CChar类型数据占1个字节。
69.B解析:专门的关系运算包括:选择、投影和连接。1、选择:从关系中找出满足给定条件的元组的操作称为选择。选择是从行的角度进行的运算,即从水平方向抽取记录。2、投影:从关系模式中指定若干个属性组成新的关系。投影是从列的角度进行的运算,相当于对关系进行垂直分解。3、连接:连接是关系的横向结合。连接运算将两个关系模式拼接成一个更宽的关系模式,生成的新关系中包含满足连接条件的元组。连接过程是通过连接条件来控制的,连接条件中将出现两个表中的公共属性名,或者具有相同语义、可比的属性。选择和投影运算的操作对象只是一个表。相当于对一个二维表进行切割。连接运算需要两个表操作为操作对象。由图可知关系R通过运算得到关系S。关系S与关系R相比,记录的条数没有发生变化,属性的个数发生了变化。因此所使用的运算应该是投影。选项C插入运算会增加记录的条数。所以选项B是正确的。
70.A
71.AB项定义格式不对,tt[2]只有两个元素,C项缺少了结构体名,而结构体名不可少,D项一样缺少了结构体名。
72.C数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在各方面的表现都最好,一直占据数据库领域的主导地位,所以选择C)。
73.Dstrcat(s1,s2)函数的功能是把s2字符串连接到s1字符串的末尾,要保证s1有足够的空间容纳下连接后的字符串。
74.B
75.D++是自增运算符,作用是使变量的值增加1,选项D中的d不是变量,而是一个标识符,它代表常量2,常量是不允许进行自增运算的。故本题答案为D。
76.D需求分析阶段的工作可以概括为:需求获取、需求分析、编写需求规格说明书、需求评审四个方面。所以选择D。
77.A解析:由于s[2][6]表示字符串已超出了数组s的表示范围,在C中不会刘数组越界进行检查,当数组越界时,会得到一个不确定的值。
78.B
79.A根据二叉树的性质,n=n0+n1+n2(n表示总结点数,n0表示叶子结点数,nl表示度数为1的结点数,n2表示度数为2的结点数),而叶子结点数总是比度数为2的结点数多1,所以n2=n1-1=5-1=4,而n=25,所以nl=n-n0-n2=25-5-4=16。
80.B要想将链表构成一个环,需要r指向的节点的next指针(指向下一节点)指向p所指向的节点,即将p的值赋给next.
81.
(1)}t=0;
(2)if(d%21=0)或if(d%2==1)
【考点分析】
本题考查:指针型变量作为函数参数;if语句条件表达式,结合奇偶数的表示方法来确定该表达式内容。
【解题思路】
(1)由函数定义可知,变量t是指针变量,所以对t进行赋初值0是不对的。因为t指向的是存放新数的变量,所以此处应给新数赋初值0,即。t=0。
(2)变量d表示数S各个位上的数,此处的if条件应为判断d是否为奇数。
82.
【考点分析】
要删除字符串中所有*号需要用循环语句遍历字符串,用
判断语句判断字符是否为*号,由此可以决定该程序应使用循
环判断结构。
【解题思路】
2021-2022年海南省海口市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.有以下程序:main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}执行后输出结果是()。
A.77B.88C.810D.1010
2.有以下程序:voidfun1(char*p){char*q;q=p;while(*q!='\0'){(*q)++;q++;}}main(){chara[]={"Program"),*p;p=&a[3];fun1(p)printf("%s\n",A);}程序执行后的输出结果是()。
A.ProhsbnB.PrphsbnC.ProgsbnD.Program
3.若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,下列选项中错误的程序是()。
A.main(){…x=fun(2,10);…}floatfun(inta,intB){…}
B.floatfun(inta,intB){…}main(){…x=fun(i,j);…}
C.floatfun(int,int);main(){…x=fun(2,10);…}floatfun(inta,intB){…}
D.main()…{floatfun(inti,intj);…x=fun(i,j);…}floatfun(inta,intB){…}
4.右两个关系R和S如下:
则由关系R得到关系S的操作是()。A.自然连接B.并C.选择D.投影
5.下列程序的运行结果是()。#include<stdio.h>voidfun(int*S,int*p){staticintt=3:*p=s[t];t--;}voidmain{inta[]={2,3,4,5),k;intx;for(k=0,k<4,k++){fun(a,&x);printf("%d,",x);}}A.5,4,3,2B.2,3,4,5C.2,2,2,2D.5,5,5,5
6.下列关于逻辑运算符两侧运算对象的叙述中正确的是()。
A.只能是整数0或1B.只能是整数0或非0整数C.可以是结构体类型的数据D.可以是任意合法的表达式
7.下列有关图的遍历说法中,不正确的是()
A.图的遍历必须用递归实现
B.基本遍历算法两种:深度遍历和广度遍历
C.有向图和无向图都可以进行遍历操作
D.图的遍历算法可以执行在有回路的图上
8.下列选项中不是字符常量的是()。A.A.'\v'
B.'\x2a'
C.'a'
D."\0"
9.设某文件内排序后得到100个初始归并段(初始顺串),若使用多路归并排序算法,且要求三趟归并完成排序,问归并路数最少为()
A.5B.6C.7D.8
10.下述关于C语言文件的操作的结论中,正确的是______。
A.对文件操作必须先关闭文件
B.对文件操作必须先打开文件
C.对文件操作顺序无要求
D.对文件操作前必须先测文件是否存在,然后再打开文件
11.程序运行后的输出结果是()。A.10B.11C.20D.21
12.设有定义“struct{charmark[12];intnum1;doublenum2;}t1,t2;”,若变量均已正确赋初值,则下列语句中错误的是()。
A.t1=t2;
B.t2.num1=t1.num1;
C.t2.mark=t1.mark;
D.t2.num2=t1.num2;
13.
14.以下语句定义正确的是()A.A.inta[1][4]-{1,2,3,4,5};
B.floata[3][]={{1},{2},{3}};
C.longa[2][3]={{1},{1,2},{1,2,3},{0,0)};
D.doublea[][3]={O);
15.有以下程序#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,
16.若有说明:int*p,m=5,n;以下正确的程序段是
A.p=&n;scanf("%d",&p);
B.p=&n;scanf("%d",*p)
C.scanf("%d",&n);*p=n;
D.p=&n;*p=m;
17.设有序顺序表中有n个数据元素,则利用二分查找法查找数据元素X的最多比较次数不超过()。A.log2+1
B.log2(n-1)
C.log2n
D.log2(n+1)
18.若有定义“inta,b,c;”,想通过语句“scanf(“%d,%d%d”,&a,&b,&c);”把1、2、3分别赋给变量a、b、c,则正确的键盘输入是()。
A.1,2,3<Enter>
B.1,2<tab>3<Enter>
C.1<Enter><tab>2<tab>3
D.1<Enter>2<Enter>3
19.以下叙述中错误的是()。
A.函数的返回值类型不能是结构体类型,只能是简单类型
B.函数可以返回指向结构体变量的指针
C.可以通过指向结构体变量的指针访问所指结构体变量的任何成员
D.只要类型相同,结构体变量之间可以整体赋值
20.以下程序的输出结果是()。main(){inti,a[4][4]一{{1,3,5),{2,4,6},{3,5,7}};printf("%(1%d%d%d\n".a[O][3],a[1][2],a[2][1],a[3][0];}A.0650B.1470C.5430D.输出值不定
二、2.填空题(20题)21.以下程序的输出结果是【】。
#include<stdio.h>
voidswap(int*a,int*b)
{int*t;
t=a;a=b;b=t;
}
main()
{inti=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d%d\n",*p,*q);
}
22.在面向对象方法中,允许作用于某个对象上的操作称为【】。
23.下面程序中函数creat用于建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾,单向链表的头指针作为函数值返回。将程序补充完整。
#include<stdiao.h>
structlist
{chardata;structlist*next;};
structlist*creat()
{
structlist*h,*p,*q;charch;
h=【】malloc(sizeof(structlist));
p=q=h;ch=getchar();
while(ch!='?')
{
p=【】malloc(sizeof(structlist));
p->data=ch;q->next=p;q=p;ch=getchar();
}
p->next='\0';
【】;
}
24.在Windows环境下,可以将窗口最小化为【】。
25.若a=1,b=2,则表达式!(x=A)‖(y=B)&&0的值是______。
26.以下程序的输出结果是【】。
#include<string.h>
main()
{printf("%d\n",strlen("IBM\n012\1\\"));}
27.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体"项目主管"与实体"项目"的联系属于【】的联系。
28.以下程序的输出是【】。
main()
{
charstr1[]="Howdoyoudo",*p1=str1;
strcpy(str1+strlen(str1)/2,"esshe");
printf("%s\n",p1);
}
29.下面程序运行后的输出结果是()。
#include<stdio.h>
main()
{inta[]={1,2,3,4,5,6},*k[3],i=1;
while(i<4)
{k[i-1]=&a[2*i-1];
printf("%d",*k[i-1]);
i++;
}
}
30.成本估算模型中,Putnam估算模型是一种【】模型。
31.以下程序通过函数SunFun求。这里f(x)=x2+l,由F函数实现。请填空。
main()
{
printf("Thesum=%d\n",SunFun(10));
}
SunFun(intn)
{
intx,s=0;
for(x=0;x<=n;x++)
S+=F(______);
returns;
}
F(intx)
{
return(______);
}
32.下列程序段的运行结果是______。
intx=0,y=0;
while(x<15)y++,x+=++y;
printf("%d,%d",y,x);
33.下列程序的运行结果是______。
#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]);
}
}
}
34.数据库管理系统常见的数据模型有层次模型、网状模型和______三种。
35.数据的逻辑结构有线性结构和______两大类。
36.已知字母A的ASCII码为65。以下程序运行后的输出结果是______。
main()
{chara,b;
a='A'+'5'-'3';b=a+'6'-'2';
printf("%d%c\n",a,B);
}
37.若有程序
main()
{inti,j;
scanf("i=%d,j=%d",&i,&j);
pfintf("i=%d,j=%d\n",i,j);
}
要求给i赋10,给j赋20,则应该从键盘输入【】。
38.一个关系表的行称为()。
39.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。
40.设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为【】。
三、1.选择题(20题)41.若有以下定义的语句:structstudent{intage;intnum;};structstudentstu[3]={{1001,20},{1002,19},{1003,21}};main(){structstudent*p;p=stu;…}则以下不正确的引用是()。
A.(p++)->numB.p++C.(*p).numD.P=&stu.age.
42.已定义以下函数:fun(char*p2,char*p1){while((*p2=*p1)!='\0'){p1++;p2++;}}此函数的功能是()。
A.将P1所指字符串复制到p2所指内存空间,
B.将p1所指字符串的地址赋给指针p2
C.对p1和p2两个指针所指字符串进行比较
D.检查p1和p2两个指针所指字符串中是否有'\0'
43.以下合法的赋值语句是______。
A.X=Y=100B.D-;C.X+Y;D.C=int(A+B)
44.假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为``
A.log2n
B.n2
C.O(n1.5)
D.n(n-1)/2
45.在C语言中,下列关于文件操作的叙述正确的是()。
A.对文件操作必须先关闭文件B.对文件操作必须先打开文件C.对文件操作顺序没有统一规定D.以上全错
46.在单链表中,增加头结点的目的是______。
A.方便运算的实现B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单链表是线性表的链式存储实现
47.设有定义:intn1=0,n2,*p=&n2,*q=&n1;,下列赋值语句中与n2=n1;语句等价的是()。
A.*p=*q;B.p=q;C.*p=&n1;D.p=*q;
48.下面的程序执行后,文件test.t中内容是______。#include<stdio.h>voidfun(char*fname,char*st){FILE*myf;inti;myf=fopen(fname,"W");for(i=0;i<strlen(st);i++)foutc(st[i]myf;fclose(myf);}main(){fun("test.t","newworld");fun("test.t","hello,");}
A.hello,B.newworldhelloC.newworldD.hello,rid
49.以下叙述中正确的是
A.用C程序实现的算法必须要有输入和输出操作
B.用C程序实现的算法可以没有输出但必须要有输入
C.用C程序实现的算法可以没有输入但必须要有输出
D.用C程序实现的算法可以既没有输入也没有输出
50.若有运算符<<,sizeof,^,&=,则它们按优先级由高至低的正确排列次序是()。
A.sizeof,&=,<<,^
B.sizeof,<<,^,&=
C.^,<<,sizeof,&=
D.<<,^,&=,sizeof
51.有以下程序
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;
printf("%d\n",*p+*q);}
程序运行后的输出结果是
52.在c语言中,变量的隐含存储类别是()。
A.autoB.staticC.externD.无存储类别
53.设有定义:inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是()。
A.scanf("%d",pA);
B.scanf("%d",A);
C.scanf("%d",&pA);
D.seanf("%d",*pA);
54.已知在ASCⅡ代码中,字母A的序号为65,以下程序的输出结果是______。#include<stdio.h>main(){charc1='A',c2='Y';printf("%d,%d\n",c1,c2);}
A.65,90B.因输出格式不合法,输出错误信息C.A,YD.65,89
55.下列设备不是输出设备的是______。
A.显示器B.打印机C.绘图仪D.扫描仪
56.使计算机病毒传播范围最广的媒介是________
A.硬磁盘B.软磁盘C.内部存储器D.互联网
57.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。
A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca
58.下面程序段中c的二进制值是______。chara=3,b=6,c;c=a^b<<1;
A.1011B.1111C.11110D.11100
59.简单的交换排序方法是()。
A.快速排序B.选择排序C.堆排序D.冒泡排序
60.C语言库函数fgets(str,n,fg)的功能是_______。
A.从中指向的文件中读取长度n的字符串存入str指向的内存
B.从fp指向的文件中读取长度不超过n-1的字符串存入str指向的内存
C.从fp指向的文件中读取n个字符串存入str指向的内存
D.从sb读取至多n个字符到文件fp
四、选择题(20题)61.
62.以下叙述中正确的是()。
A.c语言规定必须用main作为主函数名,程序将从此开始执行
B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行
C.c语言程序将从源程序中第一个函数开始执行、
D.main的各种大小写拼写形式都可以作为主函数名,如MAIN,Main等
63.要求以下程序的功能是计算:s=1+1/2+1/3+…+1/100。
程序运行后输出结果错误,导致错误结果的程序行是()。
A.s=1.0;
B.
C.S=S+1/n;
D.
64.
65.
66.
67.以下选项中关于C语言常量的叙述错误的是()。
A.经常被陡用的变量可以定义成常量
B.常量分为整型常量、实型常量、字符常量和字符串常量
C.常量可分为数值型常量和非数值型常量
D.所谓常量,是指在程序运行过程中,其值不能被改变的量
68.C语言中char类型数据占字节数为()。
A.3B.4C.1D.2
69.有两个关系R、S如下:
由关系R通过运算得到关系s,则所使用的运算为()。
A.选择B.投影C.插入D.连接
70.
71.设有如下说明
typedefstruct
{intnumber;charclass;doublescore;}student;
则以下选项中,能正确定义结构体数组并赋初值的语句是()。
A.studenttt[2]={{189,’A’,62},{190,’B’,75}};
B.studenttt[2]={189,’"A",62,190,"B",75};
C.structtt[2]={{189,’A’},{190,’B’}};
D.structtt[2]={{189,"A",62.5},{190,"B",75.0}};
72.在数据管理技术发展的三个阶段中,数据共享最好的是()。
A.人工管理阶段B.文件系统阶段C.数据库系统阶段D.三个阶段相同
73.若有说明“chars1[30]="abc",s2[]="defghi";",则在使用函数stoat(s1,s2)后,结果是()。A.A.s1的内容更新为abcdefghiB.s1的内容更新为defghi\0
C.s1的内容更新勾defghiabc\0
D.s1的内容更新为abcdefghi\0
74.
75.设有以下定义inta=0;doubleb=1.25;charc=’A’;#defined2则下面语句中错误的是()
A.a++;B.b++C.c++;D.d++;
76.在软件开发中,需求分析阶段产生的主要文档是()。A.软件集成测试计划B.软件详细设计说明书C.用户手册D.软件需求规格说明书
77.有如下程序main(){chars[][5]={"abc","de","fgh"};printf("%c",s[2][6]);}其输出为______。
A.不确定B.编译错误C.gD.输出null字符
78.
79.一棵二叉树共有25个结点,其中5个是叶子结点,则度为l的结点数为()。
A.16B.10C.6D.4
80.有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向此链表中的3个连续结点。structnode{
int
data;structnode
*next;
}*p,*q,*r;现要将这个链表构成一个环,以下(
)操作是正确的。A.p->next=q->nextB.r->next=pC.p->next=rD.r->next=q->next->next
五、程序改错题(1题)81.下列给定程序中函数fun的功能是:将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为87653142时,t中的数为7531。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构!
六、程序设计题(1题)82.规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函
数时,不得使用c语言提供的字符串函数。
例如,字符串中的内容为:****A*BC*DEF*G*******删除*后字符串中的内容应当
是:ABCDEFG。
注意:部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
参考答案
1.C解析:本题考核的知识点是字符数组的定义、赋初值以及函数sizeof()的应用。本题中定义两个字符型数组,其中a省略了长度,定义了b的长度为10,并赋初值分别为“abcdefg”和“abcdfg”。所以a的长度为赋值给它的字符串的字符个数7加上一个结束转义字符,即a的长度为7+1为8.定义时b的长度定义为10,故b的长度为10,因此最后通过函数sizeof()求得的数组a和数组b的长度分别为8和10,所以,4个选项中选项C符合题意。
2.A解析:在函数fun1()中,首先将形参p的内容存入临时指针q中,然后使用—个while循环,当q所指内容不是字符串结束标志'\\0\'时,让q所指内容增1,然后将指针q增1指向下一个位置。所以函数fun1()实现的功能是:将传入字符串的所有字符自增1。主函数,指针p在被传入fun1()函数之前,初始化指向的是宁符数组a的第4个元素\'g\',所以最终输出的结果应该是Prohsbn。故应该选择A。
3.A在调用函数时,应对其进行说明。A选项中,调用时没有对函数进行说明。B、C选项中,被调用函数在主调函数之前定义,不用说明。D选项中,在主函数中对被调用函数的返回值类型进行了说明。故本题答案为A选项。
4.C选择:是在数据表中给予一定的条件进行筛选数据。投影:是把表中的某几个属性的数据选择出来。连接:有自然连接、外连接,内连接等,连接主要用于多表之间的数据查询。并:与数学中的并是一样的。两张表进行并操作,要求它们的属性个数相同并且需要相容。
5.A依据fun函数,可知其要实现的功能是将S中第(t+1)个元素以前的元素逆置赋给数组P。由于fun中函数定义了静态变量t=3,因此,main函数中调用函数fun(a,&x)时,就是要将数组a中前4个元素逆置赋给数x,最后输出x数组。
6.D解析:逻辑运算符两侧的运算对象可以是任意合法的表达式。逻辑表达式的运算结果或者为1(“真”),或者为0(“假”)。
7.A
8.Dc语言规定,一个字符常量代表ASCII码字符集里的一个字符,在群序中用单引号括起来,以便区分。'\v'表示的是竖向跳格:'kx2a'表示的是两位十六迸制数;'a'表示的是字符a对应的ASCII码值。"\0"用双引号故不正确。
9.A
10.B解析:在C中对文件操作必须先打开文件,待文件操作完毕后要关闭文件。对文件以读的方式进行打开操作时,同时会执行文件的检查文件是否存在,不存在将会返回空的文件指针,如果对文件以写的方式打开时,文件不存在,将会自动创建文件,因此在C中打开文件前不必对其检查文件是否存在,故答案为B。
11.D[解析]声明data是结构S数组。初始化data[0].a=10;data[O]b=100;data[1].a=20;data[]b=200.主函数中p=data[1];即p.a=data[1].a;p.b=data[1].b;执行语句prit("%odn",++(pa);打印输出时p.a先增1再打印。p.a=data\u3000\u3000[1].a=20.先增1等于21.
12.Cmark为结构体中的数组,不能直接赋值,所以C选项错误。故本题答案为C选项。
13.C
14.D本题考查的是如何对二维数组进行赋值。选项A)中数组第二维的大小是4,但却给赋了5个元素;选项B)中C语言规定,对于二维数组,只可以省略第一个方括号中的常量表达式而不可以省略第二个方括号中的常量表达式:选项c)中数组第一维的大小是2,但是赋值却
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《隧道的结构荷载》课件
- 如何招聘人才课件
- 《库存管理案例》课件
- 2025至2031年中国学生笔记本电脑行业投资前景及策略咨询研究报告
- 2025至2031年中国卧式干湿多用蒸箱行业投资前景及策略咨询研究报告
- 1.1 公有制为主体 多种所有制经济共同发展 【知识精研】高中政治统编版必修二经济与社会
- 《虞美人》《鹊桥仙》课件 【知识精研】统编版高一语文必修上册
- 《沟通与交流的礼仪》课件
- 《财务报表编制教学》课件
- 《copd的评估及治疗》课件
- 模具试模通知单
- 灯泡贯流式机组基本知识培训ppt课件
- 人参无公害标准化生产操作规程
- 人教版三年级下册体育与健康教案(全册教学设计)
- DB61∕T 5006-2021 人民防空工程标识标准
- 产品结构设计(课堂PPT)
- 第九课_静止的生命
- 尖尖的东西我不碰(课堂PPT)
- 工程勘察和设计承揽业务的范围
- 碳纤维、钢板加固板计算表(根据2013版加固规范 编写)
- 第二版人民币暗记大全
评论
0/150
提交评论