|
二、填空题 (1)冒泡排序算法在最好的情况下的元素交换次数为 【1】 。 解析: 根据冒泡排序算法思想可知,若待排序的初始序列为“正序”序列,则只需进行一趟排序,在排序过程中进行n-1次关键字间的比较,且不移动和交换记录,这种情况是冒泡排序的最好情况,故冒泡排序算法在最好的情况下的元素交换次数为0。
(2)在最坏情况下,堆排序需要比较的次数为 【2】 。 答案:0(nlog2n)
(3)若串s="MathTypes",则其子串的数目是 【3】 。 解析: 串s中共有9个字符,由于串中字符各不相同,则其子串中有0个字符的1个(空串),1个字符的9个,2个字符的8个,3个字符的7个,4个字符的6个,5个字符的5个,6个字符的4个,7个字符的3个,8个字符的2个,9个字符的1个,共有1+2+3+4+5+6+7+8+9+1=46。
(4)软件开发环境是全面支持软件开发全过程的 【4】 集合。 答案:软件工程
(5)关系数据库的关系演算语言是以 【5】 为基础的DML语言。 解析: 关系数据库中的关系演算包括元组关系演算和域关系演算。二者都是由原子公式组成的公式。而这些关系演算都是以数理逻辑中的谓词演算为基础的。
(6)下列y的值是 【6】 。 int y; y=sizeof (2.25*4); 解析: sizeof (2.25*4)为sizeof (10.00)值为8,C语言规定浮点型常量当双精度处理(以IRM-PC机为例)。
(7)下列x的值是 【7】 。 int x;x=sizeof 2.25*4; 解析: sizeof运算符高于算术运算符,所以sizeof 2.25*4等价于(sizeof 2.25)*4为8×4=32(以IBM-PC机为例)。
(8)以下程序的输出结果是 【8】 。 main () {int i=010,j=10; pirntf ("%d,%d\n",i,j); } 解析: 以0开头的是八进制数。
(9)下列程序的输出结果为 【9】 。 main () {int x=3,y=5; printf ("%d",x=(x--)*(--y)); } 解析: x--的值为3,--y的值为4;注意前缀--和后缀--的区别。
(10)以下程序的输出结果是 【10】 。 fun (int x,int y,int z) { z =x*x+y*y;} main () {int a=31; fun (6,3,a) printf ("%d", a) } 解析: 在函数调用时,形参值和改变,不能会改变实参的值。
(11)若有int a=1;int b=2;则a|b的值为 【11】 。 解析: 将a化成二进数和制数是0001,b化成二进制数为0010,|是或运算符,a|b=0011即为3。
(12)已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=′a′+′8′-′3′的值为 【12】 。 解析: 在C语言中,整型,实型,字符型数据间可以混合运算,在进行运算时,不同类型的数据要先转换成同一类型,然后再进行运算。我们可以这样计算本题,97+8-3=102,即102所对应的字母为f。
(13)若从键盘输入58,则以下程序输出的结果是 【13】 。 main() {int a; scanf("%d",&a); if(a>50)printf("%d",a); if(a>40)printf("%d",a); if(a>30)printf("%d",a); }
(14)下列程序的输出的结果是 【14】 , 【15】 。 main() {int i,j row,colum,m; static int array[3][3]={{100,200,300},{28,72,-30}{-850,2,6}}; m=array[0][0];for(i=0;i<3;i++) for(j=0;j<3;j++) if(array[i][j]<m) {m=array[i][j];colum=j;row=i;} printf("%d,%d,%d\n",m,row,colum); } 解析: 两个for循环是对数组元素进行扫描,并找是数组中值最小的元素和它的位置。
(15)以下程序中,select 函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。 #define N 3 #define M 3 select(int a[N][M],int *n) {int i,j,row=1,colum=1; for(i=0;ifor(j=0;jif(a[i][j]>a[row][colum]){row=i;colum=j;} *n= 【16】 ; return 【17】 ; } main() {int a[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); } 解析: 本题中,首先假定a[1][1]为最大值,然后利用循环结构将二维数组中的每个元素逐个与a[row][colum]进行比较,如果比a[row][colum]的值大,则令a[row][colum]指向该元素,比较完后,row即是最大值所在的行,所以第1个空所在的行的语句应是*n=row;,在第2个空中返回最大值,显然,是a[row][colum]
(16)函数my_cmp()的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s > t时返回正值,当s < t时返回负值。请填空。 my_cmp(char *s, char *t) {while (*s == *t) {if (*s == ′\0′)return 0; ++s; ++t; } return 【18】 ; } 解析: 两字符串大小比较必须从它们的首字符开始,在对应字符相等情况下循环,直至不相等结束。相等时,若字符串已到了字符串的结束标记符,则两字符串相同,函数返回0值;如还有后继字符,则准备比较下一对字符。对应字符不相同,循环结束。循环结束时,就以两个当前字符的差返回。所以在空框处应填入*s-*t,保证在s > t时返回正值,当s < t时返回负值。
(17)若有以下说明和定义语句,则变量w在内存中所占的字节数是 【19】 。 union aa {float x; float y; char c[6]; }; struct st{ union aa v; float w[5]; double ave; } w; 解析: 共用型aa有3个成分,一个是float型成分x,一个是float型成分y,再一个是有6个元素的字符数组。若float 型数据占4个字节,则类型aa 数据要占用6个字节。结构变量w有3个成分,一个是共用型成分aa , 要占用6个字节;一个是有5个float型元素的数组w,要占用20个字节;一个是double型的ave。double型数据要8个字节,则结构变量w要占用34个字节。
(18)“FILE *p”的作用是定义一个文件指针变量,其中的“FILE”是在 【20】 头文件中定义的。 解析: 代码“FILE *p”的作用是定义一个文件指针变量,其中的FILE是在标准输入输出头文件stdio.h中定义的。
共5页: 上一页 [1] [2] [3] 4 [5] 下一页
|