(总分101,考试时间90分钟)
一、选择题
1. 设有如下关系表:
A) T=R∩S B) T=R∪S C) T=R×S D) T=R/S
2. 在一棵二叉树中,叶子结点共有30个,度为1的结点共有40个,则该二叉树中的总结点数共有( )个。
A) 89 B) 93 C) 99 D) 100
3. 某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为 。(假设根结点在第1层)
A) 3 B) 4 C) 6 D) 7
4. 内聚性是对模块功能强度的衡量,下列选项中,内聚性较弱的是( )。
A) 顺序内聚 B) 偶然内聚 C) 时间内聚 D) 逻辑内聚
5. 计算机网络的主要特点是 。
A) 运算速度快 B) 运算精度高 C) 资源共享 D) 人机交互
6. 应用数据库的主要目的是( )。
A) 解决数据保密问题 B) 解决数据完整性问题
C) 解决数据共享问题 D) 解决数据量大的问题
7. 程序中若有如下说明和定义语句:
char fun(char *);
main()
char * s="one", a[5]=0,(* f1)()=fun,ch;
┆
以下选项中对函数fun的正确调用语句是( )。
A) (* f1)(a); B) * f1(* s); C) fun(&a); D) ch=* f1(s)
8. 阅读以下程序:
#include<stdio.h>
main()
int case;float printF;
printf("请输入2个数:");
scanf("%d%f",&case,&printF);
printf("%d%f\n",case,printF);
该程序在编译时产生错误,其出错原因是( )。
A.定义语句出错,case是关键字,不能用做用户自定义标识符
B.定义语句出错,printF不能用作用户自定义标识符
C.定义语句无错,scanf不能作为输入函数使用
D.定义语句无错,printf不能输出case的值
9. 下列程序的运行结果是( )。
inty=5,x=14;
y=((x=3*y,x+1),x-1;
printf("x=%d,y=%d",x,y);
A) x=27,y=27 B) x=12,y=13
C) x=15,y=14 D) x=y=27
10. 若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是
A) 函数的实参和其对应的形参共占同一存储单元 B) 形参只是形式上的存在,不占用具体存储单元
C) 同名的实参和形参占同一存储单元 D) 函数的形参和实参分别占用不同的存储单元
11. 设int x=2,y=1;表达式(!x||y--)的值是( )。
A.0 B.1 C.2 D.-1
12. 在Visual FoxPro中,“表”通常是指 。
A) 表单 B) 报表 C) 关系数据库中的关系D) 以上都不对
13. 若有代数式,(其中P仅代表自然对数的底数,不是变量),则下列能够正确表示该代数式的C语言表达式是( )。
A) sqrt(abs(n^x+e^x)) B) sqrt(fabs(pow(n,x)+pow(x,e)))
C) sqrt(fabs(pow(n,x)+exp(x))) D) sqrt(fabs(pow(x,n)+exp(x)))
14. 若变量已正确说明为float类型,要通过语句scanf("%f %f %f", &a, &b, &c);给a赋于19.0,b赋予22.0,c赋予33.0,不正确的输入形式是 。
A) 10<回车>
22<回车>
33<回车>
B) 19.0, 22.0, 33.0<回车>
C) 19.0<回车>
22.0 33.0<同车>
D) 10 22<回车>
33<回车>
15. 下面的for语句的循环次数为( )。
A) 是无限循环 B) 循环次数不定 C) 最多执行6次 D) 最多执行5次
16. 已定义以下函数:
fun(char*p2,char*p1)
while((*p2=*p1)!='\0')p1++;p2++
函数的功能是 。
A) 将p1所指字符串复制到p2所指内存空间
B) 将p1所指字符串的地址赋给指针p2
C) 对p1和p2两个指针所指字符串进行比较
D) 检查p1和p2两个指针所指字符串中是否有'\0'
17. 设已有定义:float x; 则以下对指针变量p进行定义且赋初值的语句中正确的是 。
(A) float *p=1024;
(B) int *p=(float)x;
(C) float p=&x;
(D) float *p=&x;
18. 以下程序运行后的输出结果是
#include
void fun(int P)
int d=2;
P=d++; printf("%d", P);
main()
int a=1;
fun(a); printf("%d\n', a);
A) 32 B) 12 C) 21 D) 22
19. 以下正确的函数头定义形式是
A) double fun(int x,int y) B) double fun(int x;int y)
C) double fun(int x,int y);D) double fun(int x,y);
若有以下定义和语句:
double r=99,*p=&r;*p=r;
则以下正确的叙述是( )。
A.两个*p含义相同,都说明给指针变量p赋值
B.在“double r=99,*p=&r;”中,把r的地址赋值给了p所指的存储单元
C.语句“*p=r;”把变量r的值赋给指针变量p
D.语句“*p=r;”取变量r的值放回r中
20.
21.
22. 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( )。
A) 函数调用可以作为独立的语句存在 B) 函数调用可以作为一个函数的实参
C) 函数调用可以出现在表达式中 D) 函数调用可以作为一个函数的形参
23. 以下程序的输出结果是 。
fun(int x, int Y, int z)
z=x*x+y*y;
main()
int a=31;
fun(5, 2, a);
printf("% d", a);
A) 0 B) 29 C) 31 D) 无定值
24. 若有以下定义,则对x数组元素的正确应用是
int x[10], *pt=x;
A) *&x[10] B) *(x+3) C) *(pt+10) D) pt+3
25. 若有定义:int a[2][3];,以下选项中对a数组元素正确引用的是 。
(A) a[2][!1]
(B) a[2][3]
(C) a[0][3]
(D) a[1>2][!1]
26. 有以下程序
#include<stdio.h>
void fun(char *C)
while (*C)
if(*c>='a' && *c<='z')*c=*c-('a'-'A');
c++;
main()
char s[81];
gets(s); fun(s); puts(s):
当执行程序时从键盘上输入Hello Beijing<回车>,则程序的输出结果是 。
A) hello Beijing B) Hello Beijing C) HELLO BEIJING D) hELLO Beijing
27. 有以下程序:
main()
int i,t[][3]=9,8,7,6,5,4,3,2,1;
for(i=0;i<3;i++)printf("%d",t[2-i][i]);
程序执行后的输出结果是 。
A) 7 5 3 B) 3 5 7
C) 3 6 9 D) 7 5 1
28. 下列二维数组初始化语句中,不正确的是( )。
A) int b[][2]=1,2,3,4,5,6,7; B) int b[3][5]=0,0,0;
C) int b[][4]=1,2,3,4,5,6; D) int b[3][2]=(1,2),(3,4) ,(5,6);
29. 设变量已正确定义,则下列能正确计算f=n!的程序段是( )。
A) f=0;
for(i=1;i<=n;i++)f*=i;
B) f=1;
for(i=1;i<n;i++)f*=i;
C) f=1;
for(i=n;i>1;i++)f*=i;
D) f=1;
for(i=n;i> =2;i--)f*=i;
30. 设有定义:char s[8];int i=O;,以下不能将—行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是 。
A) gets(s); B) white((s[i++]=getchar())!='\n');s[i]=\0;
C) scanf("%s",s); D) d0scanf("%c",&s[i]);while(s[i++]!='\n';s[i]='\0';
31. 下面程序的输出是 。
main()
int x=3,y=6,a=0;
while(x++!=(y-=1))
a+=1
if(y<x)break;
printf("x=%d,y=%d,=%d\n",x,y,a);
A) x=4,y=4,a=1 B) x=5,y=5,a=1
C) x=5,y=4,a=3 D) x=5,y=4,a=1
32. 下列二维数组的说明中,不正确的是( )。
A) floata[][4]=0,1,8,5,9; B) inta[3][4];
C) #define N 5 D) inta[2][9.5];
float a[N][3];
33. 有以下程序
fun(char p[][10])
int n=0,i;
for(i=0;i<7;i++)
if(p[i][0]=='T')n++;
return n;
main()
char str[][10]="Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun";
printf("%d\n",fun(str));
程序执行后的输出结果是 。
(A) 1
(B) 2
(C) 3
(D) 0
34. 下列程序中函数sort()的功能是对数组a中的数据进行由大到小的排序。
#include<stdio.h>
void sort(inta[],int n)
int i,j,t;
for(i=0;i<n-1;i++)
for(j=i+1;<n;j++)
if(a[i]<a[j])
t=a[i];a[i]=a[j];a[j]=t;
main()
int a[10]=1,2,3,4,5,6,7,8,9,10,i;
sort(&a[1],7);
for(i=0;i<10;i++)printf("%d,",a[i]);
程序运行后的输出结果是( )。
A) 1,2,3,4,5,6,7,8,9,10, B) 10,9,8,7,6,5,4,3,2,1,
C) 1,8,7,6,5,4,3,2,9,10, D) 1,2,10,9,8,7,6,5,4,3,
35. 设有定义:char p[]='1','2','3',,*q=p;,以下不能计算出一个char型数据所占字节数的表达是 。
(A) sizeof(p)
(B) sizeof(char)
(C) sizeof(*q)
(D) sizeof(p[0])
36. 有以下程序:
fun(char p[][10])
int n=0,i;
for(i=0;i<7;i++)
if(P[i][0]=='T')n++;
return n;
main()
char str[][10]="Mon","Tue","wed","Thu","Fri","Sat","Sun";
printf("%d\n",fun(str));
程序执行后的输出结果是 。
A) 1 B) 2 C) 3 D) 0
37. 有下列程序:
#include<stdio.h>
int fun(int x,iny y)
if(x==y)return(x);
else return((x+y)/2);
main()
int a=4,b=5,c=6;
printf("%d\n",fun(2*a,fun(b,c)));
程序运行后的输出结果是( )。
A.3 B.6 C.8 D.12
38. 在C语言中,形参的默认存储类型是 。
A) auto B) register C) static D) extern
39. 在一个C语言源程序文件中所定义的全局变量,其作用域为( )。
A.所在文件的全部范围 B.所在程序的全部范围
C.所在函数的全部范围 D.由具体定义位置和extern说明来决定范围
40. 如果需要打开一个已经存在的非空文件“FILE”并进行修改,正确的语句是( )。
A) fp=fopen("FILE","r"); B) fp=fopen("FILE","a+");
C) fp=fopen("FILE","w+"); D) fp=fopen("FILE","r+");
41. 函数fseek()的正确调用形式是( )。
A) fseek(位移量,起始点,文件类型指针); B) fseek(文件类型指针,位移量,起始点);
C) fseek(文件类型指针,起始点,位移量); D) fseek(起始点,位移量,文件类型指针);
二、填空题
42. 在深度为7的满二叉树中,度为2的节点个数为 。
43. 在数据的存储结构中,不仅需要存储各数据元素的信息,还要存放各元素之间 的信息。
44. 以下程序段的输出结果是 。
int i=9;
printf("%o\\n",i);
45. 数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、 和处理过程。
46. 在关系A(S, SN, D)和关系B(D, CN, NM)中,A的主关键字是S,B的主关键字是D,则称 是关系A的外码。
47. 以下程序运行后的输出结果是 。
main()
int a,b,c;
a=10;b=20;c=(a/b<1)&&(a%b<1);
printf("%d %d %d\n",a,b,c);
48. 已定义char ch='$';int i=1,j;,执行j!=ch&&i++以后,i的值为 。
49. 下列程序段是从键盘输入的字符中统计小写字母的个数,用换行符结束循环。请填空。
int n=0,c;
c=getchar();
while(c!='\n')
if( )
n++;
50. 若有如下结构体说明:
struct STRU int a,b;charc:double d;
struct STRU*p1,*p2;
请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型。 t[20]
51. 有以下程序:
#include<stdio.h>
main()
int a[3][3]=1,2,3,4,5,6,7,8,9;
int b[2][0],i;
for(j=0;j<3;i++)b[i]=a[i][2]+a[2][i];
for(i=0;i<3;j++)printf("%d",b[i]);
printf("\n");
程序运行后的输出结果是 。
52. 下列程序将二维数组a的行和列元素互换后存放到另一个二维数组b中。请填空。
main()
int a[2][3]=1,2,3,4,5,b[3][2],i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
;
53. 阅读下列程序,则程序的输出结果为 。
#include "stdio.h"
struet ty
int data;
char c;;
main( )
street ty a=30,'x';
fun(a);
printf("%d%c",a.data,a.c);
fun(struct ty b)
b.data=20;
b.c='y';
54. 在宏定义#define PI 3.14159中,用宏名PI代替一个 。
55. 执行以下程序的输出结果是 。
#include<stdio.h>
main()
int i,n[4]=1;
for(i=1;i<=3;i++)
n=n[i-1]*2+1;printf("%d",n);)
56. 以下程序的输出结果是 。
#include<stdio.h>
#define M 5
#define N M+M
main()
int k;
k=N*N*5;printf("%d\\n",k);