07年4月等级考试二级C语言练习一[4]

文章作者 100test 发表时间 2007:04:06 21:12:30
来源 100Test.Com百考试题网


二、填空题。

(1)算法的复杂度主要包括空间复杂度和【1】复杂度。
【解析】算法的复杂度主要指时间复杂度和空间复杂度。

(2)在线性结构中,队列的操作顺序是先进先出,而栈的操作顺序是【2】 。
【解析】队列和栈都是线性结构,但是不同之处在于队列的操作顺序是先进先出,而栈的操作顺序是先进后出。

(3)数据流图的类型有【3】和事务型。
【解析】典型的数据流图有两种,即变换型和事务型。

(4)在数据库理论中,数据物理结构的改变,如存储设备的更换、物理存储的更换、存取方式等都不影响数据库的逻辑结构,从而不引起应用程序的变化,称为【4】 。
【解析】数据的物理结构改变,不影响数据库的逻辑结构,从而不引起应用程序的变化,这种性质叫做物理独立性。

(5)数据库管理系统是位于用户与【5】之间的软件系统。
【解析】数据库管理系统是帮助用户创建和管理数据库的应用程序的集合。因此,数据库管理系统需要操作系统的支持,为用户提供服务。

(6)若从键盘输入58,则以下程序的输出结果是【6】 。
main()
{ int a.
scanf("%d",&.a).
if(a>50) printf("%d",a).
if(a>40) printf("%d",a).
if(a>30) printf("%d",a).
}
【解析】在程序中,执行scanf()语句后,a被赋值为58。接着执行第一个if语句,因为,a=58>50,执行第一个if语句后面的输出语句,输出58;接着执行第二个if语句,因为,a=58>40,执行第二个if语句后面的输出语句,输出58;接着执行第三个if语句,因为,a=58>30,执行第三个if语句后面的输出语句,输出58,所以最后的输出为585858。

(7)以下程序的输出结果是【7】 。
main()
{ int a=177.
printf("%o\n",a).
}
【解析】在控制格式符中“o”代表的是将数据按八进制数输出,十进制数的177代表的八进制数是261。

(8)以下程序的输出结果是【8】 。
main()
{ int a=0.
a =(a=8).
printf("%d\n",a).
}
【解析】在程序中首先将8赋值给变量a,然后再进行复合赋值运算。即a=a a=8 8=16,所以该空格处应该填16。

(9)以下程序的输出结果是【9】 。
main()
{ int a=5,b=4,c=3,d.
d=(a>b>c).
printf("%d\n",d).
}
【解析】关系运算符“>”的结合方式是从左向右的,所以在本题中的表达式a>b>c;从左向右开始计算,a>b的结果为“1”,接着1和c比较假,该空格处应该填0。

(10)以下定义的结构体类型包含两个成员,其中成员变量info用来存放整型数据;成员变量link是指向自身结构体的指针。请将定义补充完整。
struct node
{ int info.
【10】link.
};
【解析】link是指向结构体自身的指针,因此link是指针,指向struct node类型的数据,可定义成“struct node *link”。

(11)以下程序的输出结果是【11】 。
main()
{ int s,i.
for(s=0,i=1.i<3.i ,s =i).
printf("%d\n",s).
}
【解析】此程序中,for循环语句后面直接跟了一个“;”,表明循环体为空。输出语句不在for循环体内,所以在循环执行完毕后才输出s的值。s、i的初值分别为0和1,判断循环条件,表达式“1<3”成立,执行“i ,s =i”后,i和s的值分别为2和1,继续判断循环条件,表达式“2<3”成立,执行“i ,s =i”后,i和s的值分别为3,再次判断循环条件,表达式“3<3”不成立,循环结束。

(12)以下程序的输出结果是【12】 。
main()
{ char *p="abcdefgh",*r.
long *q.
q=(long *)p.
q .
r=(char *)q.
printf("%s\n",r).
}
【解析】本题定义了一个字符型指针变量p并通过赋初值让它指向了一个字符串,定义了另一个字符型指针变量r和一个长整型指针变量q。首先通过语句“q=(long*)p;”把p的地址值强制转换为长整型地址值并赋值给q,然后执行“q ;”,地址值增加了4,执行语句“r=(char*)q;”,把长整型指针变量q的值再强制转换成字符型地址值并赋给r,r的值应为字符串中字符“e”的地址,最后输出r指向的字符串,是“efgh”。

