版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年河南省开封市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.下列程序的输出结果是()。main(){chara[7]="a0\0a0\0";inti,j;i=sizeof(a);j=strlen(a);printf("%d%d\n",i,j);}
A.22B.76C.72D.62
2.标准库函数fgets(s,n,file)的功能是()。
A.从文件file中读取长度为n的字符串存入字符数s由
B.从文件file中读取长度不超过n-1个字符的字符放到字符数组S中
C.从文件file中读到n个字符串存入字符数组s中
D.从文件file中读取长度为n-1个字符的字符串存字符数组S中
3.
4.若有定义“inta[2][3],*p[3];”,则以下语句中正确的是()。
A.p=a;B.p[0]=a;C.p[0]=&a[1][2];D.p[1]=&a;
5.十进制数124转换成二进制数是()
A.111l010B.1111100C.1011111D.1111011
6.有以下程序:#include<stdio.h>main(){inti,t[][3]={9,8,7,6,5,4,3,2,1};for(i=0;i<3;i++)printf(“%d”,t[2-i][i]);}程序的运行结果是()。
A.357B.753C.369D.751
7.以下程序的输出结果是
#include<stdio.h>
voidprt(int*x,int*y,int*z)
{printf("%d,%d,%d\n",++*x,++*y,*(z++));}
main()
{inta=10,b=40,c=20;
prt(&a,&b,&c);prt(&a,&b,&c);}
A.11,42,3112,22,41
B.11,41,2012,42,20
C.11,21,4011,21,21
D.11,41,2112,42,22
8.下列描述中正确的是______。
A.软件工程只是解决软件项目的管理问题
B.软件工程主要解决软件新产品的生产率问题
C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则
D.软件工程只是解决软件开发中的技术问题
9.在下列语句中,其含义为“q是一个函数指针,该指针指向整型数据”的定义语句是()。
A.int**q;B.int(*q);C.int*q;D.int*q;
10.
11.若有语句“void*P=malloc(80);”,则以下叙述错误的是()。
A.可以通过指针P直接访问用malloc开辟的这块内存
B.p所指内存可以通过强制类型转换当作具有20个int型元素的一维数组来使用
C.p所指内存可以通过强制类型转换当作具有10个double型元素的一维数组来使用
D.P所指内存可以通过强制类型转换当作具有80个char型元素的一维数组来使用
12.以下符合C语言语法的赋值表达式是()。
A.d=9+e+f=d+9B.d=9+e,f=d+9C.d=9十e,e++,d十9D.d=9十e++=d十7
13.下列选项不符合良好程序设计风格的是()。
A.源程序要文档化B.数据说明的次序要规范化C.避免滥用goto语句D.模块设计原则是高耦合、高内聚
14.有下列程序:
程序执行后的输出结果是()。
A.6,5,4,4,5,6,
B.1,2,3,4,5,6,
C.4,5,6,4,5,6,
D.1,2,3,6,5,4,
15.有以下程序:#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
16.有以下程序(提示:程序中fseek(fp-2L*sizeof(int),SEEK_END);语句的作用是使位置指针从文件末尾向前移2*sizeof(ing)字节)#include<stdio.h>main(){FILE*fp;inti,a[4]={1,2,3,4},b;fp=fopen("data.dat","wb");for(i=0;i<4;i++)fwrite(&a[i],sizeof(int),1,fp);fclose(fp);fp=fopen("data.dat","rb");fseek(fp,-2L*sizeof(int),SEEK_END);fread(&b,sizeof(int),1,fp);/*从文件中读取sizeof(int)字节的数据到变量b中*/fclose(fp);printf("%d\n",B);}执行后输出结果是
A.2B.1C.4D.3
17.
18.最坏情况下时间复杂度不是n(n-1)/2的排序算法是()
A.快速排序B.冒泡排序C.直接插入排序D.堆排序
19.有以下程序:程序运行后的输出结果是()。A.6B.10C.8D.4
20.
二、2.填空题(20题)21.数据结构分为逻辑结构与存储结构,线性链表属于【】。
22.以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:
y1=(x+8)2-2(x+8)+6
y2=sin2(x)-2sin(x)+6
请填空。
#include"math.h"
doublefun(doublex){return(x*x-2*x+6);}
main()
{doublex,y1,y2;
printf("Enterx:");scanf("%lf",&x);
y1=fun(【】);
y2=fun(【】);
printf("y1=%lf,y2=%lf\n",y1,y2);
}
23.设有以下定义和语句,则*(*(p+2)+1)的值为【】。
inta[3][2]={10,20,30,40,50,60},(*p)[2];
p=a;
24.以下函数的功能是计算s=1+1/2!+1/3!+…+1/n!,请填空。
doublefun(intn)
{doubles=0.0,fac=1.0;
inti,k=1;
for(i=1;i<=n;i++);
{【】;
fac=fac/k
s=s+fac;
}
}
25.软件结构是以【】为基础而组成的一种控制层次结构。
26.以下fun函数的功能是:累加数组元素中的值,n为数组中元素的个数,累加的和值放入x所指的存储单元中。请填空。
fun(intb[],intn,int*x)
{intk,r=0;
for(k=0,k<n;k++)r=【】;
【】=r;
}
27.请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。
【】(double,double);
main()
{doublex,y;
seanf("%1f%1f",&x,&y);
pfintf("%1f\n",max(x,y));
}
doublemax(doublea,doubleb)
{return(a>b?a:b);}
28.下面的程序可对指定字符串进行从大到小排序,请将程序填完整。(注:程序采用了冒泡排序算法)
#include<stdio.h>
#include<string.h>
main()
{char*str="ABCDabcd",temp;
intn,i;
n=strlen(str);
while(n->1)
for(i=0;i<n;i++)
if(str[i]<str[i+1])
{temp=【】;
str[i]=str[i+1];
【】=temp;
}
printf(【】);
}
29.语句:x++;、++x;、x=x+1;、x=1+x;,执行后都使变量x中的值增1,请写出一条同一功能的赋值语句(不得与列举的相同)【】。
30.有如下图所示的双链表结构,请根据图示完成结构体的定义:
structaa
{intdata;
【】}node;
31.自盒测试方法重视【】的度量。
32.设有定义“struct{inta;floatb;charc;}abc,*p_abc=&abc;”,则对结构体成员a的引用方法可以是abc.a和p_abc【】a。
33.下面程序的输出结果是【】。
#include<stdio.h>
main()
{staticchara[]="language",b[]="program";
char*ptrl=a,*ptr2=b;
intk;
for(k=0;k<7;k++)
if(*(ptrl+k)==*(ptr2+k))
printf("%c",*(ptrl+k));}
34.用复合的赋值运算符将变量x中的值增大2的赋值表达式是【】。
35.若x,y和z均是int型变量,则执行下面表达式后的x值为【】。
x=(y=4)+(z=2)
36.实现程序可将磁盘中的一个文件复制到另一个文件中,两个文件的文件名在可执行命令的命令行中(相当于copy命令),假定文件在当前目录下。请补全程序。
#include<stdio.h>
voidmain(intargc,char*argv[])
{FILE*f1,*f2;
if(argc<【】)
{printf("parametererror!\n");exit(0);}
f1=fopen(argv[1],"r");
f2=fopen(argv[2],"w");
while(【】)fputc(fgetc(f1),f2);
fclose(f1);
fclose(f2);
}
37.数据库系统其内部分为三级模式,即概念模式、内模式和外模式。其中,______是用户的数据视图,也就是用户所见到的数据模式。
38.以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。
main()
{intx[10],a[9],I;
for(I=0;I<10;I++)scanf("%d",&x[I]);
for(【】;I<10;I++)
a[I-1]=x[I]+【】;.
for(I=0;I<9;I++)printf("%d",a[I]);
printf("");
}
39.以下程序的输出结果是【】。
#include<stdio.h>
main()
{intn=12345,d;
while(n!=0){d=n%10;printf("%d",D);n/=10;}
}
40.下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其他元素不变。请填空。
#include<stdio.h>
#include<string.h>
main()
{chara[]="clanguage",t;
inti,j,k;
k=strlen(a);
for(i=0;i<=k-2;i+=2)
for(j=i+2;j<=k;j+=2;)
if(【】)
{t=a[i];a[i]=a[j];a[j]=t;}
puts(a);
printf("\n");
}
三、1.选择题(20题)41.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是()
A.控制流B.加工C.数据存储D.源和潭
42.不是面向对象程序设计的可维护性的优点的是()
A.用面向对象的方法开发的软件稳定性比较好B.易于移植C.易于和调试D.用面向对象的方法开发的软件比较容易理解
43.有以下程序#inclUde<stdio.h>voidfun(int*s,intn1,intn2){inti,j,t;i=n1;j=n2;while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}}main(){inta[10]={1,2,3,4,5,6,7,8,9,0},k;fun(a,0,3);fun(a,4
A.0987654321B.4321098765C.5678901234D.0987651234
44.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是()。
A.模拟现实世界中不同事物之间的联系
B.强调模拟现实世界中的算法而不强调概念
C.使用现实世界的概念抽象地思考问题从而自然地解决问题
D.鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考
45.设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为______。A.EOFB.非0值C.0D.NULL
46.为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为______。
A.PAD图B.N-S图C.结构图D.数据流图
47.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和()。
A.可重用性差B.安全性差C.非持久性D.冗余性
48.有以下程序:#include<stdioh>intfun(intx,inty){if(x!=y)return(y);elsereturn((x+y)/2);}main(){inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,C)));}程序运行后的输出结果是()。
A.3B.6C.8D.12
49.软件危机产生的原因从根本上说是()
A.软件需求的增长超过软件生产率的提高
B.软件需求的增长小于软件生产率的提高
C.软件需求的减少大于软件生产率的减少
D.软件需求的减少小于软件生产率的减少
50.以下不属于对象的基本特点的是()
A.分类性B.多态性C.继承性D.封装性
51.下面程序的输出结果是______。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
52.数据库设计的根本目标是要解决
A.数据共享问题B.数据安全问题C.大量数据存储问题D.倘化数据维护
53.下列说法中不正确的是()。
A.指针是一个变量B.指针中存放的是数值C.指针可以进行加、减等算术运算D.指针变量占用存储空间
54.以下叙述中错误的是A.gets函数用于从终端读入字符串
B.getchar函数用于从磁盘文件读入字符
C.fputs函数用于把字符串输出到文件
D.fwrite函数用于以二进制形式输出数据到文件
55.下列有关数据库的描述,正确的是______。
A.数据库是一个DBF文件B.数据库是一个关系C.数据库是一个结构化的数据集合D.数据库是一组文件
56.下列叙述中正确的是()。
A.软件就是程序清单B.软件就是存放在计算机中的文件C.软件应包括程序清单以及运行结果D.软件包括程序、数据和文档
57.以下程序段中,能够通过调用函数fun(),使main()函数中的指针变量p指向一个合法的整型单元的是()。
A.main(){int*p;fun(p);…}intfun(int*p){ints;p=&s;}
B.main{int*pfun(&p);…}ihtfun(int**p){ints;*p=&s;}
C.main(){int*p;fun(&p);}intfun(int**p){*p=(int*)malloc(2);}
D.main(){int*p;fun(p);}intfun(int*p){p=(int*)malloc(sizeo(int));}
58.有以下程序
#include<stdio.h>
intf(intx)
{inty;
if(x==0||x==1)return(3);
y=x*x-f(x-2);
returny;
}
main()
{intz;
z=f(3);printf("%d\n",z);
}
程序的运行结果是
A.0B.9C.6D.8
59.假定当前盘符下有两个如下文本文件:文件名a1.txta2.txt内容123#321#则下面程序段执行后的结果为#include"stdio.h"voidfc(FILE*p){charc;while((c=fgetc(p))!='#')putchar(c);}main(){FILE*fp;fp=fopen("a1.txt","r");fc(fp);fclose(fp);fp=fopen("a2.txt","r");fc(fp);fclose(fp);putchar('\n');}
A.123321B.123C.321D.以上答案都不正确
60.下面说明不正确的是
A.chara[10]="china";
B.chara[10],*p=a;p="china"
C.char*a;a="china";
D.chara[10],*P;P=a="china"
四、选择题(20题)61.
运行下列程序时,若输入的数据为“1,2,3”,则输出结果是()。
main
{floata,b,c,t;
scanf("%f,%f,%f",&a,&b,&c);
if(a<b)
{t=a;a=b.b=t;)
if(a<c)
{t=a;a=c;c=t;)
it(b<c)
{t=b;b=C;c—=;)
printf("%f\n%f\n%f\n",a,b,c);
}
A.1.002.003.00
B.1.003.002.00
C.132
D.3.000002.000001.00000
62.(69)单个用户使用的数据视图的描述称为()
A.外模式
B.概念模式
C.内模式
D.存储模式
63.具有3个结点的二叉树有
A.2种形态B.4种形态C.7种形态D.5种形态
64.设有宏定义:
#defineIsDIV(k,n)((k%1"1==1)?1:O)且变量m已正确定义并赋值,则宏调用:
IsDIV(m,5)&&;IsDIV(m,7)为真时所要表达的是()。
A.判断m是否能被5和7整除
B.判断m被5和7整除是否都余l
C.判断m被5或者7整除是否余1
D.判断m是否能被5或者7整除
65.设有定义
66.
67.设有定义:
则以下赋值语句中错误的是()。
A.data2=(2,6);
B.data2=datal;
C.data;real=datal.real;
D.data2.real=datal.unreal;
68.
69.若x是int型变量,且有下面的程序片段:
上面程序片段的输出结果是()。
A.
B.
C.
D.
70.设有表示学生选课的三张表,学生s(学号,姓名,性别,年龄,身份证号),课程c(课号,课名),选课SC(学号,课号,成绩),则表sc的关键字(键或码)为()。
A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩
71.
下列程序执行后的输出结果是()。
main
{inta[3][3],*p,i};
p=&a[0][0];
for(i=p;i<9;i++)p[i]=i+1;
printf("%d\n",a[1][2]);
}
A.3B.6C.9D.随机数
72.对于一个正常运行的C程序,以下叙述中正确的是()。
A.程序的执行总是从main函数开始,在程序的最后一个函数中结束
B.程序的执行总是从程序的第一个函数开始,在main函数结束.
C.程序的执行总是从main函数开始、
D.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束
73.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30
74.以下程序的运行结果是
#defineMIN(x,y)(x)<(y)?(x):(y)
main()
{
inti=10,j=15,k;
k=10*MIN(i,j);
printf("%d\n",k);
}
A.10B.15
C.100D.150
75.设有如下关系表:
则下列操作中,正确的是()。
A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S
76.在C程序中有如下语句:char*func(intx,inty);它是()。
A.对函数func的定义。B.对函数func的调用。C.对函数func的原型说明。D.不合法的
77.以下能正确定义赋初值的语句是()。
A.intnl=n2=10:
B.Chare=32;
C.floatf=f+1.1;
D.doublex=12.3E2.5;
78.定义无符号整数类为UInt,下面可以作为类UInt实例化值的是()。
A.-369B.369C.0.369D.整数集合{1,2,3,4,5}
79.
80.软件生命周期中的活动不包括()
A.软件维护B.市场调研C.软件测试D.需求分析
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:判断一个整数m是否是素数,若是返回1,否则返回0。在main()函数中,若proc()返回1,则输出″YES″;若proc()返回0,则输出″NO″!
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main)函数,不得增行或删行,也不得,t更改程序的结构。
试题程序:
六、程序设计题(1题)82.请编写函数proc(),它的功能是计算:s=(1n(1)4-1n(2)+In(3)4-…+1n(m))0.5在C语言中可调用log(n)函数求1n(n)。例如,若n1的值为30,则proc()函数值为8.640500。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.C解析:函数slzeof(a)的功能是求出字符串a中的字符占用存储空间的大小,由于字符数组a有长度为7,所以i=7;函数strlen(a)的功能是:求出字符串a的长度。而每个字符串都以'\\0'为字符串的结束标记,所以j的值等于2。
2.B本题考查fgets函数的使用调用形式:fgets(s,n,fp)。fgets函数参数说明:“S”可以是一个字符数组名,也可以是指向字符串的指针;“n”为要读取的最多的字符个数;“fp”是指向该文件型指针。fgets函数的功能是:从fp所指向的文件中读取长度不超过n-1个字符的字符串,并将该字符串放到字符数组S中,读入字符串后会自动在字符串末尾加入"\0"结束符,表示字符串结束。
3.D
4.CA选项错误,因为p是指向一个指针数组,而数组名相当于常量,不能重新赋值。B选项错误,因为p[0]是一个int指针,也就是int*,而a是一个指向指针的指针int**。C选项正确,因为p[0]是int*,a[1][2]是int,&a[1][2]是int*,类型吻合。D选项错误,因为a作为数组名,不能取地址,即使能取,P[1]是int*,&a是int***,类型不吻合。故本题答案为C选项。
5.B
6.A二维数组t[][3]即t[3][3]={{9,8,7},{6,5,4},{3,2,1}}。执行循环for语句,当i=0时,t[2][0]=3;当i=1时,t[l][1]=5;当i=2时,t[0][2]=7;当i=3时,循环结束,即t[2][0]=3、t[1][1]=5、t[0][2]=7。故本题答案为A选项。
7.B解析:考查指针作为参数的函数调用。尽管C语言以传值方式进行函数调用,但也可以通过传递指针的值(变量的地址)来达到修改实参变量值的目的,这是此题主要说明的问题。另外,应注意表达式\ue008*(z++)\ue009的值是*z,其后的z++在程序中无实际作用。函数调用时,由于x,y和z分指向a,b和c,因此,*x,*y和*z就是a,b和c。第一次调用函数时,*x=a=10,*y=b=40,*z=c=20输出结果为11,41,20,至此,已经可以肯定选项B)是正确的。在第一次输出后,a=11,b=41,c=20,第二次输出为:12,42,20。
8.C解析:软件工程是解决软件项目的管理、软件开发过程中的技术、软件产品的生产率等问题,它的主要思想是强调在软件开发过程中需要应用工程化原则。
9.B本题考查指针函数。其定义的基本格式为:类型说明符(*函数名)。“类型说明符”表示返回的指针值指向的数据类型。
10.C
11.A题干中使用malloc函数分配了80个字节的内存单元,void指针p指向该内存单元。在C语言中,void*不能直接使用,必须利用强制类型转换将其转成所需的类型才能使用,选项A错误。int类型的元素占4个字节,所以可以将p指向的内存强制类型转换成具有20个int类型的一维数组来使用,同理,也可以强制类型转换成10个double类型的一维数组来使用,或强制类型转换成80个char类型的一维数组来使用,选项B、C、D正确。故本题答案为A选项。
12.B
13.D在程序设计中,对于软件设计中的模块设计要保证高内聚和低耦合,源程序要有文档说明,同时对程序中数据的说明要规范化。而goto语句破坏程序的结构,要尽量避免使用。所以选项D不正确。
14.D程序定义数组a,使用6个元素对其初始化,接着以写二进制方式打开文件d.dat。调用fwrite函数将a的6个元素逆序(654321)写入文件,接着调用rewind函数,将文件指针移动到文件开始位置。调用fread函数读入3个整数,逐个存放到a开始下标为3的3个位置,即a[3]=6,a[4]=5,a[5]=4,关闭文件。再次调用for循环输出a,结果为:1,2,3,6,5,4,。本题答案为D选项。
15.Bcase常量表达式只是起语句标号作用,并不进行条件判断。在执行switch语句时,根据switch的表达式,找到与之匹配的case语句,就从此case子句执行下去,不再进行判断,直到碰到break或函数结束为止。所以执行内层“switch(y)”时只执行了“a++;”,此时a的值为1,然后执行外层case2语句的“a++;b++;”,a值为2,b值为1。故本题答案为B选项。
16.D解析:函数fopen(constchar*filename,constchar*mode)的功能是以mode指定的模式打开filename指定的磁盘文件:fclose(FILE*fp)的功能是关闭文件指针fp指向的文件;函数fscanf(FILE*fp,constchat\'*format1,address,--])的功能是根据format中的格式从中指向的文件中读取数据,并存入到相应的address指向的变量中.函数fprintf(FILE*fp,constchar*format[,argument--])的功能是把argument列表中的表达式值写到fp所指向的文件中;函数fwfite(void*ptr,intsize,intn,FILE*fp)的功能是把ptr指向的缓冲区中的size×n个字节写到文件指针fp指向的文件中。本题中首先定义了一个文件指针fp,然后通过函数fopen以可'wb'的方式打开文件'data.daft',直接通过一个for循环,每循环一次调用函数fwrite将数组中的元素a[i]的值写进fp所指的文件中,该循环共循环4次,循环完后fp所指文件的内容为123,然后通过fclose函数关闭fp所指文件.接着通过函数fopen以'rb”的方式打开文件'data.dat',通过fseek函数让指针中从文件末尾向前移动2个int型大小字节的,然后通过函数fread从中所指的文件中读取一个int型大小的数据到变量b中,故此时b的值为3,因此最后输出的,b的值为3,所以,4个选项中选项D符合题意。
17.A
18.D
19.C题干中,整型指针变量Pk指向k,Pm指向m,所以右边表达式“*pk*(*pm)”的值为“k*m”,即2*4=8;左边表达式“*(p=&n)”先将变量n的地址赋给p,然后对p解引用,引用到n,将n的值赋为8。本题答案为C选项。
20.A
21.存储结构
22.x+8sin(x)x+8,sin(x)解析:考查考生对函数调用相关知识的了解。用x+8代替函数fun(doublex)中形式参数x;用sin(x)代替函数fun(doublex)中形式参数x。
23.6060解析:程序中定义a是一个3行2列的二维数组,p是指向两个元素的一维数组指针,并让p指向二维数组a的首行。则代码*(*(p+2)+1)中的p+2指向二维数组a的第三行a[2],*(p+2)指向a[2[]0],*(p+2)+1指向a[2][1],*(*(p+2)+1)是引用a[2][1],其值是60。
24.k=k*ik=k*i解析:本题中通过for循环求s表达式中每一项的和,表达式“fac=fac/k;”求的是每一项的值,所以k的值应为n!,在求n!的时候,可以用上次循环阶乘的值乘i,就可以直接得此次n!,故本题填k=k*i。
25.模块模块
26.r+b[k]*x
27.doublemax或externdoublemaxdoublemax或externdoublemax解析:函数声明是对所用到的函数的特征进行必要的声明,编译系统以函数声明中给出的信息为依据,对调用表达式进行检测,以保证调用表达式与函数之间的参数正确传递。函数声明的一般格式为:类型标识符函数名(类型标识符形参,…);这些信息就是函数定义中的第一行的内容。本题中main()函数需要调用max()函数,在main()之前就需要声明函数max(),并且可以用extem说明符使变量的作用域扩充到需要用到它的函数,所以,填写doublemax(或externdoublemax)。
28.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本题要求将字符串str中的字符用冒泡排序算法从大到小排列,其实现过程是将相邻两个字词进行比较,如果当前字符小于下一个字符,则通过中间变量temp将字符两两交换,所以第一空应填:str[i],第二空应填:str[i+1]。最终打印输出得到的字符串str,所以第三空应填:'%s',str。
29.x+=1;
30.structaa*lhead*rchild;structaa*lhead,*rchild;解析:结构体对链表的定义。
31.测试覆盖率测试覆盖率解析:白盒测试又称为结构测试。白盒测试作为对结构的测试,要求对被测程序的各种结构特性进行测试,这种情况被称为覆盖,故白盒测试又称为“基于覆盖的测试”。白盒测试方法重视测试覆盖率的度量,力求提高覆盖率,从而找出被测程序的错误。
32.->->解析:若结构体变量abc有成员a,并有指针p_abc指向结构变量abc,则引用变量abc成员a的标记形式有abc.a和p_abc->a。
33.gaga解析:用字符指针处理字符串,首先要使指针指向这个字符串,即题中的ptr1=a和ptr2=b。然后就是通过指针的移动可以引用到字符串中的每一个字符。题中的*(ptr1+k)是使指针ptr1向后移动k个位置,然后取出指向的字符。注意:用字符数组作为字符串和用指针指向的一个字符串之间的区别。
34.x+=2
35.6
36.3!feof(f1)3\r\n!feof(f1)解析:要实现文件复制,需要指定源文件及目的文件,因此在命令行下执行程序时至少要指定两个参数,加上程序名本身,故argc的值至少为3,因此第一空应填3。while循环中语句fputc(fgetc(f1),f2);的目的是将f1中的字符依次读出并写入到f2对应的文件中去,直至文件f1结束为止,因此第二空为!feof(f1)。
37.外模式外模式解析:数据库系统的三级模式分别是内模式、概念模式和外模式。其中,物理模式给出了数据库的物理存储结构和存取方法;概念模式是数据库系统中全局数据逻辑结构的描述;外模式是用户的数据视图,也就是用户所见到的数据模式。
38.I=1x[I-1]I=1,x[I-1]解析:对于10个数,相临的两个数相加取和,总共要进行9次加法运算,所以空14处应填入I=1。相临的两个数相加取和,放在数组a中,x[0]与x[1]的和存放在a[0]中,所以空15处应填入x[I-1]。
39.5432154321解析:在while循环中,d=n%10;语句每次求得的结果是n个位上的数值,例如12345÷10所得的余数就是个位上的5。接下来输出得到的个位数字d,然后执行n/=10;语句,该语句等价于n=n/10;。在C语言中,如果/运算的两个运算分量都是整数,那所得的结果也截尾取整,所以12345/10=1234,即n-=n/10;语句的作用是让n截去个位上的数字。由此可知,随着while循环的继续,n依次为12345、1234、123、12、1,而每次输出n的个位数字将为5、4、3、2、1。故本题应填543210。
40.a[i]>a[j]a[i]>a[j]解析:本题中的嵌套的循环结构用在了数组元素的排序上。本题需要注意的一点是:由于题目只要求将下标值为偶数的元素从小到大排序,所以内外层for循环的条件变量变更条件都是+=2。最后通过条件a[i]>a[j]对元素大小进行判断并交换。
41.A解析:数据流图包括4个方面,即加工(转换)(输入数据经加工变换产生输出)、数据流(沿箭头方向传送数据的通道,一般在旁边标注数据流名)、存储文件(数据源)(表示处理过程中存放各种数据的文件)、源和潭(表示系统和环境的接口,属系统之外的实体)。不包括选项中的控制流。
42.B
43.C解析:函数fun(int*s,intn1,intn2)的功能是对数组s中的元素进行首尾互相调换。所以在主函数中,当fun(a,0,3)执行完后,数组a[12]={4,3,2,1,5,6,7,8,9,0};再执行fun(a,4,9),数组a[12]={4,3,2,1,0,9,8,7,6,5};再执行fun(a,0,9)后,数组a[12]={5,6,7,8,9,0,1,2,3,4}。
44.C解析:面向对象的设计方法与传统的面向过程的方法有本质不同。它的基本原理是,使用现实世界的概念抽象地思考问题从而自然地解决问题。它强调模拟现实世界中的概念而不强调算法,它鼓励开发者在软件开发的绝大部分中都用应用领域的概念去思考。
45.B(27)B)解析:函数feof的功能是:测试fp所指的文件的位置是否已达到文件尾,如果达到文件尾,则函数返回非0值,否则返回0,表示文件尚未结束。
46.B解析:常见的过程设计工具有:程序流程图、N-S图、PAD图和HIPO图。其
中,为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流
程图,通常也把这种图称为N-S图。
注意:其他常用算法描述工具的概念。
47.D解析:文件系统所管理的数据文件基本上是分散的、相互独立的,因此相对于数据库系统,以此为基础的数据处理存在3个缺点,数据冗余大、数据的不一致性、程序与数据的相互依赖(简称为数据依赖)。注意:文件系统和数据库系统各自的特点,人工管理阶段及数据库系统三代的特点。
48.B
49.B
50.C解析:对象的基本特点包括;标识惟一性、分类性、多态性、封装性和独立性等。继承性不属于对象的基本特点。
51.C
52.A解析:数据库技术的根本目标就是要解决数据的共享问题,选项A正确。
53.B解析:指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是—个存储单元,而不是一个字节。
54.B其中B选项的getchar函数用于从终端读入字符。故本题答案为B选项。
55.C解析:数据库(Database,简称DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享。数据库中的数据具有“集成”、“共事”之特点。
56.D解析:计算机软件是计算机系统中与硬件相互依存的另一部分,包括程序、数据及相关文档的完整集合。用一个等式表示,则为:软件=程序+文档+数据。选项A、选项B和选项C错误,正确答案是D。
57.C解析:在选项A中,main()函数中定义了一个指针变量p,调用fun()函数时把p传给形参p,在函数中让p指向局部变量s,由于函数调用返回后,局部变量s将被释放,因此无法实现让实参p指向一个整型单元,故选项A错误。选项B中实现的也是让实参p,指向一个在函数fun()中定义的局部变量s,因此也是错误的;选项C在函数fun()中分配了两个字节的内存单元并把首地址赋值给形参p指向的变量,即main()函数的指针变量p中,由于整型变量占两个字节,因此,选项C是正确的;选项D在主函数中定义了一个指针地址变量p,并把指针变量的值传给形参变量p,在fun()函数中分配了一个整型单元并把首地址赋值给行参指针变量p,由于C语言中变量作为参数是传值的,所以并没有改变对应实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机械手课程设计
- 机械工程系课程设计
- 机械安全工程课程设计
- 机械发酵罐课程设计
- 九年级化学上册 第四单元 自然界的水 4.1 爱护水资源教案1 新人教版
- 机械制造蜗杆轴课程设计
- 机械制造手柄套课程设计
- 机械创新技术课程设计
- 机械储能课程设计
- 2024北京平安普惠物业服务合同
- 上海市闵行区2023届九年级初三数学一模试卷及答案
- 高分子水凝胶
- 黑布林英语阅读 A test for Jess公开课课件
- 习作我最喜欢的玩具说课稿
- 墨菲定律(参考课件)
- 光伏发电站设计标准规范
- 码头平台桩基施工方案
- 杭州注册公司公司章程范本
- 中国科学家光学之父王大珩的红色故事PPT大力弘扬科学家精神PPT课件(带内容)
- 配电网工程施工工艺规范课件
- 财务预算编制说明范文(通用十四篇)
评论
0/150
提交评论