一 、选择题 (1)数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及 A)数据的存储结构 B)计算方法 C)数据映象 D)逻辑存储 正确答案: A
(2)串的长度是 A)串中不同字符的个数 B)串中不同字母的个数 C)串中所含字符的个数且字符个数大于零 D)串中所含字符的个数 正确答案: D
(3)在计算机中,算法是指 A)加工方法 B)解题方案的准确而完整的描述 C)排序方法 D)查询方法 正确答案: B
(4)以下不属于对象的基本特点的是 A)分类性 B)多态性 C)继承性 D)封装性 正确答案: C
(5)开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作 A)软件投机 B)软件危机 C)软件工程 D)软件产生 正确答案: B
(6)下面不属于软件设计原则的是 A)抽象 B)模块化 C)自底向上 D)信息隐蔽 正确答案: C
(7)开发大型软件时,产生困难的根本原因是 A)大系统的复杂性 B)人员知识不足 C)客观世界千变万化 D)时间紧、任务重 正确答案: A
(8)下列SQL语句中,用于修改表结构的是 A)ALTER B)CREATE C)UPDATE D)INSERT 正确答案: A
(9)数据库、数据库系统和数据库管理系统之间的关系是 A)数据库包括数据库系统和数据库管理系统 B)数据库系统包括数据库和数据库管理系统 C)数据库管理系统包括数据库和数据库系统 D)3者没有明显的包含关系 正确答案: B
(10)关系模型允许定义3类数据约束,下列不属于数据约束的是 A)实体完整性约束 B)参照完整性约束 C)域完整性约束 D)用户自定义的完整性约束 正确答案: C
(11)下列用于printf函数的控制字符常量中,代表"竖向跳格"的转义字符常量是 A)\b B)\t C)\v D)\f 正确答案: C
(12)以下程序的输出结果是 main() { int a=21,b=11; printf("%d\n",--a+b,--b+a); } A)30 B)31 C)32 D)33 正确答案: A
(13)设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是 A)n=(n*100+0.5)/100.0 B)m=n*100+0.5,n=m/100.0 C)n=n*100+0.5/100.0 D)n=(n/100+0.5)*100.0 正确答案: B
(14)下列是用户自定义标识符的是 A)_w1 B)3_xy C)int D)LINE-3 正确答案: A
(15)设x,y和z都是int型变量,且x=3,y=4,z=5,则下面表达式中,值为0的表达式是 A)x&&y B)x<=y C)x||++y&&y-z D)!(x正确答案: D
(16)若有条件表达式 (exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是 A)(exp==0) B)(exp!=0) C)(exp==1) D)(exp!=1) 正确答案: B
(17)下面四个选项中,均是不正确的8进制数或16进制数的选项是 A)016 0x8f 018 B)0abc 017 0xa C)010 -0x11 0x16 D)0a12 7ff -123 正确答案: D
(18)若变量已正确说明为int类型,要通过语句scanf("%d %d %d ",&a,&b,&c);给a赋值3,b赋值5,c赋值8,不正确的输入形式是 A)3<回车> 5<回车> 8<回车> B)3,5,8<回车> C)3<回车> 58<回车> D)35<回车> 8<回车> 正确答案: B
(19)以下选项中,与k=n++完全等价的表达式是 A)k=n,n=n+1 B)n=n+1,k=n C)k=++n D)k+=n+1 正确答案: A
(20)设有程序段 int k=10; while(k=0)k=k-1; 则下面描述中正确的是 A)while循环执行10次 B)循环是无限循环 C)循环体语句一次也不执行 D)循环体语句执行一次 正确答案: C
(21)对表达式for(表达式1; ;表达式3)可理解为 A)for(表达式1;0;表达式3) B)for(表达式1;1;表达式3) C)for(表达式1;表达式1;表达式3) D)for(表达式1;表达式3;表达式3) 正确答案: B
(22)以下程序的输出结果是 main() {int a,i;a=0; for(i=1;i<5;i++) {switch(i) {case 0: case 3:a+=2; case 1: case 2:a+=3; default:a+=5; } }printf("%d\n",a); } A)31 B)13 C)10 D)20 正确答案: A
(23)若有如下语句 int x=3; do{ printf("%d\n",x-=2);} while(!(--x)); 则上面程序段 A)输出的是1 B)输出的是1和-2 C)输出的是3和0 D)是死循环 正确答案: B
(24)判断char型变量cl是否为大写字母的正确表达式是 A)′A′<=cl<=′Z′ B)(cl>=A)&&(cl<=Z) C)(′A′>=cl)||(′Z′<=cl) D)(cl>=′A′)&&(cl<=′Z′) 正确答案: D
(25)下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请选择填空。 #include main() {int a,b,t; scanf("%d%d",&a,&b); while(_______) {if(a>b) {t=a;a=b;b=t;} printf("%d,%d\n",a,b); scanf("%d%d",&a,&b); } } A)!a=b B)a!=b C)a==b D)a=b 正确答案: B
(26)以下对C语言函数的有关描述中,正确的是 A)在C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参 B)C函数既可以嵌套定义又可以递归调用 C)函数必须有返回值,否则不能使用函数 D)函数必须有返回值,返回值类型不定` 正确答案: A
(27)有以下程序: void fun(int a,int b,int c) {a=456,b=567,c=678;} main() {int x=10,y=20,z=30; fun(x,y,z); printf("%d,%d,%d\n",x,y,z); } 输出结果是 A)30,20,10 B)10,20,30 C)456,567,678 D)678,567,456 正确答案: B
(28)有如下程序段 int *p,a=10,b=1; p=&a; a=*p+b; 执行该程序段后,a的值为 A)12 B)11 C)10 D)编译出错 正确答案: B
(29)有如下说明 int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的表达式是 A)*p+9 B)*(p+8) C)*p+=9 D)p+8 正确答案: B
(30)以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是 main() { int *p,*q,a,b; p=&a; printf("input a:"); scanf("%d",*p); } A)*p表示的是指针变量p的地址 B)*p表示的是变量a的值,而不是变量a的地址 C)*p表示的是指针变量p的值 D)*p只能用来说明p是一个指针变量 正确答案: B
(31)对以下说明语句的正确理解是 int a[10]={6,7,8,9,10}; A)将5个初值依次赋给a[1]至a[5] B)将5个初值依次赋给a[0]至a[4] C)将5个初值依次赋给a[6]至a[10] D)因为数组长度与初值的个数不相同,所以此语句不正确 正确答案: B
(32)若有说明:int a[][4]={0,0};则下面不正确的叙述是 A)数组a的每个元素都可得到初值0 B)二维数组a的第一维大小为1 C)当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小 D)只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值 正确答案: D
(33)有以下程序 main() { char a[]={ ′a′, ′b′, ′c′,′d′, ′e′, ′f′, ′g′,′h′,′\0′}; int i,j; i=sizeof(a); j=strlen(a); printf("%d,%d\b",i,j); } 程序运行后的输出结果是 A)9,9 B)8,9 C)1,8 D)9,8 正确答案: D
(34)假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是 A)3 B)6 C)10 D)20 正确答案: D
(35)已知学生记录描述为: struct student { int no; char name[20],sex; struct { int year,month,day; } birth; }; struct student s; 设变量s中的"生日"是"1984年11月12日",对"birth"正确赋值的程序段是 A)year=1984;month=11;day=12; B)s.year=1984;s.month=11;s.day=12; C)birth.year=1984;birth.month=11;birth.day=12; D)s.birth.year=1984;s.birth.month=11;s.birth.day=12; 正确答案: D
(36)以下程序的运行结果是 #define MIN(x,y)(x)<(y)?(x):(y) main() { int i=10,j=15,k; k=10*MIN(i,j); printf("%d\n",k); } A)10 B)15 C)100 D)150 正确答案: B
(37)有如下程序 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 正确答案: D
(38)设有以下说明语句 typedef struct { int n; char ch[8]; } PER; 则下面叙述中正确的是 A)PER 是结构体变量名 B)PER是结构体类型名 C)typedef struct 是结构体类型 D)struct 是结构体类型名 正确答案: B
(39)有如下定义 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]); 正确答案: B
(40)以下程序执行后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无定值 正确答案: C
(41)阅读下列程序,当运行函数时,输入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 正确答案: A
(42)下列程序的输出结果是 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 正确答案: B
(43)有以下函数: fun(char *p) {return p;} 该函数的返回值是 A)无确切值 B)形参p中存放的地址值 C)一个临时存储单元的地址 D)形参p自身的地址值 正确答案: B
(44)若有定义: 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); 正确答案: A
(45)下列程序的运行结果是 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 正确答案: B
(46)表达式aA)|| B)& C)< D)() 正确答案: D
(47)fwrite函数的一般调用形式是 A)fwrite(buffer,count,size,fp); B)fwrite(fp,size,count,buffer); C)fwrite(fp,count,size,buffer); D)fwrite(buffer,size,count,fp); 正确答案: D
(48)C语言中,文件组成的基本单位为 A)记录 B)数据行 C)数据块 D)字符序列 正确答案: D
(49)请选出正确的程序段 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; … 正确答案: C
(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 ② 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;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 #define N 80 int fun(int a[], int n) { int i,j=1; for(i=1;iif(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; in=fun(a,n); printf("\nThe data after deleted :\n"); for(i=0; i} 正确答案: 1.(!=) 2.(return j)
|