26.有如下程序
int func(int a,int b)
{ return(a+b);}
main()
{ int x=2,y=5,z=8,r;
r=func(func(x,y),z);
printf("%d\n",r);
}
该程序的输出的结果是
A)12
B)13
C)14
D)15
27.设有以下说明语句
typedef struct
{ int n;
char ch[8];
} PER;
则下面叙述中正确的是
A)PER 是结构体变量名
B)PER是结构体类型名
C)typedef struct 是结构体类型
D)struct 是结构体类型名
28.有如下定义
struct person{char name[9];int age;};
struct person class[10]={"John",17,"paul",19,"Mary",18,"Adam",16,};
根据上述定义,能输出字母M的语句是
A)printf("%c\n",class[3].name);
B)printf("%c\n",class[3].name[1]);
C)printf("%c\n",class[2].name[1]);
D)printf("%c\n",class[2].name[0]);
29.以下程序执行后a的值是
main()
{ int x,y=252,i=386,*m=&y,*z=&i;
x=(z==y);
printf("%d",x);
}
A)252
B)1
C)0
D)运行时出错,x无定值
30.阅读下列程序,当运行函数时,输入asd af aa z67,则输出为
#include
#include
#include
int fun (char *str)
{ int i,j=0;
for(i=0;str[i]!=′\0′;i++)
if(str[i]!=′ ′)str[j++]=str[i];
str[j]= ′\0′;
}
main()
{
char str[81];
int n;
clrscr();
printf("Input a string : ");
gets(str);
puts(str);
fun(str);
printf("%s\n",str);
}
A)asdafaaz67
B)asd af aa z67
C)asd
D)z67
31.下列程序的输出结果是
struct abc
{ int a, b, c, s;};
main()
{ struct abc s[2]={{1,2,3},{4,5,6}}; int t;
t=s[0].a+s[1].b;
printf("%d\n",t);
}
A)5
B)6
C)7
D)8
32.若有定义: char *st= "how are you "; 下列程序段中正确的是
A)char a[11], *p; strcpy(p=a+1,&st[4]);
B)char a[11]; strcpy(++a, st);
C)char a[11]; strcpy(a, st);
D)char a[], *p; strcpy(p=&a[1],st+2);
33.下列程序的运行结果是
void fun(int *a, int *b)
{ int *k;
k=a; a=b; b=k;
}
main()
{ int a=3, b=6, *x=&a, *y=&b;
fun(x,y);
printf("%d %d", a, b);
}
A)6 3
B)3 6
C)编译出错
D)0 0
34.请选出正确的程序段
A)int *p;
scanf("%d",p);
…
B)int *s, k;
*s=100;
…
C)int *s, k;
char *p, c;
s=&k;
p=&c;
*p=′a′;
…
D)int *s, k;
char *p, e;
s=&k;
p=&c;
s=p;
*s=1;
…
35.若有下面的说明和定义,则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
二、填空题(每空2分,共计30分)
1.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为 【1】 。
输入答案,中间不含空格:
2.用树型结构表示实体类型及实体间联系的数据模型称为 【2】 。
输入答案,中间不含空格:
3.类是一个支持集成的抽象数据类型,而对象是类的 【3】 。
输入答案,中间不含空格:
4.数据流图的类型有 【4】 和事务型。
输入答案,中间不含空格:
5.当数据的物理结构(存储结构、存取方式等)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的 【5】 。
输入答案,中间不含空格:
6.以下程序运行结果是 【6】 。
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);
}
输入答案,中间不含空格:
7.以下程序段中,错误的行号是 【7】 。
① #include
② main ()
③ { char str [14];str []={" I love China"};
④ printf ("%s",str);
⑤ }
输入答案,中间不含空格:
8.将以下程序写成三目运算表达式是 【8】 。
if(a>b)max=a;
else max=b;
输入答案,中间不含空格:
9.设x和y均为int型变量,且x=1,y=2,则表达式double(1+x/y)的值为 【9】 。
输入答案,中间不含空格:
10.下面程序的功能是输出数组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]) 【10】
printf("%d\n", k);
}
11.设有以下定义和语句,则*(*(p+2)+1)的值为 【11】 。
int a[3][2]={10, 20, 30, 40, 50, 60}, (*p)[2]; p=a;
12.下面程序的运行结果是 【12】 。
#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);
}
13.以下程序的输出结果是 【13】 。
unsigned fun6(unsigned num)
{ unsigned k=1;
do{k *=num;num/=10;} while (num);
return k;
}
main()
{ unsigned n=26;
printf("%d\n", fun6(n));
}
14.以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例如,若一维数组中的数据是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
#define N 80
int fun(int a[], int n)
{ int i,j=1;
for(i=1;i if(a[j-1] 【14】 a[i])
a[j++]=a[i];
【15】;
}
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=fun(a,n);
printf("\nThe data after deleted :\n");
for(i=0; i }