(13)以下程序的输出结果是【13】 。
main()
{ char s[]="abcdef".
s[3]=\0.
printf("%s\n",s).
}
【解析】字符串的结束标记\0,当输出一个存放在字符数组中的字符串时,只需输出到\0为止,而不管其后有什么数据。本题给字符数组s的元素s[3]赋值为\0,故只能输出3个字符“abc”。

(14)以下程序的输出结果是【14】 。
main()
{ int x=0.
sub(&.x,8,1).
printf("%d\n",x).
}
sub(int *a,int n,int k)
{ if(k<=n)sub(a,n/2,2*k).
*a =k.
}
【解析】在主函数中定义了一个变量x并赋初值0,然后执行函数调用语句,该语句的执行过程为sub(&.x,8,1)调用sub(&.a,4,2),sub(&.a,4,2)调用sub(&.a,2,4),sub(&.a,2,4)中由于2<4,所以if后面括号里的判断为假,递归结束,执行其后的*a =k;语句此时x=x k=0 4=4,回退到上一层调用函数sub(&.x,4,2)中,执行后面的语句,x=x k=4 2=6,再回推到最上一层调用函数sub(&.x,8,1)执行后面的语句,x=x k=6 1=7,所以最后输出7。

(15)设有如下宏定义
#define MYSWAP(z,x,y) {z=x.x=y.y=z.}
以下程序段通过宏调用实现变量a、b内容的交换,请填空。
float a=5,b=16,c.
MYSWAP(【15】,a,b).
【解析】本题关键在考生是不是了解宏的基本运用,在使用宏的时候明显少了一个实参。在定义宏的时候变量z是用来做中间变量的,题目中缺的变量就是一个中间变量c。

(16)以下程序用来统计文件中字符的个数。请填空。
#include "stdio.h"
main()
{ FILE * fp. long num=0L.
if((fp=fopen("fname.dat", "r"))==NULL).
{ printf("Open error\n").exit(0).}
while(【16】)
{ fgetc(fp).num .}
printf("num=\n",num-1).
fclose(fp).
}
【解析】统计文件中字符个数的算法可描述如下:首先判断文件位置指针是否指向了文件尾,如果不是则读出一个字符,同时字符的个数加1,再判断文件位置指针是否位于文件尾,如此循环,直到文件位置指针位于文件尾为止。本题首先以读文件的方式打开了文件“fname.dat”,如果打开成功则把返回的文件型指针赋值给fp,然后通过循环求文件中的字符数。首先判断文件位置指针是否位于文件尾,如果不是则循环读取字符,每次字符数加1。所以下划处应填循环条件,文件位置指针不是指向文件尾,即“!feof(fp)”。

(17)以下程序中,0select函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。
#define N 3
#define M 3
0select(int a[N][M],int *n)
{ int i,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=【17】.
return(【18】).
}
main()
{ int a[N][M]={9,11,23,6,1,15,9,17,20},max,n.
max=0select(a,&.n).
printf("max=%d,line=%d\n",max,n).
}
【解析】指针变量作为函数参数及二维数组的一个典型算法—求最大值及其下标。通过对题意的分析,在0select()函数中,变量row的作用是用来记录最大元素的行下标,colum的作用是用来记录最大元素的列下标。程序中通过一个循环求得数组元素中最大值的行列下标,分别存放在变量row和colum中,根据题意,应该把行下标赋值给形参指针变量n指向的变量,把最大值a[row][colum]作为函数值返回。

(18)mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。
int mystrlen(char *str)
{ int i.
for(i=0.【19】!= \0.i ).
return(【20】).
}
【解析】求str指向的字符串长度的算法是:用一个变量i表示字符串中字符的位置,一开始赋值为0,取出i位置的字符,判断是否为“\0”,若不是,则i的值加1,如此循环直到取出的字符是“\0”为止,此时i的值就是字符串的长度。由此可知,第一个空处应填第i位置上的字符*(str i);第二个空格应该填字符串的长度i。

相关文章


高校等考试题天天练文化基础]11月8日
高校等考试题天天练二级VB]11月7日
07年4月等级考试二级C语言练习一[4]
高校等考试题天天练文化基础]11月7日
07年4月计算机等级二级VF笔试一[2]
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