06年4月全国计算机等级考试二级C语言考前密卷3
二。填写空题(每题2分空,共40分)
请将每题空的正确答案写在答题卡序号[1]至[20]的横线上,该答案不在试卷上计分。
(1)算法的复杂度主要包括时间复杂度和[1]复杂度。
回答:[1]空
点评:习惯上把重复语句的数量作为算法运行时间的相对度量,称为算法的时间复杂度。算法运行过程中需要辅助存储的空的大小称为算法的空复杂度。
(2)计算机存储室中数据的物理结构的存储形式空称为数据的[2]。
答案:[2]内部模式或物理模式或存储模式
评价:一个数据库只有一个内部模式,是对数据的物理结构和存储方式以及数据库内部的表示方法的描述。比如记录按顺序存储,索引以什么方式组织;数据是否被压缩和存储、加密等。
(3)根据功能,软件测试方法通常分为[3]测试法和黑盒测试法。
回答:[3]白盒
点评:软件测试有三种方法:动态测试、静态测试和正确性证明。一般来说,设计测试用例有两种方法:黑盒测试法和自盒测试法。
(4)数据库三层模型架构的划分有利于数据库的维护[4]。
回答:[4]数据独立性
评价:数据库的三层模型架构将数据的组织和管理分开,将数据的具体组织留给dbms进行管理,这样用户就可以对数据进行逻辑和抽象的处理,而不必关心数据在计算机中的具体表示和存储,从而保证了数据的独立性。
(5)在关系运算中,寻找满足一定条件的元组的运算称为[5]。
回答:[5]选择
评价:在关系数据库中,选择操作也是一种元操作,选择操作后的关系R仍然是关系(而选择的逻辑条件是由操作给出的)。这种关系由R中满足逻辑条件的元组组成。
(6)在C语言中(以16位pc为例),内存中一个浮点数据的字节数为4;内存中双精度数据的字节数是[6]。
回答:[6] 8
点评:在一般的16位pc中,一个浮点数据占用内存中的4个字节(32位),一个双精度数据占用8个字节。
(7)下面的变量定义已经设置并赋予了某些值,
char w;int x;浮动y;双z;
那么表达式:w*x+z-y得到的数据类型就是[7]。
答案:[7] Double或double-precision
评价:①先进行w*x的运算,先将字符类型W转换为整数,运算结果为整数;②将w*x的结果加到z上,先将第一步中的整数转换成double,结果为double;③最后用Y减去w*x+z的结果,先把浮点型Y转换成双精度型,结果是双精度型。
(8)如果在运行时给变量X输入12,下面程序的运行结果是[8];
main(){
int,y;
scanf(""%d " ",& x);
y=x>12?x+lo:x-12;
printf(" % d \ n " ",y);
}
答案:[8] 0
备注:三元运算符的形式为(表达式1)7(表达式2):(表达式3)。当(表达式1)的值为真时,返回(表达式2)的值;如果为false,则返回(表达式3)的值。因为x>t2为假,所以结果为x-12,即0。(9)四个语句:x++;+;、++ x;、x = x+l;、x = l+x;执行后,变量X的值将增加l,请用相同的函数写一个赋值语句(与列出的不一样)[9]。
答案:[9] x+=1:
点评:问题中四个语句的作用是给x的值加1,C中给变量加1的方法有很多种,可以用C的复合赋值运算符+=来实现,这个问题的答案是x+=1:。
(10)具有以下定义和语句,则*(*(p+2)+1)的值为[10]。
int[3][2]={10,20,30,40,50,60},(* p)[2];
p = a;
答案:[10] 60
备注:本题定义了一个3行2列的二维数组A,并定义了一个指向两个元素的一维数组指针P,使P指向二维数组A的第一行. *(*(p+2)+1)是引用a[2][1],其值为60。
(11)要使指针p指向一个双类型动态存储单元,请填写空。
p =【11】malloc(sizeof(double));
答案:[11] (double *)
备注:函数malloc返回void*,所以如果你想让指针指向double类型,就必须进行类型转换。类型转换的格式为:(数据类型*)。
(12)下面这个程序的作用:输出100以内所有能被3整除的,个位数为6的整数。请完成它们。
main()。
{ int ij;
for(I = o;【12】 ;i++)
{ j = I * 10+6;
if( 【13】)继续;
printf("%d ",j);
}
}
回答:[12] I [13] J% 3!=0
备注:此题要求100以内所有能被3整除且位数为6的整数。在程序中,J = I * 10+6;语句是求一个个位数为6的整数,由此得出程序的循环次数为i
(13)函数mycmp(char*s,char。t)的作用是比较字符串s和t的大小,当s等于t时返回0,当s>t时
返回正值,当s mycmp (char * s,char * t)
{ while(* s = = * t)
{ if(* s = =
++ s;++ t;
}
return(【14】);
}
回答:[14] *s-*t或-*t+*s
备注:函数的两个参数是双字符指针变量,字符串的第一个地址是指针变量的值,*s和*t代表字符串数组S和t的第一个字符,在while循环中,
(14)下面的程序运行后的输出结果是[15]。
void fun(、)
{
static int a = 0:
a+= 2;printf("%d ",a);
}
main()
{ int cc;
for(cc = 1;cc printf(" \ n ");
}
回答:[15] 2 4 6
备注:static声明的外部变量只被本文档引用,不能被其他文档引用。用static声明一个变量的作用有:①用static声明一个局部变量时,为该变量分配的空在整个程序执行过程中一直存在;②如果所有变量都用static声明,那么这个变量的作用域只限于这个文件模块(即声明的文件)。
(15)下面这个程序的运行结果是[16]。
main()
{ union example
{ struct
{ int x;int y;}在;
int a;
int b:
} e;
e . a = 1;e . b = 2;
e . in . x = e . a * e . b;
e . in . y = e . a+e . b;
printf("%d,%d\n ",e.in.x,e . in . y);
}
答案:[16] 4,8
点评:C语言规定一个公共体中的每个成员变量占用同一个内存单元,即e.in.x和e.a、e.b占用同一个内存单元,因为e.in.x和e.a,。(16)在操作一个文件的过程中,如果要求文件的位置回到文件的开头,应该调用的函数是[17] function。
回答:[17] [nnlrewind或fseek
备注:在操作一个文件的过程中,如果希望文件的位置回到文件的开头,可以调用rewind或fseek函数。rewind函数用于将位置指针返回到文件的开头,而fseek函数可以定位文件指针。
(17)以下函数用于查找2×4矩阵中元素的值。
max _ value(arr)
int arr[][4];
{
int i,j,max
max = alt[0][0];
for(I = 0;I for(j = 0;【18】 ;j++)
if(【19】> max)max =[2q];
return(max);
}
回答:[18]j[19]arr[I][j]
[20]arr[I][j]
评价:2*4矩阵其实是一个二维数组,结合这个问题应该是arr。第二条横线是判断当前数组元素值是否大于max,所以要填arr[I][j];在第三个水平线,当前大于max的数组元素的值被赋给了变量max,所以要填入“arr[i][il”。
0条评论