版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年江苏省无锡市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.下列叙述中正确的是()。
A.在switch语句中不一定使用break语句
B.在switch语句中必须使用default语句
C.break语句必须与switch语句中的case配对使用
D.break语句只能用于switch语句
2.按照标识符的要求,()符号不能组成标识符。A.连接符B.下划线C.大小写字母D.数字字符
3.以下选项中不能用作C语言程序合法常量的是()。
A.123B.‘\123’C.1,234D.“\x7D”
4.下列特征中不是面向对象方法的主要特征的是()。
A.多态性B.继承C.封装性D.模块化
5.有以下程序:#include<stdio.h>main(){inta=123456,b;while(a){b=a%10;a/=10;switch(b){default:printf(“%d”,b++);case1:case2:printf(“%d”,b++);break;case3:printf(“%d”,b++);break;case4:printf(“%d”,b++);}}}程序运行后的输出结果是()。
A.76654321B.12345667C.67564321D.654321
6.以下选项中,当x为大于1的奇数时,值为0的表达式是A.x%2==1B.x/2C.x%2!=0D.x%2==0
7.若一个栈以向量V[1..n]存储,初始栈顶指针top为n+1,则下面x进栈的正确操作是()。
A.top=top+1;V[top]=x
B.V[top]=x;top=top+1
C.top=top-1;V[top]=x
D.V[top]=x;top=top-1
8.有下列二叉树.对此二叉树前序遍历的结果为()。
A.ACFXDBEYZB.ABEFXYZCDC.ABCDEFXY7D.ABDYECFXZ
9.有3个节点的二叉树可能有()种。
A.12B.13C.5D.15
10.待排序的关键码序列为(33,18,9,25,67,82,53,95,12,70),要按关键码值递增的顺序排序,采取以第一个关键码为基准元素的快速排序法,第一趟排序后关键码33被放到第()个位置。
A.3B.5C.7D.9
11.对于下述程序,在方式串分别采用“wt”和“wb”运行时,两次生成的文件TEST的长度是#include<stdio.h>voidmain(){FILE*fp=fopen("TEST",);fputc('A',fp);fputc('\n',fp);fputc('B',fp);fputc('\n',fp);fputc('C',fp);fclose(fp);}
A.7字节、7字节B.7字节、5字节C.5字节、7字节D.5字节、5字节
12.以下程序的输出结果是()。main{intx=0.5;charz=‘a’;printf(“d\n”,(x&1)&&(z<‘z’));}A.0B.1C.2D.3
13.若有定义:floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是()。A.switch(x)
B.switch((int)x);{case1.0:printf("*\n");{case1:printf("*\n");case2.0:printf("**\n");}case2:printf("**\n");}
C.switch(a+B)
D.switch(a+B){case1;printf("*\n");{case1:printf("*\n");case2+1:printf("**\n");}casec:printf("**\n");)
14.设某文件内排序后得到100个初始归并段(初始顺串),若使用多路归并排序算法,且要求三趟归并完成排序,问归并路数最少为()
A.5B.6C.7D.8
15.C语言中逻辑表达式的值为()
A.0或1B.非零值或者零值C.ture或falseD.'ture'或者'false'
16.
17.以下程序的运行结果是#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);}
A.Y=3B.存在语法错误C.Y=7D.Y=0
18.下列叙述中错误的是()。A.在数据库系统中,数据的物理结构必须与逻辑结构一致,
B.数据库技术的根本目标是要解决数据的共享问题
C.数据库设计是指在已有数据库管理系统的基础上建立数据库
D.数据库系统需要操作系统的支持
19.输入序列为ABC,可以变为CBA时,经过的栈操作为()。
A.push,pop,push,pop,push,pop
B.push,push,push,pop,pop,pop
C.push,push,pop,pop,push,pop
D.push,pop,push,push,pop,pop
20.在关系代数运算中,有5种基本运算,它们是()。
A.并(∪)、差(-)、交(∩)、除(÷)和笛卡儿积(×)
B.并(∪)、差(-)、交(∩)、投影(π)和选择(σ)
C.并(∪)、交(∩)、投影(π)、选择(σ)和笛卡儿积(×)
D.并(∪)、差(-)、投影(π)、选择(σ)和笛卡儿积(×)
二、2.填空题(20题)21.现有如下定义:structaa{inta;floatb;charc;}*p;现需用malloc函数动态的申请一个structaa类型大小的空间(由p指向),则定义的语句为:【】。
22.以下程序的功能是将字符串s中所有小写字母'a'删去,请填空。
#include<stdio.h>
main()
{chars[]="absuWWUDJFKFLaaakdK";
inti,j;
for(i=j=0;s[i]!='\0';i++)
if()
s[j++]=s[i];
s[j]='\0';
printf("%s",s);
}
23.若有定义语句chars[100],d[100];intj=0,i=0;且s中已赋字符串,请填空以实现拷贝。(注:不使用逗号表达式)
white(s[i]){d[j]=【】;j++;}
d[j]=0;
24.下列程序的运行结果是______。
main()
{intx=1,y=2,z=3;
printf("%d,",x<y?y:x);
printf("%d,",z<y?x++:y++);
printf("%d,%d",x,y);
}
25.如果有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是【】。
intw[10]={23,54,10,33,47,98,72,80,61),*p=w;
26.写出下列程序的输出结果______。
main()
{intn=0;
while(n++<=1);
printf("%d,",n);
printf("%d",n++);
}
27.在链表的运算过程中,能够使空表与非空表的运算统一的结构是______。
28.下面pi函数的功能是根据以下公式返回满足精度要求的π的值。请根据以下算法要求补足所缺语句。
doublepi(doubleeps)
{doubles=0.0,t=1.0;
intn;
for(【】;t>eps;n++)
{s+=t;
t=n*t/(2*n+1);
}
return(2.0*【】);
}
29.在树形结构中,树根结点没有______。
30.下列程序的功能是对输入的一行字符中的数字字符的字面值累加,输出此累加和,请填空。
#include<stdio.h>
#include<ctype.h>
main()
{charc;
inta,s=0;
while(______)
if(isdigit(C))
{a=c-'0';s+=a;}
printf("s=%d",s);
}
31.软件的可移植性是用来衡量软件【】的重要尺度之一。
32.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。
33.在面向对象方法中,信息隐蔽是通过对象的______性来实现的。
34.若a=10,b=20,则表达式!(a<b)的值是【】。
35.以下程序中函数fun的功能是:构成一个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单链表中所有结点中的字符串。请填空完成函数disp。
#include<stdio.h>
typedefstructnode/*链表结点结构*/
{charsub[3];
structnode*next;
}Node;
Nodefun(chars)/*建立链表*/
{……}
voiddisp(Node*h)
{Node*p;
p=h->next;
while(【】)
{printf("%s\n",P->sub);p=【】;}
}
main()
{Node*hd;
hd=fun();disp(hd);printf("\n");
}
36.下列程序执行输出的结果是______。
#include<stdio.h>
f(intA)
{intb=0;
staticc=7;
a=c++;b++;
return(a);
}
main()
{inta=2,i,k;
for(i=0;i<2;i++)
k=f(a++);
printf("%dh",k);
}
37.有以下程序:
main()
{inta=7,b=8,*p,*q,*r;
p=&a;q=&b;
r=p;p=q;q=r;
printf("%d,%d,%d,%d\n",*p,*q,a,b);
}
程序运行后的输出结果是【】。
38.下面程序的功能是输出数组s中最大元素的下标,请填空。
main()
{intk,p,s[]={1,-9,7,2,-10,3};
for(p=0,k=p;p<6;p++)
if(s[p]>s[k])【】
printf("%d\n",k);}
39.下列程序的功能:对输入的一行字符中的数字字符的字面值累加,输出此累加和,请填空。
#include<stdio.h>
#include<ctype.h>
main()
{charc;
inta,s=0;
while(______)
if(isdigit(c))
{a=c-'0';s+=a;}
printf("s=%d",s);
}
40.用树型结构表示实体类型及实体间联系的数据模型称为【】。
三、1.选择题(20题)41.可以在C语言中用做用户标识符的是______。
A.voiddefineWORDB.as_b3_123IfC.for-abccasD.2cDoSIG
42.设有以下语句:charX=3,y=6,z;z=XY<<2;则2的二进制值是
A.10100B.O0011011C.11100D.11000
43.下列正确的变量声明是()
A.intm;n;k;
B.unsignedintm,n,k;
C.doubleintm,n,k;
D.intm,n,k
44.下列描述中正确的是()。
A.程序就是软件
B.软件开发不受计算机系统的限制
C.软件既是逻辑实体,又是物理实体
D.软件是程序、数据和相关文档的集合
45.对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为()。
A.125B.n/2C.nD.n+1
46.设下面程序段中调用fun函数传送实参a和b,main(){chara[10],b[10]┇fun(a,b);┇}则在fun函数首部中,对形参错误的定义是()
A.fun(chara[10],b[10]){…}
B.fun(chara1[],chara2[]){…}
C.fun(charp[10],charq[10]){…}
D.fun(char*s1,char*s2){…}
47.以下合法的赋值语句是()
A.x=y=100B.d--;C.x+y;D.c=int(a+b);
48.若变量已正确定义并赋值,以下符合C++语言语法的表达式是()。
A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b
49.如果进栈序列为A,B,C,D,则可能的出栈序列是()
A.C,A,D,BB.B,D,C,AC.C,D,A,BD.任意顺序
50.下列二维数组初始化语句中,不正确的是()。
A.intb[][2]={1,2,3,4,5,6,7};
B.intb[3][5]={0,0,0};
C.intb[][4]={{1,2},{3,4,5),{6}};
D.intb[3][2]={(1,2),(3,4),(5,6)};
51.以下叙述中正确的是______。A.预处理命令行必须位于C源程序的起始位置
B.在C语言中,预处理命令行都以"#"开头
C.每个C程序必须在开头包含预处理命令行:#include<stdio.h>
D.C语言的预处理不能实现宏定义和条件编译的功能
52.有以下程序structs{intx,y;}data[2]={10,100,20,200};main(){structs*p=data;printf("%d\n",++(p->x));}程序运行后的输出结果是
A.10B.11C.20D.21
53.若a,b,c1,c2,x,y均是整型变量,正确的switch语句是______。
A.switch(a+b);{case1:y=a+b;break;case0:y=a-b;break;}
B.switch(a*a+b*b){case3;case1:y=a+b;break;case3:y=b-a;break;}
C.switcha{casec1:y=a-b;break;casec2;x=a*b;break;default:x=a+b;}
D.switch(a-b){default:y=a*b;break;case3:case4:x=a+b;break;case10:case11:y=a-b;break;}
54.有如下程序段:inta[10]={1,2,3,4,5,6,7,8,9,10};int*p=&a[3],b;b=P[5];则b的值是()。
A.5B.6C.9D.8
55.判断char型变量c1是否为小写字母的正确表达式为()。
A.'a'<=c1<='z'
B.(c1>=A)‖(c1<=z)
C.('a'=>c1‖('z'<=c1)
D.(c1>='a')&&(c1<='z')
56.现有格式化输入语句,
A.intB.floatC.doubleD.不确定
57.下列程序是用来判断数组中特定元素的位置所在。如果输入如下整数:876675896101301401980431451777#include<conio.h>#include<stdio.h>intfun(int*s,intt,int*k){inti;*k=0;for(i=0;i<t;i++)if(s[*k]<s[i])*k=i;returns[*k];}main(){inta[10]={876,675,896,101,301,401,980,431,45l,777},k;clrscr();fun(a,10,&k);printf("%d,%d\n",k,a[k]);}则输出结果为
A.7,431B.6C.980D.6,980
58.有下列程序: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
59.在C语言中,函数的隐含存储类别是______。
A.autoB.staticC.externD.无存储类别
60.有以下程序#include<stdio.h>main(){int*p,j;p=NULLp=fun();for(j=0;j<4;j+){printf("%d",*p);p++;}}int*fun(){inta[4],k;for(k=0;k<4;k++)a[k]=k;return(A);}程序运行后的输出结果是()
A.程序有错不能运行B.输出4个NULLC.输出0123D.输出1111
四、选择题(20题)61.
62.在数据管理技术发展的三个阶段中,数据共享最好的是()。
A.人工管理阶段B.文件系统阶段C.数据库系统阶段D.三个阶段相同
63.下面叙述中正确的是(
)。A.全局变量的作用域一定比局部变量的作用域范围大B.静态类型变量的生存期贯穿于整个程序的运行期间C.函数的形参都属于全局变量D.未在定义语句中赋值的auto变量和static变量的初值都是随机值
64.
65.
66.main(intargc,char*argv[]){while(--argc>0)printf("%s",argv[argc]);printf("\n");}假定以上程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入PROGABCDEFGHIJKL,则输出结果为______。
A.ABCDEFGB.IJHLC.ABCDEFGHIJKLD.IJKLABCDEFGH
67.在单链表中,增加头结点的目的是______。
A.方便运算的实现B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单链表是线性表的链式存储实现
68.在单链表中,增加头结点的目的是()。A.A.方便运算的实现B.使单链表至少有一个结点
C.标识表结点中首结点的位置
D.说明单链表是线性的链式存储实现
69.设有以下语句:
其中0≤k<5。以下不是对字符串的正确引用的是()。
A.*strpB.strp[k]C.str[k]D.strp
70.数据流图中方框表示的是()。
A.数据流B.存储文件C.控制流D.源,潭
71.已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为()。
A.GEDHFBCAB.DGEBHFCAC.ABCDEFGHD.ACBFEDHG
72.有下列程序:、
fun(intX,inty){return(x+y);)
main()
{inta=1,b=2,c=3,sum;
sum=fun((a++,b++,a+b),c++);
printf("%d\n",sum);
}
执行后的输出结果是()。
A.6B.7C.8D.9
73.(67)数据处理的最小单位是()
A.数据
B.数据元素
C.数据项
D.数据结构
74.设有以下语句:typedefstructTY{charC;inta{41;}CIN;
则下面叙述中正确的是()。
A.CIN是structTr类型的变量
B.TT是struct类型的变量
C.可以用,lr定义结构体变量
D.可以用CIN定义结构体变量
75.“年龄在18~25之间”这种约束是属于数据库当中的()。A.A.原子性措施B.一致性措施C.完整性措施D.安全性措施
76.
设变量均已正确定义,
值10和20,为变量cl和c2赋字符X和Y。以下所示的输入形式中正确的是(注:口代表空格字符.()。
A.
B.
C.
D.
77.
78.以下程序段中,与语句“k—a>b?(b>c?1:O):0;”功能相同的是()。
A.if(a>b)(b>c)k=1;elsek=0;
B.if((a>b)‖(b>c))k=1;elsek=0;
C.if(a<=b)k=0;elseif(b>c)k=1;
D.if(a>b)k=1;elseif(b<=c)k=1;elsek=0:
79.
80.有以下程序:
程序运行后的输出结果是()。
A.321B.12300C.1D.123
五、程序改错题(1题)81.下列给定的程序中,函数proc()的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传人,若k的值为600,则函数的值为5671。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写一个函数,其功能是从传入的num个字符串中找出最长的一个字符串,并通过形参指针max传回该字符串的地址(用****作为结束输入的标识)。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:1#include<conio.h>2#include<stdio.h>3#include<string.h>4#include<stdlib.h>5char*fun(char(*a)[81],intnum,char*max)6{78}9voidmain()10{11FILE*wf;12charss[10][81],*ps=NULL;13chars[3][81]={"abed","deg","diegns"},*p=NULL;14inti=0,n;15system("CLS");16printf("输入若干个字符串:");17gets(ss[i]);18puts(ss[i]);19while(!stremp(ss[i],"****")==0)/*用4个星号作为结束输入的标志*/20{21i++;22gets(ss[i]);24puts(ss[i]);25}26n=i;27ps=fun(ss,n,ps);28printf("\nmax=%s\n",ps);29/********************/30wf=fopen("out.dat","w");31p=fun(s,3,p);32fprintf(wf,"%s",p);33fclose(wf);34/********************/
参考答案
1.Adefault语句在switch语句中可以省略,所以B选项错误;switch语句中并非每个case后都需要使用break语句,所以C选项错误;break语句还可以用于for等循环结构中,所以D选项错误。故本题答案为A选项。
2.A
3.CC选项中不能含有逗号,所以“1,234”不能用作C语言程序的合法常量。B选项表示的是八进制的常量,D选项表示的是十六进制的常量。故本题答案为C选项。
4.DD。【解析】面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括:分类性、多态性、封装性、模块独立性、继承和多态性等。模块化是结构化程序设计的特点。
5.C程序中变量a的初值为123456,while循环的终止条件是a为0。循环开始将a的最后一位数字赋给b,a除以10后(丢弃最后一位)重新赋给a。在循环过程中,变量a和b的取值分别为:124566、123455、12344、1233、122、11。循环体中,执行switch(b)语句,当b的数值不等于1、2、3、4时,首先执行default语句,输出b并将b自增1,再执行case1、case2语句,输出自增后的b值;当b的数值等于1、2、3、4时,只执行case语句,输出b的值。综上,当b为6、5时,分别输出67、56;当b为4、3、2、1时,分别输出4、3、2、1。最终程序输出结果为67564321。故本题答案为C选项。
6.D解析:因为x的值为大于1的奇数,所以x除以2的余数等于1,因此,选项A)、C)中表达式的结果为真,不为0;对于选项B)来说,x除以2的商不会等于0;选项D)中表达式的结果为假,即等于0。
7.C
8.D
\n所谓二叉树的前序遍历是指先访问根结点,访问左子树,最后访问右子树,本题中序为DYBEAFCZX,后序为YDEBFZXCA。
\n
9.C
10.BB.【解析】快速排序的基本思想是:从表中选取一个元素(如本题中的33),将表中小于此元素的移到前面,大于此元素的移到后面,结果把线性表分割成两部分(两个子表),此元素插入到其分界线的位置处。然后分别对两个子表再次分割……本题中33作为分割的中界线,第一趟排序后排在比它小的18、9、25、12后面。
11.B解析:以“wt”方式写入的是字符文件,转义字符\'\\n\'被看作两个字符来处理。而'wb'方式写入的是二进制文件,转义字符\'\\n\'是一个字符。故正确答案为选项B)。
12.B(x&1)&&(z<‘z’)=(0.5&1)&&(‘a’<‘z’)=1&&1=1,故选择B选项。
13.C
14.A
15.A
16.A
17.C解析:宏替换不像函数调用要进行参数值的计算、传递等,而只是简单按照原格式进行字符串的替换。注意:宏定义的命令格式。
18.A解析:本题考查数据库系统的基本概念和知识。数据的逻辑结构,是数据间关系的描述,它只抽象地反映数据元素之间的逻辑关系,而不管其在计算机中的存储方式。数据的存储结构,又叫物理结构,是逻辑结构在计算机存储器里的实现。这两者之间没有必然的联系。因此,选项A的说法是错误的。
数据库可以看成是长期存储在计算机内的、大量的、有结构的和可共享的数据集合。因此,数据库具有为各种用户所共享的特点。不同的用户可以使用同一个数据库,可以取出它们所需要的子集,而且容许子集任意重叠。数据库的根本目标是要解决数据的共享问题。因此,选项B的说法是正确的。
数据库设计是在数据库管理系统的支持下,按照应用的要求,设计一个结构合理、使用方便、效率较高的数据库及其应用系统。数据库设计包含两方面的内容:一是结构设计,也就是设计数据库框架或数据库结构;二是行为设计,即设计基于数据库的各类应用程序、事务等。因此,选项C的说法是错误的。
数据库系统除了数据库管理软件之外,还必须有其他相关软件的支持。这些软件包括操作系统、编译系统、应用软件开发工具等。对于大型的多用户数据库系统和网络数据库系统,还需要多用户系统软件和网络系统软件的支持。因此,选项D的说法是正确的。因此,本题的正确答案是选项A。
19.B
20.D解析:关系代数运算的基本运算符有4类:集合运算符、专门的关系运算符、算术运算符和逻辑运算符。并、差、笛卡儿积、投影、选择是5种基本的运算,其他运算可以通过基本的运算导出。
21.p=(structaa*)malloc(sizeof(structaa));p=(structaa*)malloc(sizeof(structaa));解析:ANSIC标准规定malloc函数的返回值类型为void*,函数的调用形式为:malloc(size)要求size的类型为unsignedint。由于返回类型为void*,所以在调用函数时,必须利用强制转换将其转换为所需要的类型。
22.s[i]!='a's[i]!='a'解析:本题是要将字符串s中所有小写字母'a'删去,所以if语句的判断条件应该是字符串s中的字符和字符'a'不相同的时候,就把它仍然存在原来的数组中,若是和字符'a'相同,就不再保存它。
23.s[i++]s[i++]解析:本题中为了能实现字符串的拷贝,需要使字符数组s从头到尾依次遍历其有元素。本题应使用i舶自增后置来实现。
24.22132,2,1,3解析:本题考查++,--运算符和条件运算符的使用。
“表达式1?表达式2:表达式3”的功能是:表达式1的值若非0,则计算表达式2的值,且表达式2的值为最终结果;若表达式1的值为0,则计算表达式3的值,且为最终结果。
本题中,x=1,y=2时,x<y成立,输出y的值2;y=2,z=3时,z<y不成立,执行y++,输出2后y值增1,所以最后一个输出x的值不变为1,y的值为增加后的3。
25.*(p+5)*(p+5)解析:p+5指向了数组w的第6个元素,再取指针运算。
26.333,3解析:本题在while(n++<=1)语句后,直接加了分号,说明如果while()的条件为真时,该循环什么都不做:n++是先取n的当前值和1做比较,然后再将n加1。第一次循环,n=0时,循环条件n++=<1成立,执行循环,然后得到n=1。第二次循环,n=1时,循环条件n++=1<=1成立,执行循环,然后得到n=2。第三次循环,n=2时,循环条件n++=2<=1不成立,不执行循环,但在判断循环条件时仍将n加1,得到n=3.退出循环后执行printf语句,第二个printf语句输出n++,是先输出n的当前值3,然后再将n加l,即程序结束后得到n=4,但输出的是3。
27.循环链表循环链表解析:在循环链表中,由于设置了一个头结点,因此在任何情况下,循环链表中至少有一个结点存在,从而使空表与非空表的运算统一。
28.n=1s
29.前件前件
30.(c=getchar())!='\n'(c=getchar())!='\\n'解析:分析题目可知,程序中运用函数c=getchar()从标准输入设备读取下一个字符,而且是一行的字符(即没有换行),所以条件为(c=getchar())!='\\n'。
31.质量质量
32.完善性软件维护活动包括以下几类:改正性维护,适应性维护、完善性维护和预防性维护,完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。
33.封装封装
34.00解析:已知a=10,b=20,所以逻辑表达式a<b的值为true,即为1,在这个表达式前面有一个逻辑运算符!,表示反操作,所以整个语句的值应当为false,即为0。
35.p!=NULLp->nextp!=NULL,p->next解析:考查了单链表的相关知识。NULL的ASCII码的值和'\\0'的ASCII码的值相等,条件到NULL停止循环。把下一个节点的地址赋给p,这样循环,节点可以依次向后取值。
36.88解析:第1次for循环,i=0,调用函数f(2),然后将a的值加1,在f()函数中,变量c为static类型,所以c=8:第2次for循环,i=1,调用函数f(3),然后将a的值加1,调用函数f(3)时,a=c++8,所以k=8。
37.87788,7,7,8解析:本题中执行语句p=&a和q=&b后,*p=7,*q=8;执行完语句r=p,p=q,q=r后,*p=8,*q=7,故答案为8,7,7,8。
38.k=p;k=p;解析:为寻找数组中最大元素的下标,需先预设1个临时最大元素的下标,并顺序逐一考查数组的元素,当发现当前元素比临时最大元素更大时,就用当前元素的下标更新临时最大元素下标。直至考查了数组的全部元素后,这临时最大元素下标就是数组的最大元素下标。通常预设的最大元素下标是数组的首元素下标,考查通常从首元素开始顺序向后继元素考查。程序中,存储临时最大元素下标的变量是k,变量p控制顺序考查的循环控制变量。当发现当前元素s[p]比临时最大元素s[k]更大时,应该用p更新k,所以在空框处应填入代码'k=p;'。
39.分析题目可知,程序中运用函数c=getchar()从标准输入设备读取下一个字符,而且是一行的字符(即没有换行),所以条件为(c=getchar())!='\\n'。\r\n\r\n
40.层次模型用树型结构表示实体类型及实体间联系的数据模型称为层次模型,用有向图结构表示实体类型及实体间联系的数据模型称为网状模型,用二维表格结构表示实体及其联系的数据模型称为关系模型。
41.B解析:C语言规定,标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。另外还需要注意的是关键字不能作标识符。选项A中void,C中for都为关键字,D中2c以字母开头。
42.B解析:本题考查两个位运算符。
按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。
左移运算符“<<”是双目运算符。其功能把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。并且“<<”运算符的优先级高干“^”。
43.B
44.D解析:软件是运行在计算机硬件之上的逻辑实体,包括程序、数据和相关的文档,软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制。
45.CC。【解析】对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为n。
46.A
47.B解析:选项A的结尾没用‘;’,所以不是一条语句:选项C中的表达式不会改变任何变量的内容,也不是合法的赋值语句;选项D有语法错误,int应该加上括号。所以,4个选项中只有选项B符合题意,运行后d的内容被减一。
48.B解析:a=b=c+2实际上相当于a=(b=c+2),进而可分解为两个表达式:b=c+2和a=b。注意:选项A)中包含一个不合法的运算符“:=”;选项C)应改为(int)18.5%3;选项D)可理解为两个表达式:a+7=c+b和a=a+7,其中第一个是错的,因为C++语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。注意:C++语言赋值语句的运用,
49.B【解析】栈的操作原则为后进先出。选项B)中出栈顺序可按“A进,8进,8出,C进,D进,D出,C出.A出”实现。
50.D解析:在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取0:C语言规定,对于二维数组,只可以省略第1个方括号中的常量表达式,而不能省略第2个方括号中的常量表达式;赋的初值不能多于事先定义好的数组元素个数。选项D)赋值表达式中对每一维的元素赋初值应用{},而不是()。
51.B解析:预处理命令行可以出现在C源程序的任何位置,故选项A不正确。#include<stdio.h>预处理命令行的意思是将stdio.h头文件插入源程序中该行命令所在的位置,表示我们将在后续行中用到stdio.h头文件中定义的函数或类型,若程序中没有用到这些函数或类型就可以不用包含此头文件,故选项C不正确。C提供的预处理功能主要有:宏定义、文件包含和条件编译三种功能,故选项D不正确。在C语言中,预处理命令行都以”#”开头,故应该选择B。
52.B解析:本题中定义了一个结构体数组data[2]并初始化,主函数中定义了一个结构体类型指针变量并让它指向data的首地址,由于p指向第一个元素的地址,所以p->x相当于data[0].x即为10,所以++(p->x)后的值为11。
53.D解析:由switch语句的格式排除A、C项,选项B中出现了两个相同的case标号。
54.C解析:p=&a[3]将指针指向数组a的第4个元素,p[5]则是数组a的第9个元素,而a[8]=9,所以b=9。
55.D解析:C语言规定,字符常量在程序中要用单引号括起来。判断c1是否为小写字母的充要条件c1>='a'和c1<='z',用逻辑与(&&)来表示。A选项的这种形式在C语言中没有,所以选项D)正确.
56.C解析:根据混合运算规则,如果有一个数据是float型或double型,则其他数据类型先转化为double型,运算的结果最终也是double型。
57.D解析:本题中直接使用指针变量k,但在使用时要注意对k的指针运算。此外,一开始应知道*k的值为数组中的某一下标值,即*k=0,本函数的功能是找出数组中的最大元素的位置及最大元素的值。
58.C解析:在for循环体中,首先判断自变量i能否被5整除,然后再自加两次,最后判断i能否被8整除。当for循环执行到第30次时,i的值为30能被5整除,然后i经过两次自加1运算,值变为32,能被8整除,故执行“printf('%d',i);”语句,即输出32。本题的答案为选项C)。
59.C解析:C语言规定,只要在定义函数时不进行存储类型的显式说明,函数的存储类型就隐含为外部类型,即extern型,外部类型允许其他文件中的函数调用。
60.A
61.A
62.C数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在各方面的表现都最好,一直占据数据库领域的主导地位,所以选择C)。
63.B
64.A
65.B
66.C解析:本题主函数带有两个参数,一个int型变量argc,另一个是char型的一维一级指针数组argv。当主函数被执行时,系统自动将根据命令行的情况,分别给主函数的两个参数赋值。Argc中存放命令行中命令字和参数的总和的个数,argv用来存放命令行中命令字和所有参数的字符串的,并规定avgv[0]存放命令字字符串,argv[1]用来存放第一个参数的字符串,argv[2]用来存放第2个参数的字符串,依此类推。题中argc的值是2,执行完--argc后为1,输出argv[1],此数组存在第一个参数的字符串ABCDEFGHIJKL。
67.A\nA。【解析】头结点不仅标识了表中首结点的位置,而且根据单链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点的目的是为了便于运算的实现。
\n
68.A根据单位链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点的目的是为了便于运算的实现。
69.Dstrp是一个指针数组名,即
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论