(50)若有下面的说明和定义,则sizeof(struct aa)的值是
struct aa
{ int r1; double r2; float r3;
union uu{char u1[5];long u2[2];}ua;
} mya;
a)30
b)29
c)24
d)22
正确答案: d
二 、填空题
(1)长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为 【1】 。
正确答案: 1.(n/2)
(2)用树型结构表示实体类型及实体间联系的数据模型称为 【2】 。
正确答案: 1.(层次模型)
(3)类是一个支持集成的抽象数据类型,而对象是类的 【3】 。
正确答案: 1.(实例)
(4)数据流图的类型有 【4】 和事务型。
正确答案: 1.(变换型)
(5)当数据的物理结构(存储结构、存取方式等)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的 【5】 。
正确答案: 1.(物理独立性)
(6)使用结构体处理数据的场合是【6】 。
正确答案: 1.(把不同类型的数据作为整体处理。)
(7)有定义char a,b;若想通过&运算符保留a的第3位和第6位的值,则b的二进数应是【7】 。
正确答案: 1.(00100100)
(8)以下程序运行结果是【8】 。
long fib (int g)
{ switch (g)
{ case 0∶return 0;
case 1∶case2∶return 1;
}
return (fib (g-1)+fib(g-2));
}
main ()
{ long k;
k=fib (5);
printf ("k=%(d\n)",k);
}
正确答案: 1.(k=5)
(9)strcmp函数的功能是【9】 。
正确答案: 1.(字符串的比较)
(10)以下程序段中,错误的行号是【10】 。
① #include <stdio.h>
② main ()
③ { char str [14];str []={" i love china"};
④printf ("%s",str);
⑤ }
正确答案: 1.(3行)
(11)将以下程序写成三目运算表达式是【11】 。
if(a>b)max=a;
else max=b;
正确答案: 1.(max=(a>b)?a:b;)
(12)设x和y均为int型变量,且x=1,y=2,则表达式double(1+x/y)的值为【12】。
考生答案: 1.()
正确答案: 1.(1.000000)
(13)下面程序的功能是输出数组s中最大元素的下标,请填空。
main()
{ int k, p,s[]={1, -9, 7, 2, -10, 3};
for(p =0, k =p; p< 6; p++)
if(s[p]>s[k])【13】
printf("%d\n", k);
}
正确答案: 1.(k=p;)
(14)设有以下定义和语句,则*(*(p+2)+1)的值为【14】。
int a[3][2]={10, 20, 30, 40, 50, 60}, (*p)[2];
p=a;
正确答案: 1.(60)
(15)下面函数要求计算两个整数x,y之和,并通过形参返回该值,请填空。
add(int x, int y,【15】z)
{【16】= x+y; }
正确答案: 1.(int *) 2.(*z)
(16)下面程序的运行结果是【17】。
#define n 10
#define s(x)x*x
#define f(x)(x*x)
main()
{ int i1,i2;
i1=1000/s(n); i2=1000/f(n);
printf("%d %d\n",i1,i2);
}
正确答案: 1.(1000 10)
(17)以下程序的输出结果是【18】。
unsigned fun6(unsigned num)
{ unsigned k=1;
do{k *=num%10;num/=10;}
while (num);
return k;
}
main()
{ unsigned n=26;
printf("%d\n", fun6(n));
}
正确答案: 1.(12)
(18)以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例如,若一维数组中的数据是:
2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10
删除后,数组中的内容应该是:
2 3 4 5 6 7 8 9 10。
请填空。
#include <stdio.h>
#define n 80
int fun(int a[], int n)
{ int i,j=1;
for(i=1;i<n;i++)
if(a[j-1]【19】a[i])
a[j++]=a[i];
【20】;
}
main()
{ int a[n]={ 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10}, i, n=19;
printf("the original data :\n");
for(i=0; i<n; i++)printf("%3d",a[i]);
n=fun(a,n);
printf("\nthe data after deleted :\n");
for(i=0; i<n; i++)printf("%3d",a[i]); printf("\n\n");
}
正确答案: 1.(!=) 2.(return j)
本文共4页: 第
[1] [2] [3] [4] 页