1、计算机二级(C)23 及答案解析(总分:645.00,做题时间:120 分钟)一、选择题(1-10 题每题 2 分,11-50 题(总题数:40,分数:60.00)1.以下不合法的字符常量是_。 (分数:1.50)A./018B./“C./D./xcc2.设有如下程序段: int x=2002, y=2003; printf(“%d/n“,(x,y); 则以下叙述中正确的是( )。 (分数:1.50)A.输出语句中格式说明符的个数少于输出项的个数,不能正确输出B.运行时产生出错信息C.输出值为 2002D.输出值为 20033.设有以下定义 int a=0; double b=1.25; ch
2、ar c=A; #define d 2 则下面语句中错误的是( )。 (分数:1.50)A.a+;B.b+;C.c+;D.d+;4.以下语句或语句组中,能正确进行字符串赋值的是_。 (分数:1.50)A.char *sp;*sp=“right!“;B.char s10;s=“right!“;C.char s10;*s=“right!“;D.char *sp=“right!“;5.有以下程序: main( ) char s “Yes/n/No“,*ps=s; puts(ps+4); *(ps+4)=0; puts(s); 程序运行后的输出结果是(选项 D 中的第一行是空行)( )。 (分数:1.
3、50)A.n/No Yes /NoB./No YesC.n/NO Yes /NoD./No Yes6.下列程序的输出结果是( )。 main( ) int i,s=0; for(i=1;i10;i+=2) s+=i+1; printf(“%d/n”,s); (分数:1.50)A.自然数 19 的累加和B.自然数 110 的累加和C.自然数 19 中的奇数之和D.自然数 110 中的偶数之和7.有以下程序 main( ) int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); printf(“%d %d %3.1f %3.1f/n“
4、,a,c,f,x); 程序运行后的输出结果是( )。 (分数:1.50)A.1 65 1 6.5B.1 65 1.5 6.5C.1 65 1.0 6.5D.2 65 1.5 6.58.下列叙述中正确的是_。 (分数:1.50)A.软件交付使用后还需要进行维护B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令9.在 Windows 菜单中,暗淡的命令名项目表示该命令( )。(分数:1.50)A.暂时不能使用B.正在执行C.包含下一层菜单D.包含对话框10.有以下程序 void swap(char *x,char *y) char t;
5、t=*x;*x=*y;*y=t; main() char *s1=“abc“,*s2=“123“; swap(s1,s2); printf(“%s,%s/n“,s1,s2); 程序执行后的输出结果是_。 (分数:1.50)A.123,abcB.abc,123C.1bc,a23D.321,cbaA.*sB.sC.*s+D.(*s)+12.设有定义:float a=2,b=4,h=3;,以下 C 语言表达式与代数式 1/2(a+b) 计算结果不相符的是( )。(分数:1.50)A.(a+b)*h/2B.(1/2)*(a+b)*hC.(a+b)*h*1/2D.h/2*(a+b)13.有以下程序: m
6、ain( ) int i; for(i=0;iA.22111B.21021C.122D.1214.若 fp 已正确定义并指向某个文件,当未遇到该文件结束标志时函数 feof(fp)的值为( )。 (分数:1.50)A.0B.1C.-1D.一个非 0 值15.有以下程序: void ss(char *s,char t) while(*s) if(*s=t) *s=t-a+A; s+; main( ) char strl100=“abcddfefdbd“,c=d; ss(strl,c); printf(“%s/n“,strl); 程序运行后的输出结果是( )。 (分数:1.50)A.ABCDDEF
7、EDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd16.以下能正确定义且赋初值的语句是_。 (分数:1.50)A.int n1=n2=10;B.char c=32;C.float f=f+1.1;D.double x=12.3E2.5;17.有以下程序: #define f(x) (x*x) main() int i1,i2; i1=f(8)/f(4); i2=f(4+4)/f(2+2); printf(“%d,%d/n“,i1,i2); 程序运行后的输出结果是_。 (分数:1.50)A.64,28B.4,4C.4,3D.64,6418.在 DOS 系统中,
8、带有通配符的文件名*.*表示( )。(分数:1.50)A.硬盘上的全部文件B.当前盘当前目录中的全部文件C.当前盘上的全部文件D.根目录中的全部文件19.十六进制数 100 转换为十进制数为( )。(分数:1.50)A.256B.512C.1024D.6420.在 E-R 图中,用来表示实体的图形是_。 (分数:1.50)A.矩形B.椭圆形C.菱形D.三角形21.有以下程序: #include main() FILE *fp; int i,k,n; fp=fopen(“data.dat“,“w+“); for(i=1;iA.0 0B.123 45C.1 4D.1 222.以下不能定义为用户标识
9、符的是( )。(分数:1.50)A.scanfB.VoidC._3com_D.int23.若有说明:int n=2,*p=n,*q=p;,则以下非法的赋值语句是( )。(分数:1.50)A.p=q;B.*p=q;C.n=*q;D.p=n;24.若程序中已包含头文件 stdio.h,以下选项中,正确运用指针变量的程序段是( )。(分数:1.50)A.int *i=NULL; scanf(“%d“,i);B.float *f=NULL; *f=10.5;C.char t=m, *c= *c=D.long *L; L=/0;25.设 char 型变量 x 中的值为 10100111,则表达式(2+x
10、)(3)的值是(分数:1.50)A.10101001B.10101000C.11111101D.0101010126.对长度为 n 的线性表进行顺序查找,在最坏情况下所需要的比较次数为_。 (分数:1.50)A.log2nB.n/2C.nD.n+127.现有以下结构体说明和变量定义,如图所示,指针 p、q、r 分别指向一个链表中连续 的三个结点。 struct node char data; struct node *next; *p,*q,*r; (分数:1.50)A.q-next=r-next; p-next=r;r-next=q;B.p-next=r; q-next=r-next;r-n
11、ext=q;C.q-next=r-next;r-next=q;p-next=r;D.r-next=q;p-next=r;q-next=r-next;28.有以下程序 #include main() char c1,c2,c3,c4,c5,c6; scanf(“%c%c%c%c“, c5=getchar(); c6=getchar(); putchar(c1); putchar(c2); printf(“%c%c/n“,c5,c6); 程序运行后,若从键盘输入(从第 1 列开始) 123 45678 则输出结果是_。 (分数:1.50)A.1267B.1256C.1278D.124529.s12
12、 和 s2 已正确定义并分别指向两个字符串。若要求:当 s1 所指串大于 s2 所指串时,执行语句 S;则以下选项中正确的是 (分数:1.50)A.if(s1s2)S;B.if(strcmp(s1,s2)S;C.if(strcmp(s2,s1)0)S;D.if(strcmp(s1,s2)0)S;30.以下程序中函数 reverse( )的功能是将 a 所指数组中的内容进行逆置。 void reverse(int a ,int n) int i,t; for(i=0;in/2;i+) t=ai;ai=an-1-i;an-1-i=t; main( ) int b10=1,2,3,4,5,6,7,8
13、,9,10;int i,s=0; reverse(b,8); for(i=6;i10;i+)s+=bi; printf(“%d/n“,s); 程序运行后的输出结果是( )。 (分数:1.50)A.22B.10C.34D.3031.设有如下关系表 (分数:1.50)A.T=RSB.T=RSC.T=RSD.T=R/S32.设有以下定义和语句 char str20= “Program“,*p; p=str; 则以下叙述中正确的是_。 (分数:1.50)A.*p 与 str0中的值相等B.str 与 p 的类型完全相同C.str 数组长度和 p 所指向的字符串长度相等D.数组 str 中存放的内容和指
14、针变量 p 中存放的内容相同33.在 Windows 环境下,为了复制一个对象,在用鼠标拖动该对象时应同时按住( )。(分数:1.50)A.Alt 键B.Esc 键C.Shift 键D.Ctrl 键34.有以下程序段: main( ) int a=5,*b,*c; c= b= 程序在执行了 c=b=语句后,表达式:*c 的值是( )。 (分数:1.50)A.变量 a 的地址B.变量 b 中的值C.变量 a 中的值D.变量 b 的地址35.有以下程序: void f(int v , int w) int t; t=v;v=w;w=t; main( ) int x=1,y=3,z=2; if(xy
15、) f(x,y); else if(yz) f(y,z); else f(x,z); printf(“%d,%d,%d/n”,x,y,z); 执行后输出结果是( )。 (分数:1.50)A.1,2,3B.3,1,2C.1,3,2D.2,3,136.有以下程序: main( ) char *p10=“abc”,”aabdfg”,”dcdbe”,”abbd”,”cd”;printf(“%d/n”,strlen(p4); 执行后输出结果是( )。 (分数:1.50)A.2B.3C.4D.537.下列关于栈的描述正确的是_。 (分数:1.50)A.在栈中能插入元素而不能删除元素B.在栈中只能删除元素而
16、不能插入元素C.栈是特殊的线性表,只能在一端插入或删除元素D.栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素38.“商品”与“顾客”两个实体集之间的联系一般是_。 (分数:1.50)A.一对一B.一对多C.多对一D.多对多39.下列函数定义中,会出现编译错误的是( )。(分数:1.50)A.max(int x,int y,int *z) *z=xy ? x:y; B.int max(int x,y) int z; z=xy ? x:y; return z; C.max(int x,int y) int z; z=xy?x:y; return(z); D.int max(int x,i
17、nt y) return(xy?x:y); 40.设函数 fun 的定义形式为: void fun(char ch,float x) 则以下对函数 fun 的调用语句中,正确的是_。(分数:1.50)A.fun(“abc“,3.0);B.t=fun(D,16.5);C.fun(65,2.8);D.fun(32,32);41.数据库设计包括两个方面的设计内容,它们是( )。(分数:-1.00)A.概念设计和逻辑设计B.模式设计和内模式设计C.内模式设计和物理设计D.结构特性设计和行为特性设计42.在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率。与程序的效率相比,人们更重视程序的( )
18、。(分数:-1.00)A.安全性B.一致性C.可理解性D.合理性43.需求分析中开发人员要从用户那里了解( )。(分数:-1.00)A.软件做什么B.用户使用界面C.输入的信息D.软件的规模44.关系模型允许定义 3 类数据约束,下列不属于数据约束的是( )。(分数:-1.00)A.实体完整性约束B.参照完整性约束C.域完整性约束D.用户自定义的完整性约束45.最简单的交换排序方法是( )。(分数:-1.00)A.快速排序B.选择排序C.堆排序D.冒泡排序46.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指( )。(分数:-1.00)A.模块间的关系B.系统结构部件转换成软
19、件的过程描述C.软件层次结构D.软件开发过程47.下列数据模型中,具有坚实理论基础的是( )。(分数:-1.00)A.层次模型B.网状模型C.关系模型D.以上 3 个都是48.开发大型软件时,产生困难的根本原因是( )。(分数:-1.00)A.大系统的复杂性B.人员知识不足C.客观世界千变万化D.时间紧、任务重49.下列 SQL 语句中,用于修改表结构的是( )。(分数:-1.00)A.ALTERB.CREATEC.UPDATED.INSERT50.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和( )。(分数:-1.00)A.可重用性差B.安全性差C.非持久性D.冗余性三、填
20、空题(每空 2 分,共 40 分)(总题数:15,分数:600.00)51.以下程序运行后的输出结果是 1。 #include void fun(char *s,int p,int k) int i; for(i=p;i2 char s=“abcdefg“; fun(s,3,strlen(s); puts(s); (分数:40.00)填空项 1:_52.计算机软件分为系统软件和应用软件,UNIX 系统属于 1。(分数:40.00)填空项 1:_53.若有以下程序 main( ) int p,a=5; if(p=a!=0) printf(“%d/n“,p); else printf(“%d/n“
21、,p+2); 执行后输出结果是 1。 (分数:40.00)填空项 1:_54.数据独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,称为 1。(分数:40.00)填空项 1:_55.以下程序运行后的输出结果是 1。 void fun(int x,int y) x=x+y;y=x-y;x=x-y; printf(“%d,%d,“,x,y); main( ) int x=2,y=3; fun(x,y); printf(“%d,%d/n“,x,y); (分数:40.00)填空项 1:_56.有以下程序 #include stdio.h
22、 main( ) char ch1,ch2; int n1,n2; ch1=getchar( ); ch2=getchar( ); n1=ch1-0; n2=n1*10+(ch2-0); printf(“%d/n”,n2); 程序运行时输入:12,执行后输出结果是 1。 (分数:40.00)填空项 1:_57.以下程序段的输出结果是 1。 int i=9; printf(“%o/n“,i); (分数:40.00)填空项 1:_58.以下 sstrcpy1 函数实现字符串复制,即将 t 所指字符串复制到 s 所指向内存空间中,形成一个新的字符串 s。请填空。 void sstrcpy(char
23、*s,char *t) while(*s+= 2); main( ) char str1100,str2 =”abcdefgh”; sstrcpy(str1,str2); printf(“%s/n”,str1); (分数:40.00)填空项 1:_59.以下程序中,函数 sumColumM 的功能是:求出 M 行 N 列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。 #define M 2 #define N 4 void SumColumMin(int aMN,int *sum) int i,j,k,s=0; for(i=0;iN;i+ k=0; for(
24、j=1;jM;j+ if(akiaji)k=j; s+= 1; 2=s; main( ) int xMN=3,2,5,1,4,1,8,3,s; SumColumMin( 3); printf(“%d/n“,s); (分数:40.00)填空项 1:_60.以下程序运行后的输出结果是 1。 #include main2 char ch=“abc“,x34; int i; for(i=0;i填空项 1:_61.以下程序的功能是输入任意整数给 n 后,输出 n 行由大写字母 A 开始构成的三角形 字符阵列图形。例如,输入整数 5 时(注意:n 不得大于 10),程序运行结果如下: A B C D E
25、F G H I J K L M N O 请填空完成该程序。 main1 int i,j,n; char ch=A; scanf(“%d“, if(nnext=r-next; p-next=r;r-next=q;B.p-next=r; q-next=r-next;r-next=q;C.q-next=r-next;r-next=q;p-next=r;D.r-next=q;p-next=r;q-next=r-next; 解析:选项 D 中首先将 q 赋给 r-next,也就是将结点 q 的地址存放在结点 r 的指针域中;接着将 r 赋给 p-next, 也就是将结点 r 的地址存放在结点 p 的指针
26、域中,此时完成了 q 和 r 所指结点的交换。q-next=r-next 的目 的是想将 q 的指针域指向下一个结点的数据地址,但由于一开始执行了 r-next= q,即已将 r 的指针域中存 放了 q 结点的地址,所以再做操作“q-next=r-next”就相当于将 q 指向了其本身,也就是和下一个结点断开了,所以选项 D 操作错误。28.有以下程序 #include main() char c1,c2,c3,c4,c5,c6; scanf(“%c%c%c%c“, c5=getchar(); c6=getchar(); putchar(c1); putchar(c2); printf(“%c
27、%c/n“,c5,c6); 程序运行后,若从键盘输入(从第 1 列开始) 123 45678 则输出结果是_。 (分数:1.50)A.1267B.1256C.1278D.1245 解析:此题考核的是字符输入输出函数的应用,getchar()函数只能接收一个字符,即使输入多个字符后再按 回车还是只能将第一个字符读入。scanf()和 printf()是按格式输入输出的函数,当输入 123,scanf() 分别读入字符“1”、“2”、“3”、“”;接下来输入 45678,则 getchar()读入字符“4” 赋值给 c5,字符“5” 赋值给 c6,所以输出语句输出结果为 1245。29.s12 和
28、 s2 已正确定义并分别指向两个字符串。若要求:当 s1 所指串大于 s2 所指串时,执行语句 S;则以下选项中正确的是 (分数:1.50)A.if(s1s2)S;B.if(strcmp(s1,s2)S;C.if(strcmp(s2,s1)0)S;D.if(strcmp(s1,s2)0)S; 解析:30.以下程序中函数 reverse( )的功能是将 a 所指数组中的内容进行逆置。 void reverse(int a ,int n) int i,t; for(i=0;in/2;i+) t=ai;ai=an-1-i;an-1-i=t; main( ) int b10=1,2,3,4,5,6,7
29、,8,9,10;int i,s=0; reverse(b,8); for(i=6;i10;i+)s+=bi; printf(“%d/n“,s); 程序运行后的输出结果是( )。 (分数:1.50)A.22 B.10C.34D.30解析:31.设有如下关系表 (分数:1.50)A.T=RSB.T=RS C.T=RSD.T=R/S解析:从图中可以看出,关系 T 是关系 R 和关系 S 的简单合并,而合并的符号为,所以答案为 T=RS。32.设有以下定义和语句 char str20= “Program“,*p; p=str; 则以下叙述中正确的是_。 (分数:1.50)A.*p 与 str0中的值相
30、等 B.str 与 p 的类型完全相同C.str 数组长度和 p 所指向的字符串长度相等D.数组 str 中存放的内容和指针变量 p 中存放的内容相同解析:选项 A 正确,原因是语句 p=str 表示指针变量 p 指向数组 str20的首地址也就是 str0。所以*p 与 str0中的值相等。33.在 Windows 环境下,为了复制一个对象,在用鼠标拖动该对象时应同时按住( )。(分数:1.50)A.Alt 键B.Esc 键C.Shift 键D.Ctrl 键 解析:34.有以下程序段: main( ) int a=5,*b,*c; c= b= 程序在执行了 c=b=语句后,表达式:*c 的值
31、是( )。 (分数:1.50)A.变量 a 的地址B.变量 b 中的值C.变量 a 中的值 D.变量 b 的地址解析:35.有以下程序: void f(int v , int w) int t; t=v;v=w;w=t; main( ) int x=1,y=3,z=2; if(xy) f(x,y); else if(yz) f(y,z); else f(x,z); printf(“%d,%d,%d/n”,x,y,z); 执行后输出结果是( )。 (分数:1.50)A.1,2,3B.3,1,2C.1,3,2 D.2,3,1解析:36.有以下程序: main( ) char *p10=“abc”,
32、”aabdfg”,”dcdbe”,”abbd”,”cd”;printf(“%d/n”,strlen(p4); 执行后输出结果是( )。 (分数:1.50)A.2 B.3C.4D.5解析:37.下列关于栈的描述正确的是_。 (分数:1.50)A.在栈中能插入元素而不能删除元素B.在栈中只能删除元素而不能插入元素C.栈是特殊的线性表,只能在一端插入或删除元素 D.栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素解析:栈实际上也是线性表,只不过是一种特殊的线性表。在这种特殊的线性表中,其插入和删除只在线 性表的一端进行。38.“商品”与“顾客”两个实体集之间的联系一般是_。 (分数:1.50
33、)A.一对一B.一对多C.多对一D.多对多 解析:两个实体间的联系可以归纳为 3 种类型:一对一联系:一对一的联系表现为主表中的每一条记录只与相关表中的一条记录相关联。 一对多联系:一对多的联系表现为主表中的每一条记录与相关表中的多条记录相关联。 多对多联系:多对多的联系表现为一个表中的多个记录在相关表中同样有多个记录其匹配。 本题中一个顾客可以购买多种商品,同一种商品可以有多个顾客购买,所以商品和顾客之间是多对多的联 系。39.下列函数定义中,会出现编译错误的是( )。(分数:1.50)A.max(int x,int y,int *z) *z=xy ? x:y; B.int max(int
34、x,y) int z; z=xy ? x:y; return z; C.max(int x,int y) int z; z=xy?x:y; return(z); D.int max(int x,int y) return(xy?x:y); 解析:40.设函数 fun 的定义形式为: void fun(char ch,float x) 则以下对函数 fun 的调用语句中,正确的是_。(分数:1.50)A.fun(“abc“,3.0);B.t=fun(D,16.5);C.fun(65,2.8);D.fun(32,32); 解析:对有参函数进行调用时,实参与形参的类型应相同或赋值兼容。由于整型数据与
35、字符型数据可以通 用,所以实参“32”与形参“ch”的类型是一致的;又因为整型变量给浮点型变量赋值是相兼容的,所以 选项 D 是正确的调用。41.数据库设计包括两个方面的设计内容,它们是( )。(分数:-1.00)A.概念设计和逻辑设计 B.模式设计和内模式设计C.内模式设计和物理设计D.结构特性设计和行为特性设计解析:数据库设计包括数据库概念设计和数据库逻辑设计两个方面的设计内容。42.在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率。与程序的效率相比,人们更重视程序的( )。(分数:-1.00)A.安全性B.一致性C.可理解性 D.合理性解析:结构化程序设计方法设计出的程序具有明
36、显的优点。其一,程序易于理解、使用和维护;其二,提交了编程工作的效率,降低了软件开发成本。其中,人们更重视前者。43.需求分析中开发人员要从用户那里了解( )。(分数:-1.00)A.软件做什么 B.用户使用界面C.输入的信息D.软件的规模解析:需求分析是软件定义时期的最后一个阶段,它的基本任务就是准确回答“系统必须做什么”这个问题即软件系统功能,需求分析的任务还不是确定系统怎样完成它的工作,而仅仅是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。 44.关系模型允许定义 3 类数据约束,下列不属于数据约束的是( )。(分数:-1.00)A.实体完整性约束B.参照完
37、整性约束C.域完整性约束 D.用户自定义的完整性约束解析:关系模型允许定义 3 类数据约束,它们是实体完整性约束、参照完整性约束及用户自定义的完整性约束。其中前两种完整性约束由关系数据库系统支持,对于用户自定义的完整性约束,则由关系数据库系统提供完整性约束语言,用户利用该语言给出约束条件,运行时由系统自动检查。45.最简单的交换排序方法是( )。(分数:-1.00)A.快速排序B.选择排序C.堆排序D.冒泡排序 解析:冒泡排序是一种最简单的交换类排序方法,它是通过相邻数据元素的交换逐步将线性表变成有序。注意:交换排序方法有冒泡排序和快速排序,显然选项 B)和选项 C)错误,冒泡排序比较简单,其
38、算法也容易理解,但快速排序本身较为复杂,且采用了递归调用,其算法理解也稍难。46.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指( )。(分数:-1.00)A.模块间的关系B.系统结构部件转换成软件的过程描述 C.软件层次结构D.软件开发过程解析:软件设计包括软件结构设计、数据设计、接口设计和过程设计。其中结构设计是定义软件系统各主要部件之间的关系;数据设计是将分析时创建的模型转化为数据结构的定义;接口设计是描述软件内部、软件和操作系统之间及软件与人之间如何通信;过程设计则是把系统结构部件转换成软件的过程性描述。47.下列数据模型中,具有坚实理论基础的是( )。(分数:-1
39、.00)A.层次模型B.网状模型C.关系模型 D.以上 3 个都是解析:关系模型比格式化模型(网状模型和层次模型)有以下方面的优点,即数据结构比较简单、具有很高的数据独立性、可以直接处理多对多的联系,以及有坚实的理论基础。48.开发大型软件时,产生困难的根本原因是( )。(分数:-1.00)A.大系统的复杂性 B.人员知识不足C.客观世界千变万化D.时间紧、任务重解析:软件的显著特点是规模庞大,复杂度超线性增长,在开发大型软件时,要保证高质量,极端复杂困难,不 仅涉及技术问题,更重要的是必须要有严格而科学的管理。49.下列 SQL 语句中,用于修改表结构的是( )。(分数:-1.00)A.AL
40、TER B.CREATEC.UPDATED.INSERT解析:SQL 语句中凡创建都用 CREATE,删除都用 DROP,改变用 ALTER,再跟类型和名字附加子句。50.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和( )。(分数:-1.00)A.可重用性差B.安全性差C.非持久性D.冗余性 解析:文件系统所管理的数据文件基本上是分散的,相互独立的,因此相对于数据库系统,以此为基础的数据处理存在 3 个缺点,数据冗余大、数据的不一致性、程序与数据的相互依赖(简称为数据依赖)。三、填空题(每空 2 分,共 40 分)(总题数:15,分数:600.00)51.以下程序运行后的输
41、出结果是 1。 #include void fun(char *s,int p,int k) int i; for(i=p;i2 char s=“abcdefg“; fun(s,3,strlen(s); puts(s); (分数:40.00)填空项 1:_ (正确答案:abcfg)解析:函数 fun 的作用是将 s 所指的字符串中从第 p+3 到第 k+1 个字符向前移动两个位置。本题程序是将 数组 s 中从第 6 个元素开始的值分别向前移动两个位置。在执行 fun 函数时,p 的值是 3,k 的值是 7,所 以,具体执行“for(i=p;i52.计算机软件分为系统软件和应用软件,UNIX 系
42、统属于 1。(分数:40.00)填空项 1:_ (正确答案:系统软件)解析:53.若有以下程序 main( ) int p,a=5; if(p=a!=0) printf(“%d/n“,p); else printf(“%d/n“,p+2); 执行后输出结果是 1。 (分数:40.00)填空项 1:_ (正确答案:1)解析:54.数据独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,称为 1。(分数:40.00)填空项 1:_ (正确答案:物理独立性)解析:数据独立性包括数据的物理独立性和逻辑独立性。物理独立性是指用户的应用程序与
43、存储在磁盘上 的数据库中数据是相互独立的。数据在磁盘上的数据库中怎样存储是由 DBMS 管理的,用户程序不需要了 解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变时,应用程序不用改变。逻辑独 立性是指用户的应用程序与数据库的逻辑结构是相互独立的,也就是说,数据的逻辑结构改变了,用户程 序也可以不变。55.以下程序运行后的输出结果是 1。 void fun(int x,int y) x=x+y;y=x-y;x=x-y; printf(“%d,%d,“,x,y); main( ) int x=2,y=3; fun(x,y); printf(“%d,%d/n“,x,y); (分数:4
44、0.00)填空项 1:_ (正确答案:3,2,2,3)解析:本题考点是局部变量的作用范围。56.有以下程序 #include stdio.h main( ) char ch1,ch2; int n1,n2; ch1=getchar( ); ch2=getchar( ); n1=ch1-0; n2=n1*10+(ch2-0); printf(“%d/n”,n2); 程序运行时输入:12,执行后输出结果是 1。 (分数:40.00)填空项 1:_ (正确答案:12)解析:57.以下程序段的输出结果是 1。 int i=9; printf(“%o/n“,i); (分数:40.00)填空项 1:_ (
45、正确答案:11)解析:58.以下 sstrcpy1 函数实现字符串复制,即将 t 所指字符串复制到 s 所指向内存空间中,形成一个新的字符串 s。请填空。 void sstrcpy(char *s,char *t) while(*s+= 2); main( ) char str1100,str2 =”abcdefgh”; sstrcpy(str1,str2); printf(“%s/n”,str1); (分数:40.00)填空项 1:_ (正确答案:*t+)解析:59.以下程序中,函数 sumColumM 的功能是:求出 M 行 N 列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参
46、传回主函数输出。请填空。 #define M 2 #define N 4 void SumColumMin(int aMN,int *sum) int i,j,k,s=0; for(i=0;iN;i+ k=0; for(j=1;jM;j+ if(akiaji)k=j; s+= 1; 2=s; main( ) int xMN=3,2,5,1,4,1,8,3,s; SumColumMin( 3); printf(“%d/n“,s); (分数:40.00)填空项 1:_ (正确答案:aki)解析:60.以下程序运行后的输出结果是 1。 #include main2 char ch=“abc“,x34; int i; for(i=0