版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年山东省东营市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.
2.设有序表中的元素为(13,18,24,35,47,50,62),则在其中利用二分法查找值为24的元素需要经过()次比较容易
A.1B.2C.3D.4
3.为了隐藏在文本框中输入的信息,用占位符代替显示用户输入的字符,需要设置的属性是()。
A.ValueB.ControlSoureeC.InputMaskD.PasswordChar
4.
5.软件调试的目的是______。
A.发现错误B.改正错误C.改善软件的性能D.挖掘软件的潜能
6.以下叙述中正确的是()。
A.循环队列是队列的一种链式存储结构
B.循环队列是队列的一种顺序存储结构
C.循环队列中的队尾指针一定大于队头指针
D.循环队列中的队尾指针一定小于队头指针
7.已知shortint类型变量占用两个字节,若有定义:shortintx[10]={0,2,4};,则数组x在内存中所占字节数是()。
A.3B.6C.10D.20
8.下列叙述中错误的是()。A.程序可以由多个程序文件组成
B.一个C语言程序只能实现一种算法
C.程序可以由一个或多个函数组成
D.一个C函数可以单独作为一一个c程序文件存在
9.若有宏定义“#defineA_RECT(W,H)W*H”和以下程序段:intx=5,y=6,area1,area2;area1=A_RECT((x-1),(y+1));area2=A_RECT(x+3,y-1);执行上述程序段后,变量area1和area2的值分别是()。
A.022B.2840C.2822D.040
10.有以下程序#include<stdi0.h>main(){inta[]={2,3,5,4),i;for(i=0;i<4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;break;casel:a[i]--;}break;case1:a[i]=0;}for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");}程序运行后的输出结果是()。A.3344B.2050C.3040D.0304
11.有以下程序:#include<stdio.h>main(){intx=1,y=0,a=0,b=0;switch(x){ case1: switch(y) { case0:a++;break; case1:b++;break; } case2:a++;b++;break; case3:a++;b++;}printf(“a=%d,b=%d\n”,a,b);}程序的运行结果是()。
A.a=2,b=2B.a=2,b=1C.a=1,b=1D.a=1,b=0
12.若一组记录的排序码为(7,9,3,5,1,2,10),则利用堆排序的方法建立的初始堆为()
A.10,7,9,3,5,1,2
B.10,9,7,5,1,2,3
C.10,9,7,5,3,2,1
D.10,9,7,3,2,1,5
13.右两个关系R和S如下:
则由关系R得到关系S的操作是()。A.自然连接B.并C.选择D.投影
14.算法分析的目的是()。
A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进D.分析算法的易读性和文档性
15.在目标串T[0,n-1]=”xwxxyxy”中,对模式串p[0,m-1]=”xy”进行子串定位操作的结果_______
A.0B.2C.3D.5
16.在数据库设计中,将E-R图转换成关系数据模型的过程属于()。A.需求分析阶段B.概念设计阶段C.逻辑设计阶段D.物理设计阶段
17.设有如下定义:intx=10,y=3,z;则语句printf("%d\n",z=(x%y,x/y));的输出结果是()。
A.1B.0C.4D.3
18.软件详细设计的主要任务是确定每个模块的()。
A.算法和使用的数据结构B.外部接口C.功能D.编程
19.下列叙述中不正确的是()。
A.在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B.在C的函数中,最好使用全局变量
C.外部变量可以在函数之间传递数据
D.自动变量实质上是一个函数内部的局部变量
20.设长度为n的链队列用单循环链表表示,若只设头指针,则入队操作的时间复杂度为_______。
A.O(1)B.O(log2n)C.O(n)D.O(n2)
二、2.填空题(20题)21.输出若干学生3门课程的成绩。
#include<stdio.h>
【】
structstudent
{intnum;
floatscore[3];
}
main()
{inti=0,n;
floata[3];
【】*ptr[200];
printf("请输入学生学号和3门课成绩,学号为0表示数据输入结束\n");
do
{ptr[i]=(structstudent*)malloc(sizeof(structstudent));
scanf("%d%f%f%f",&ptr[i]->num,&a[O],&a[1],&a[2]);
ptr[i]->score[O]=a[O];
ptr[i]->score[1]=a[1];
ptr[i]->score[2]=a[2];
if(【】)break;
i++;
}while(1);
n=i-1;
【】;
for(i=O;i<=n;i++)
printf("%-6d%.1f%.1f%.1f\n",ptr[i]->num,ptr[i]->score[0],
ptr[i]->score[1],ptr[i]->score[2]);}
22.以下程序运行后的输出结果是______。
main()
{
charm;
m='B'+32;
printf("%e\n",m);
}
23.数据流图的类型有【】和事务型。
24.诊断和改正程序中错误的工作通常称为【】。
25.以下程序中给指针p分配三个double型动态内存单元,请填空。
#include<stdio.h>
main()
{dOuble*p;
p=(double*)malloc();
p[0]=1.5;p[1]=2.5;p[2]=3.5
printf("%f%f%f\n",p[0],p[1],p[2]);
}
26.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于______。
27.下述函数通过递归方法将字符串倒置,使用时需要指定字符数组的首地址、起始下标和终止下标。请填空:
#include<stdio.h>
voidfun(char*s,intlow,inthigh)
{if(【】)
return;
else
{chart;
fun(【】);
t=s[low];
s[low]=s[high];
s[high]=t;}}
28.以下程序中,select函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。
#defineN3
#defineM3
select(inta[N][M],int*n)
{inti,j,row=1,colum=1;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(a[i][j]>a[row][colum]){row=i;colum=j;}
*n=【】;
return(【】);
}
main()
{inta[N][M]={9,11,23,6,1,15,9,17,20},max,n;
max=select(a,&n);
printf(“max=%d,line=%d\n”,max,n);
}
29.软件危机出现于60年代末,为了解决软件危机,人们提出了【】的原理来设计软件,这就是软件工程诞生的基础。
30.若x和y都是buble型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为【】。
31.若x和a均是int型变量,则计算完x=(a=4,6*2)后的x值为______。
32.有以下程序
main()
{intn=0,m+1,X=2;
if(!n)X-=l;
if(m)X-=2;
if(X)X-=3;
printf("%d\n",x);
}
执行后输出的结果是【】。
33.定义inta=5,b;,则执行表达式b=++a*--a之后,变量b的值为【】。
34.软件定义时期主要包括______和需求分析两个阶段。
35.下面程序的运行结果是【】。
#inelude<stdio.h>
intf(inta[],intn)
{if(n>1)returna[0]+f(&a[1],n-1);
elsereturna[0];
}
main()
{intaa[3]={1,2,3},s;
s=f(&aa[0],3);printf("%d\n",s);
}
36.以下程序的输出结果是【】。
#include<string.h>
main()
{printf("%d\n",strlen("IBM\n012\1\\"));}
37.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。
#include<string.h>
main()
{inti,j,【】;charstr[]={"1234567"};
for(i=0,j=strlen(str)【】;i<j;i++,j--)
{k=str[i];str[i]=str[j];str[j]=k;}
printf("%s\n",str);}
38.若a是int型变量,则下列表达式的值为______。
(a=2*3,a*2),a+4
39.以下程序的功能是根据输入的“y”(“Y”)与“n”(“N”),在屏幕上分别显示出“ThisisYES.”与“ThisNO.”。空白处需要填入的内容是
#include<stdio.h>
voidYesNo(charch)
{switch(ch)
{case'y':
case'Y':printf("\nThisisYES,\n");
case'n':
case'N':printf("\nThisisNO.\n");}}
main()
{charch;
printf("\nEnterachar'y','Y'or'n','N':");
ch=【】;
printf("ch;%c",ch);
YesNo(ch);}
40.已有定义如下:
structnode
{intdata;
structnode*next;
}*p;
以下语句调用malloc函数,使指针p指向一个具有structnode类型的动态存储空间。请填空。
p=(structnode*)malloc(【】);
三、1.选择题(20题)41.16位二进制补码表示的数据范围是()
A.0~(216-1)B.0~215C.-215~(215-1)D.-215~215
42.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是()。
A.for(i=1,p=1;i<=5;i++)p*=i;
B.for(i=1;i<=5;i++){p=1;p*=i;}
C.i=1;p=1;while(i<=5){p*=i;i++;}
D.i=1;p=1;do{p*=i;i++;}while(1<=5)
43.对于下列字符串,说明表达式strlen(s)值的是()
chars[10]=('a','\n','a','b','\t','c'};
A.10B.1C.6D.7
44.以下不正确的转义字符是()。
A.'\\'B.'\t'C.'\n'D.'088'
45.设有如下程序段:x=2002,y=2003;printf("%d\n",(x,y));则以下叙述中正确的是()。
A.输出语句中格式说明符的个数少于输出项的个数,不能正确输出
B.运行时产生出错信息
C.输出值为2002
D.输出值为2003
46.下列可用于C语言用户标识符的一组是
A.void,define,WORD
B.a3_b3,_123,Car
C.For,-abc,IFCase
D.2a,DO,sizeof
47.下列描述中不正确的是()。
A.字符型数组中可以存放字符串
B.可以对字符型数组进行整体输入、输出
C.可以对整型数组进行整体输入、输出
D.不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值
48.有以下程序:#include<stdio.h>main(){inti,j;for(i=3;i>=1;i--){for(j=1;j<=2;j++)printf("%d",i+j);printf("\n");}}程序运行的结果是()。
A.234B.432C.23D.4534554334344523
49.下列程序的输出结果是______。main(){chara[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf("%d",*--p);}
A.非法B.a[4]的地址C.5D.3
50.有以下程序main(){chara='a',b;printf("%c,",++A);printf("%c\n"。b=a++);}程序运行后的输出结果是
A.b,bB.b,cC.a,bD.a,c
51.下面程序main(){intx=100,a=10,b=20,ok1=5,ok2=0;if(a<b)if(b!=15)if(!ok1)x=1;elseif(ok2)x=10;x=1;printf("%d\n",x);}的输出是______。
A.-1B.0C.1D.不确定的值
52.设有定义:chars[10];inti=0;,以下不能将一行(不超过100个字符)带有空格的字符串正确读入的语句或语句组是()。
A.gets(s);
B.scanf("%s",s);
C.while((s[i++]=getchar())!='\n');s[i]='\0';
D.do{scanf("%c",&s[i]);}while(s[i++]!='\n');s[i]='\0';
53.现有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中连续的三个节点。structnode{chardata;structnode*next;}*p,*q,*r;
现要将q和r所指节点交换前后位置,同时要保持链表的连续,以下不能完成此操作的语句是()。
A.q->next=r->next;p->next=r;r->next=q;
B.p->next=r;q->next=r->next;r->next=q;
C.q->next=r->next;r->next=q;p->next=r;
D.r->next=q;p->next=r;q->next=r->next;
54.以下叙述中正确的是______。A.调用printf函数时,必须要有输出项
B.使用putchar函数时,必须在之前包含头文件stdio.h
C.在C语言中,整数可以以十二进制、八进制或十六进制的形式输出
D.调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码
55.若a、b、c、d都是血型变量且都已经正确赋初值,则下列不正确的赋值语句是()。
A.a+d;B.a++;C.a=b=c=d=100;D.a=(b=3)+(d=5);
56.下述关于C语言文件的操作的结论中,正确的是______。
A.对文件操作必须先关闭文件
B.对文件操作必须先打开文件
C.对文件操作顺序无要求
D.对文件操作前必须先测文件是否存在,然后再打开文件
57.以下程序的输出结果是______。#include<stdio.h>main(){inta=200;#definea100printf("%d",a);#undefaprintf("%d",a);}
A.200100B.100100C.100200D.200200
58.数据独立性是数据库技术的重要特点之一。所谓数据独立性是指()
A.数据与程序独立存放
B.不同的数据被存放在不同的文件中
C.不同的数据只能被对应的应用程序所使用
D.以上三种说法都不对
59.C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递是()。
A.地址传递B.值传递C.由实参传给形参,并由形参传回给实参D.由用户指定传递方式
60.下列叙述中正确的是()。
A.测试工作必须由程序编制者自己完成
B.测试用例和调试用例必须一致
C.一个程序经调试改正错误后,一般不必再进行测试
D.上述三种说法都不对
四、选择题(20题)61.下列选项中不合法的十六进制数是()。
A."0"xffB."0"X11C."0"x1gD.”0”Xabc
62.
63.
64.有以下程序
fun(int*a,intn)
{inti,j=0,p;
p=j;
for(i=j;i<n;i++)
if(a[i]<a[p])
____;
return(p);
}
在下画线处应填入的是
A.i=pB.a[p]=a[i]
C.p=jD.p=i
65.下列SQL语句中,用于修改表结构的命令式是A.A.Alter
B.Create
C.Update
D.Insert
66.
67.
68.下列有关数据库的描述,正确的是A.数据处理是将信息转化为数据的过程
B.数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变
C.关系中的每一列称为元组,一个元组就是一个字段
D.如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字
69.
70.在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序只看做是
A.路径的集合B.循环的集合C.目标的集合D.地址的集合
71.
A.*P=*q;B.P=q;C.*P=&nl;D.P=*q;
72.若有定义语句:“charS[3][10],(*k)[3],*p;”,则以下赋值语句正确的是()。
A.p=S;B.p=k;C.p=s[0];D.k=s;
73.下列叙述中正确的是()。
A.每个C语言程序文件中都必须要有一个main(.函数
B.在c语言程序中main(.函数的位置是固定的
C.c语言程序中所有函数之间都可以相互调用,与函数所在位置无关
D.在c语言程序的函数中不能定义另一个函数
74.有以下程序main(){intc=35;printf("%d\n",c&c);}程序运行后的输出结果是______。
A.0B.70C.35D.1
75.有如下程序
main()
{
chars[]="ABCD",*p;
for(p=s+1;p<s+4;p++)
printf("%s\n",p);
}
该程序的输出结果是
76.有两个关系R、S如下:
由关系R通过运算得到关系s,则所使用的运算为()。
A.选择B.投影C.插入D.连接
77.
78.用链表表示线性表的优点是()。
A.便于随机存取B.花费的存储空间较顺序存储少C.便于插入和删除操作D.数据元素的物理顺序与逻辑顺序相同
79.
80.在关系数据库中,用来表示实体间联系的是()。
A.网状结构B.树状结构C.属性D.二维表
五、程序改错题(1题)81.下列给定程序中,函数proc的功能是根据整型形参n,计算如下公式的值:
Y=1-1/(22)+1/(33)-1/(44)+…+(-1)(n+1)/(nn)
例如,n中的值为l0,则应输出0.817962。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdiOh>
doubleproc(intn)
{
doubley=1.0;
//****found****
intJ=1;.
inti;
for(i=2;i<=n;i++)
{
j=-l*j;//****found****
y+=1/(i*i);
}
return(y);
}
voidmain
{
intn=10:
system("CLS"):
printf("\nTheresultis%1f\n",proc(n));
}
六、程序设计题(1题)82.请编写函数proc(),其功能是:将所有大于1小于整数m的非素数存入XX所指数组中,非素数的个数通过k传回。例如,输入20,则应输出4689101214151618。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.C
2.C
3.DD。【解析】本框的PasswordChar属性用来指定文本框是显示用户输入的字符还是显示占位符,指定用做占位符的字符。
4.B
5.B解析:在对程序进行测试时会发现错误,这就要进行程序调试(排错)。程序调试活动由三部分组成:一是错误定位,根据错误的外部表现形式,确定程序中出错的位置,找出错误的内在原因;二是对程序进行修改,排除这个错误;三是进行回归测试,防止引进新的错误。所以程序调试的目的就是诊断和改正程序中的错误。软件调试不能改善软件的性能,也不能挖掘软件的潜能。
6.B在实际应用中,队列的顺序存储结构一般采用循环队列的形式。当循环队列为满或者为空时,队尾指针=队头指针。本题答案为B选项。
7.D
8.B[解析]在一个C语言程序中可以进行多种算法的实现,对算法的个数没有规定,所以B)错误。
9.C带参数的宏定义的替换过程是:用宏调用提供的实参字符串,直接置换宏定义命令行中相应的形参字符串,非形参字符串保持不变。题干中,“area1=A_RECT((x-1),(y+1));”宏替换后为“area1=(x-1)*(y+1);”,“area2=A_RECT(x+3,y-1);”宏替换后为“area2=x+3*y-1;”。所以area1=4*7=28,area2=5+3*6-1=22。故本题答案为C选项。
10.C本题考查嵌套分支语句。共输出4个值:当i=0时,i%2取余后还是0,则执行ease0语句,继续switch语句,此时i为0,数据的下标是从0开始的,a[03的值为2,则a[0]%2=0,继续执行case0,数组a[0]++,值变为3,执行break跳出第二重开关语句。出来后继续执行break,跳出第一重开关语句,继续循环;输出第一个值为3。i++后值为1,i%2=1%2取余后值为1,执行casel,将0赋给a[l],退出开关语句,输出第二个值为0。i++后值为2,i%2=2%2取余后值为0’a[2]的值为5,则a[2]%2=1,继续执行casel,数组a[2]--,值变为4,执行break跳出第二重开关语句。出来后继续执行break,跳出第一重开关语句,继续循环;输出第三个值为4。i++后值为3,i%2=3%2取余后值为1,执行casel,将0赋给a[3],退出开关语句,输出第四个值为0。结果为3040。
11.Bcase常量表达式只是起语句标号作用,并不进行条件判断。在执行switch语句时,根据switch的表达式,找到与之匹配的case语句,就从此case子句执行下去,不再进行判断,直到碰到break或函数结束为止。所以执行内层“switch(y)”时只执行了“a++;”,此时a的值为1,然后执行外层case2语句的“a++;b++;”,a值为2,b值为1。故本题答案为B选项。
12.B
13.C选择:是在数据表中给予一定的条件进行筛选数据。投影:是把表中的某几个属性的数据选择出来。连接:有自然连接、外连接,内连接等,连接主要用于多表之间的数据查询。并:与数学中的并是一样的。两张表进行并操作,要求它们的属性个数相同并且需要相容。
14.C
15.C
16.CE-R图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。
17.D
18.A解析:从软件开发的工程化观点来看,在使用程序设计语言编制程序以前,需要对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。详细设计的任务就是要决定各个模块的实现算法,并精确表达出这些算法。本题正确答案为选项A。
19.B解析:编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存不定的情况下,最好使用全局变量。
20.C
21.#include<alloc.h>structstudentptr[i]->num==Ofree(ptr[i])#include<alloc.h>\r\nstructstudent\r\nptr[i]->num==O\r\nfree(ptr[i])
22.bb解析:字符类型的数据在内存中以相应的ASCII码存放,另外,字符数据还可以作为整数参加运算。格式控制参数中的格式字符用以指定输出项的数据类型和输出格式,输出字符与其对应的输出项的类型要一致。本题中,“B”的ASCII码为98,字符类型m的ASCII为(98+32=130),所以最后输出为b。
23.变换型典型的数据流类型有两种:变换型和事务型。变换型是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统;在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。
24.程序调试程序调试解析:程序调试的任务是诊断和改正程序中的错误。程序调试与软件测试不同,软件测试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于调试工具找出软件错误的具体位置。软件测试贯穿整个软件生命期,而调试主要在开发阶段。
25.3*sizeof(double)或size(double)*3或24或3*8或8*33*sizeof(double)或size(double)*3或24或3*8或8*3解析:本题考核的知识点是malloc()函数.该函数的调用格式是“malloc(n)”,作用是申请n个字符的存储单元,并返回该存储区的首地址,实际调用的时候可在前面加上“(类型说明符*)”,以转换成需要的类型的地址.所以在此空格处应该填写3*sizeof(double)或size(double)*3或其他等价的表达式。
26.线性结构线性结构解析:数据的逻辑结构是指数据元素之间的逻辑关系,分为线性结构和非线性结构。常见的线性结构有线性表、栈和队列等,常见的非线性结构有树、二叉树等。
27.low>=highscow+1high-1low>=high\r\ns,cow+1,high-1解析:本题考查了用指针引用一维数组元素的方法。函数fun()通过递归调用的方式将字符串的首位和末位互换,第二位和倒数第二位互换……,从而实现了字符串倒置的功能。low和high是字符数组的下标。
28.rowa[row][colum]row\r\na[row][colum]解析:指针变量作为函数参数及二维数组的一个典型算法——求最大值及其下标。通过对题意的分析,在select()函数中,变量row的作用是用来记录最大元素的行下标,colum的作用是用来记录最大元素的列下标。程序中通过一个循环求得数组元素中最大值的行列下标,分别存放在变量row和colum中,根据题意,应该把行下标赋值给形参指针变量n指向的变量,把最大值a[row][colum]作为函数值返回。
29.软件工程学软件工程学
30.88解析:fabs函数功能是求x的绝对值,计算结果为double型。pow功能是计算x的y次方的值,计算结果同样为double型。所以本题表达式相当于2.0的3.0次方,结果为8.000000。
31.1212解析:x=(表达式1,表达式2,…)的形式,结果为最后一个表达式的值:x=(a=4,6*2)=2*6=12。
32.-4-4解析:if-else构造了一种二路分支选择,是一种最基本的选择结构,if(条件)S1(if分结构)elseS2(else分结构),它的工作过程是:先对条件表达式进行判断,若为真(成立,值为非零),就执行if分结构(S1);否则(不成立,值为0),就执行else分结构(S2)。本题中,n=O,可以判断(!n)为真,执行“x=x-1=2-1=1;m=1”,可以判断(m)为真,执行“x=x-2=1-2=-1;”进而可以判断(x)为真,执行x=x-3=-1-3=-4。所以,最后输出为-4。
33.2525解析:#NAME?
34.可行性研究可行性研究解析:软件生命周期一般包括可行性研究与需求分析、设计、实现、测试、交付使用及维护等,还可以将软件生命周期分为三个阶段:①软件定义阶段:可行性研究和需求分析;②软件开发阶段:设计、实现和测试;③软件运行维护阶段:交付使用和维护。
35.66解析:已知aa[3]={1,2,3},n=3,调用函数f,n>1成立,执行a[0]+f(&a[1],n-1);即1+f(&a[1],2),递归调用函数f,将a[1]的地址作为参数传给数组a,使数组a的首地址变为&a[1],数组中的元素只有2,3;2传给n,这时n=2,n>1仍然成立,继续调用a[0]+f(&a[1],n-1);即执行1+2+f(&a[1],1),因为上次递归调用函数f后数组中的元素为2,3,所以此次的a[1]为3,调用后的a[0]为3。所以最后结果为1+2+3=6。
36.99解析:本题要输出的结果是字符串'IBM\\n012\\1\\\\'的长度,'IBM'是3个字符,\'\\n\'是1个字符,'012'又是3个字符,最后的\'\\1\'和\'\\\\\'都是1个字符。所以最终字符串的长度应该是3+1+3+1+1=9。故本题应该填9。
37.k-1k,-1解析:颠倒一个字符串中的字符,就是首尾对应的元素两两交换。简单地可用两个游标变量i和j,i是前端元素的下标,j是后端元素的下标,交换以这两个变量值为下标的元素str[i]和str[j]。开始时,i的值为0,j的值为字符串末元素的下标(字符串长度减1)。每次交换后,i增1,j减1。继续交换的条件是str[i]位于str[j]的前面,即i<j。字符串末元素的下标是它的长度减1,所以在第二个空框处应填入-1。程序为了交换str[i]和str[j],使用了变量k,该变量应在程序的变量定义部分中一起定义,所以在第一个空框处应填入k。
38.1010解析:此题考查逗号表达式。逗号表达式的值是最后一个表达式的值,所以本题的返回值是a+4。前面已经给a赋值6,所以追回值a+4=6+4=10。
39.getchargetchar解析:题中要求根据输入的字符调用函数YesNo来判断输入的字符是y(Y)还是n(N),字符的输入可用字符输入函数getchar。函数YesNo用来判断一个字符是y(Y)还是n(N),主要用了一个switch多分支结构来比较输入字符与字符'y','Y'、,'n','N'是否相等来实现的。注意:用于字符串处理的函数。
40.sizeof(structnode)或4sizeof(structnode)或4解析:malloc(sizeof(struetnode))的作用是开辟一个长度为sizeof(struetnode)的内存区。(structnode*)的作用是使malloc返回的指针转换为指向structnode类型数据的指针。
41.C
42.B解析:选项B中for循环了5次,而每次循环的时候,都将p的值重新赋值为1后,再乘以当前数字i,最后的结果为5,显然不是5!的值,同样的分析可知选项A、选项C和选项D计算的都是5!。所以,4个选项中选项B符合题意。
43.C解析:strlen(s)返回s字符串中字符的个数,若s是个数组,则返回数组元素的个数。
44.D解析:'\\\\'是反斜线转义字符;'\\t'是水平跳格转义字符;'\\n'是换行转义字符;C语言中没有规定'088'是转义字符。
45.D解析:“x,y”是一个逗号表达式,逗号运算符的结合性为从左到右,逗号表达式一般形式为“表达式1,表达式2…,表达式n”,整个表达式的值为表达式n的值,故本题是输出y的值2003。所以,4个选项中选项D符合题意。
46.B解析:C语言规定标识符只能由字母、数字和下画线3种字符组成,且第一个字符必须为字母或下画线,排除选项C)和D);C语言中还规定标识符不能为C语言的关键字,而选项A)中void为关键字,故排除选项A)。
47.C解析:本题考查对数组的理解。C语言规定只能逐个引用数组元素,而不能一次引用整个数组。对于字符数组,可以将整个字符串一次输入或输出。所以,选项C)不正确。
48.D解析:本题主要考查for循环语句的嵌套。外层主循环执行了3次,嵌套的循环语句每轮执行2次,每次输出i+j的值,推出嵌套循环语句后换行。
49.C解析:本题中char*p=a+5;即相当于p=&a[5],而--p,是先要减1,则printf语句要输出的值就是a[4]。
50.A解析:程序中的第一个输出语句输出表达式++a的值,该++a是在使用a之前,先使a的值加1,即为a加1为字符b,此时a的值为b,所以第一个输出语句输出的值为b,第二个输出语句中输出的b的值,这时b的值为表达式a++的值,a++是在使用a之后(此时a的值为b,所以赋给b的值为B),使a的值加一因此第二个输出的值也为b.所以,4个选项中选项A符合题意。
51.A解析:第一个判断值为真,过渡到下一个判断,第二个判断为真,过度到第三个判断......如此循环,在打印输出语句的前一行,程序给变量x赋了值,为-1,所以,无论前期如伺变化,最后的x值依然为-1。
52.B解析:本题考查标准输入输出函数和循环语句。gets(s)函数的作用是将输入的字符读入字符串s,直到遇到回车。而scanf()数接收字符串时的结束标志为回车或者空格。因此选巧
53.D解析:D中的操作将会丢失r后面的链表结构,不能保持链表的连续。
54.B解析:本题考查了C语言的一些基本概念.printf()函数可以只有控制项而没有输出项,例如:printf('Hello!');,所以选项A不正确。C语言中不支持整数以十二进制输出,因此选项C不正确。getchar()函数从键盘读入一个字符,而不管该字符为数字还是字母,因此输入ASCII码的话,只能读到第1个数字字符,所以选项D不正确。故应该选择B,putchar是C语宫中的库函数,使用时必须包含sMio.h。
55.A解析:C语言规定,赋值号的右边可以是一个赋值表达式,因此选项C)、选项D)正确;在选项B)中,a++是一个自加1的表达式,a被重新赋值,因此它是一个合法的赋值表达式;在选项A)中,a+d是一个算术表达式,虽然最后有一个分号,但这个表达式中没有赋值操作,因此它不是一条赋值语句。
56.B解析:在C中对文件操作必须先打开文件,待文件操作完毕后要关闭文件。对文件以读的方式进行打开操作时,同时会执行文件的检查文件是否存在,不存在将会返回空的文件指针,如果对文件以写的方式打开时,文件不存在,将会自动创建文件,因此在C中打开文件前不必对其检查文件是否存在,故答案为B。
57.C解析:#define宏名的有效范围为定义命令之后到本源文件结束,可以在程序中使用#undef命令终止宏定义的作用域。本题由于#undef的作用,使a的作用范围在#definea100到#undefa之间,故答案为C。
58.D解析:在数据库系统中,通过系统提供的映象功能,使数据具有两方面的独立性:一是物理独立性。即由于数据的存储结构与逻辑结构之间由系统提供映象,使得当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改。二是逻辑独立性。即由于数据的局部逻辑结构(它是总体逻辑结构的一个子集,由具体的应用程序所确定,并且根据具体的需要可以作一定的修改)与总体逻辑结构之间也由系统提供映象,使得当总体逻辑结构改变时,其局部逻辑结构可以不变,从而根据局部逻辑结构编写的应用程序也可以不必修改。由此可知,选项A.B与C中的说法都是错误的。
59.B解析:本题考查函数调用时的参数传递。在函数调用时,实参和其所对应的形参分别占用不同的存储单元,彼此之间只是实参将值传递给形参.
60.D解析:测试不是为了证明程序是正确的,而是在设想程序有错误的前提下进行的,其目的是设法暴露程序中的错误和缺陷,一般应当避免由开发者测试自己的程序,因此,选项A错误;测试是为了发现程序错误,不能证明程序的正确性,调试主要是推断错误的原因,从而进一步改正错误,调试用例与测试用例可以一致,也可以不一致,选项B错误;测试发现错误后,可进行调试并改正错误:经过调试后的程序还需进行回归测试,以检查调试的效果,同时也可防止在调试过程中引进新的错误,选项C错误。
61.C十六进制是以“0x、0X”开头的字符串,字符串中只能含有0~9这l0个数字和a、b、C、d、e、f这6个字母。
62.C
63.D
64.D本题考查对程序作用的理解。该函数具有两个形参a和n,a为数组名,n为数组中元素的个数。函数的返回值为p,这里p为数组的下标。初始时,i、j、p都为0,for循环的初始表达式为i=j,条件表达式为i<n,也就是当i=n时,for循环结束。该for循环表达的含义为:初始时,令a[i]=a[p]=a[0],随后i可从0开始递增,直到n-1,对于每一个a[i],都与a[p]进行比较,空白处需要填入语句的部分是if语句满足条件后要进行的操作,表示如果a[i]<a[p],应当进行怎样的处理。选项A是令i=p,此时整个程序中p的值没有发生改变,p=0,即如果a[i]<a[p],则令i=0,回到了初始化的状态,这样在for语句中造成了死循环,该选项错误。选项B是令a[p]=a[i],整个程序在运行过程中,p的值依然没有变化,p=0,即如果a[i]<a[0],则令a[0]=a[i],整个程序运行结束后,a[0]的数值应该为整个数组的最小值,用return语句返回下标0没有意义。选项C是令p=j,程序在运行过程中,j的值和p的值都没有发生改变,整个程序没有意义。选项D是p=i,该语句的含义是如果a[i]<a[p],则令p=i,程序结束后则有a[p]为数组中的最小值,将最小值的下标返回。
65.A本题主要考查SQL中一些基本的命令。SQL常用的语句包括:Select、Insert、Update、Delete、Create、Alter和Drop等。
在SQL语言中使用率最高的是Select,这个命令的作用是从表中查找出满足条件的记录。
Insert命令的作用是对数据表进行插入操作。
Update命令的作用是对数据表进行更新操作。
Delete命令的作用是对数据表中的数据进行删除操作。
Create命令的作用是创建数据表。
Alter命令的作用是修改表的结构。
Drop命令的作用是用来删除表,它与Delete的区别是进行Drop操作后,数据表不存在了,而进行Delete操作后,数据表还在,只是数据被删除了。
66.C
67.B
68.D数据处理是指将数据转换成信息的过程,故选项A叙述错误。数据的物理独立性是指数据的物理结构的改变,不会影响数据库的逻辑结构,故选项B叙述错误。关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性,对应存储文件中的字段,故选项C叙述错误。所以本题选D。
69.A
70.A本题考查软件的测试方法。
测试任何产品都有两种方法:如果
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 单位管理制度集合大全人员管理篇十篇
- 单位管理制度集粹选集人事管理篇十篇
- 单位管理制度汇编大全人员管理十篇
- 《语文作业要求》课件
- 单位管理制度分享合集职工管理十篇
- 单位管理制度分享大合集职工管理
- 单位管理制度范文大合集职员管理十篇
- 单位管理制度范例汇编员工管理十篇
- 单位管理制度呈现汇编【人力资源管理】十篇
- 单位管理制度呈现大全员工管理十篇
- 矿大毕业设计-固定式带式输送机设计
- 《胆囊结石的护理》PPT
- 安徽云帆药业有限公司原料药生产项目环境影响报告
- 药品质量受权人管理规程
- 校本课程之《红楼梦诗词曲赏析》教案
- 热动复习题材料热力学与动力学
- 马工程-公共财政概论-课程教案
- GB/T 38058-2019民用多旋翼无人机系统试验方法
- GB/T 30902-2014无机化工产品杂质元素的测定电感耦合等离子体发射光谱法(ICP-OES)
- GB/T 22638.2-2016铝箔试验方法第2部分:针孔的检测
- GB/T 13275-1991一般用途离心通风机技术条件
评论
0/150
提交评论