1、二级 C 语言-611 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.设栈的顺序存储空间为 S(0:49),栈底指针 bottom=49,栈顶指针 top=30(指向栈顶元素)。则栈中的元素个数为_。(分数:1.00)A.30B.29C.20D.192.设数据元素的集合 D=1,2,3,4,5,则满足下列关系 R 的数据结构中为线性结构的是_。(分数:1.00)A.R=(1,2),(3,4),(5,1)B.R=(1,3),(4,1),(3,2),(5,4)C.R=(1,2),(2,3),(4,5)D.R=(1,3),(2,4),(3,5)
2、3.下列叙述中错误的是_。(分数:1.00)A.在带链队列中,队头指针和队尾指针都是在动态变化的B.在带链栈中,栈顶指针和栈底指针都是在动态变化的C.在带链栈中,栈顶指针是在动态变化的,但栈底指针是不变的D.在带链队列中,队头指针和队尾指针可以指向同一个位置4.深度为 7 的完全二叉树中共有 125 个结点,则该完全二叉树中的叶子结点数为_。(分数:1.00)A.62B.63C.64D.655.计算机软件的构成是_。(分数:1.00)A.源代码B.程序和数据C.程序和文档D.程序、数据及相关文档6.软件设计中模块划分应遵循的准则是_。(分数:1.00)A.低耦合低内聚B.高耦合高内聚C.低耦合
3、高内聚D.内聚与耦合无关7.使用白盒测试方法时,设计测试用例应根据_。(分数:1.00)A.程序的内部逻辑B.程序的复杂结构C.程序的功能D.使用说明书8.逻辑模型是面向数据库系统的模型,下面属于逻辑模型的是_。(分数:1.00)A.关系模型B.谓词模型C.物理模型D.实体联系模型9.设有关系表学生表 S(学号,姓名,性别,年龄,身份证号),每个学生学号惟一。除属性学号外,也可以作为键的是_。(分数:1.00)A.姓名B.身份证号C.姓名,性别,年龄D.学号,姓名10.有三个关系表 R、S 和 T 如下,其中三个关系对应的关键字分别为 A,B 和复合关键字(A,B)。 (分数:1.00)A.实
4、体完整性约束B.参照完整性约束C.用户定义的完整性约束D.关系完整性约束11.以下选项中叙述正确的是_。(分数:1.00)A.C 程序中的语句要经过编译才能转换成二进制机器指令B.算法需要包含所有三种基本结构C.有些算法不能用三种基本结构来表达D.简单算法的操作步骤不能超过 20 步12.以下叙述错误的是_。(分数:1.00)A.在进行模块化程序设计的时候,应首先完成每个模块的编写调试,再集中考虑主程序中的算法B.同一程序各模块可由一组人员同时进行编写调试,可提高编写程序的效率C.模块化的程序设计是采用自顶向下、逐步细化的原则D.程序的每个模块都可通过三种基本结构实现13.以下选项中,合法的实
5、数是_。(分数:1.00)A.1.5E2B.E1.1C.2.10ED.1.9E1.414.以下叙述正确的是_。(分数:1.00)A.C 程序总是以 main()作为程序执行的起始行B.main()函数若不带参数,其后面的一对圆括号可省略C.函数体内的定义语句和可执行语句允许任意穿插出现D.C 语言中的语句之间必须用分号作为分隔符15.设有以下程序段: int y; y=rand()%30+1; 则变量 y 的取值范围是_。(分数:1.00)A.0y30B.0y30C.1y30D.1y3016.若变量已正确定义,则以下 for 循环_: for(x=0,y=0;(y!=123)x+);(分数:1
6、00)A.执行 4 次B.执行 3 次C.执行次数不确定D.执行 123 次17.有以下程序: #includestdio.h main() int x=0x13; printf(“INT:%d/n“,x+1); 程序运行后的输出结果是_。(分数:1.00)A.INT:14B.INT:13C.INT:12D.INT:2018.有如下程序: #includestdio.h main() int a=0,b=1; if(+a=b+) printf(“T“); else printf(“F“); printf(“a=%d,b=%d/n“,a,b); printf(“/n“); 程序运行后的输出结果
7、是_。(分数:1.00)A.Ta=0,b=1B.Fa=1,b=2C.Ta=1,b=2D.Fa=0,b=219.有如下程序: #includestdio.h main_ int i,data; scanf(“%d“, for(i=0;i5,i+) if(idata)break; printf(“%d,“,i); printf(“/n“); 程序运行时,从键盘输入:3回车后,程序输出结果为_。(分数:1.00)A.3,4,B.0,1,C.3,4,5,D.0,1,2,3,20.以下程序的功能是判断输入的一个整数是否能被 3 或 7 整除,若能整除,输出 YES,否则输出 NO。在下划线处应填入的选项
8、是_。 #includestdio.h main() int k; printf(“Enter a int number:“);scanf(“%d“, if_printf(“YES/n“); else printf(“NO/n“); printf(“%d/n“,k%3); (分数:1.00)A.(k%3=0)|(k%7=0)B.(k/3=0)|(k/7=0)C.(k%3=0)|(k%7=0)D.(k%3=0) if(“0“=0)putchar(“2“); if(“a“b“)putchar(“3“); 程序运行后的输出结果是_。(分数:1.00)A.1B.123C.23D.322.有以下程序:
9、includestdio.h main() int i,k; int array 42=1,0,0,2,9,3; for(i=0;i2;i+) for(k=0;k3;k+) printf(“%d,“,arrayki); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.1,0,2,0,0,9,B.1,2,4,9,6,0,C.2,9,0,0,1,4,D.1,2,0,1,4,1,23.有如下程序: #includestdio.h int sub(double a,double b) return(int)(a-b); main_ printf(“%d/n“,sub(3.
10、8,2.1); 程序运行后的输出结果是_。(分数:1.00)A.2.0B.1.7C.2D.124.以下关于指针的叙述正确是_。(分数:1.00)A.所有类型的指针变量所占内存的大小是一样的B.指针变量所占内存的大小与其类型有关,char 型指针变量只占 1 个字节,double 型指针变量占 8 个字节C.指针变量可直接指向任何类型的变量,而不会出现编译或运行错误D.指针变量既可以直接指向结构体,也可直接指向结构体中某个成员,而不会出现编译或运行错误25.有以下程序段: int*p1,*p2,a10; p1=a; p2= 则 p2-p1 的值为_。(分数:1.00)A.5B.10C.12D.无
11、法确定26.有以下程序: #includestdio.h void fun(int*x,int s,int n) int i; for(i=s;i=n;i-) *(x+i+3)=*(x+i); main() int m=0,1,2,3,4,5,6,7,8,9,k; fun(m,10-4,3); for(k=0;k10;k+) printf(“%d“,mk); 程序的运行结果是_。(分数:1.00)A.0123456345B.0123453456C.0123456666D.012345456927.有以下程序: #includestdio.h main() char*s6=“ABCD“,“EFG
12、H“,“IJKL“,“MNOP“,“QRST“,“UVWX“,*p; int i; p=s; for(i=0;i4;i+)printf(“%s“,pi); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.ABCDEFGHIJKLMNOPB.ABCDEFGHIJKLC.ABCDD.AEIM28.设有一个 M*N 的矩阵已经存放在一个 M 行 N 列的数组 x 中,且有以下程序段: sum=0; for(i=0;iM;i+)sum+=xi0+xiN-1; for(j=1;jN-1;j+)sum+=x0j+xM-1j; 以上程序段计算的是_。(分数:1.00)A.矩阵两条
13、对角线元素之和B.矩阵所有不靠边元素之和C.矩阵所有元素之和D.矩阵所有靠边元素之和29.当没有指定 C 语言中函数形参的存储类别时,函数形参的存储类别是_。(分数:1.00)A.外部(extern)B.静态(static)C.寄存器(register)D.自动(auto)30.有以下程序: #includestdio.h main() char s1=“programe“,s2=“Language“; char*p1=s1,*p2=s2; int k; for(k=0;k8;k+) if(*(p1+k)=*(p2+k) printf(“%s/n“,*(p1+k); 程序的运行结果是_。(分数
14、1.00)A.grame ame eB.g a eC.programeD.无输出字符31.有以下程序: #includestdio.h #includestring.h main() char w20,a510=“abcdef“,“ghijkl“,“mnopq“,“rstuv“,“wxyz.“; int i; for(i=0;i5;i+) wi=aistrlen(ai)-1; w5=“/0“; puts(w); 程序的运行结果是_。(分数:1.00)A.flqv.B.agmrwC.ekpuyD.flqvz32.有以下程序: #includestdio.h main() int c,d; c=
15、131)|1; d=(131)|1; printf(“%d,%d/n“,c,d); 程序运行后的输出结果是_。(分数:1.00)A.6,1B.1,1C.7,1D.7,233.有如下程序: #includestdio.h void get_put() char ch; ch=getehar(); if(ch!=“/n“)get_put(); putchar(ch); main() get_put();printf(“/n“); 程序运行时,输入 1234回车,则输出结果是_。(分数:1.00)A.1234B.4321C.4444D.111134.以下叙述错误的是_。(分数:1.00)A.未经赋
16、值的全局变量值不确定B.未经赋值的 auto 变量值不确定C.未经赋值的 register 变量值不确定D.未经赋值的静态局部变量值为 035.有如下程序: #includestdio.h #define D(x)4*x+1 main() int i=2,j=4; printf(“%d/n“,D(i+j); 程序运行后的输出结果是_。(分数:1.00)A.25B.13C.9D.1236.有以下程序: #includestdio.h struct Sint a;int*b; main() int x1=3,4,x2=6,7; struct S x=1,x1,2,x2; printf(“%d,%d
17、/n“,*x0.b,*x1.b); 程序的运行结果是_。(分数:1.00)A.1,2B.3,6C.4,7D.变量的地址值37.设有如下语句: typedef struct Date int year; int month; int day; DATE; 则以下叙述中错误的是_。(分数:1.00)A.DATE 是用户定义的结构体变量B.struct Date 是用户定义的结构体类型C.DATE 是用户说明的新结构体类型名D.struct 是结构体类型的关键字38.有以下程序: #includestdio.h #includestdlib.h void fun(int*s,int x23) *s=
18、x1+1); main() int a23=1,2,3,4,5,6,*p; p=(int*)malloc(sizeof(int); fun( printf(“%d/n“,*p); 程序的运行结果是_。(分数:1.00)A.6B.2C.5D.339.有定义:int a=64,b=8;,则表达式(a if(fp=fopen(“test.txt“,“w“)=NULL) printf(“不能打开文件!“); exit(0); else printf(“成功打开文件!“); 若指定文件 test.txt 不存在,且无其他异常,则以下叙述错误的是_。(分数:1.00)A.输出“不能打开文件!”B.输出
19、成功打开文件!”C.系统将按指定文件名新建文件D.系统将为写操作建立文本文件二、程序填空题(总题数:1,分数:18.00)41.下列给定程序中,函数 fun 的功能是:把形参 a 所指数组中的偶数按原顺序依次存放到 a0、a1、a2中,把奇数从数组中删除,偶数的个数通过函数值返回。 例如,若 a 所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除奇数后,a 所指数组中的数据为:4、2、6、8,返回值为 4。 请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 注意: 不得增行或删行,也不得更改程序的结构! 试题源程序 #includestdio.h #d
20、efine N 9 int fun(int a,int n) int i,j; j=0; for(i=0;in;i+) /*found*/ if( 1=0) /*found*/ 2=ai;j+; /*found*/ return 3; main() int bN=9,1,4,2,3,6,5,8,7,i,n; printf(“/nThe original data:/n“); for(i=0,iN,i+) printf(“%4d“,bi); printf(“/n“); n=fun(b,N); printf(“/nThe number of even:%d/n“,n); prinff(“/nThe
21、n even:/n“); for(i=0;in;i+) printf(“%4d“,bi); printf(“/n“); (分数:18.00)三、程序修改题(总题数:1,分数:18.00)42.下列给定程序中函数 fun 的功能是:将 m(1m10)个字符串连接起来,组成一个新串,放入 pt 所指存储区中。例如:把三个串“abe”、“CD”、“EF”连接起来,结果是“abcCDEF”。请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 试题源程序 #includestdio.h #includestring.h void fun(
22、char str10,int m,char*pt) /*found*/ Int k,q,i; for(k=0;km;k+) q=strlen(strk); for(i=0;iq;i+) /*found*/ pti=strk,i; pt+=q; pt0=0; main() int m,h; char s1010,p120; printf(“Please enter m:“); scanf(“%d“,gets(s0); printf(“Please enter%d string:“,m); for(h=0;hm;h+)gets(sh); fun(s,m,p); printf(“The result
23、 is:%s“,p); (分数:18.00)_四、程序设计题(总题数:1,分数:24.00)43.编写函数 fun,其功能是:将两个两位的正整数 a、b 合并成一个整数放在 c 中。合并的方式是:将 a数的十位和个位数依次放在 c 数的十位和千位上,b 数的十位和个位数依次放在 c 数的百位和个位上。 例如,当 a=45,b=12 时,调用该函数后,c=5142。 注意: 数据文件 IN.DAT 中的数据不得修改。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入编写的若干语句。 试题源程序 #includestdlib.h #includestdio.h #i
24、ncludeconio.h void fun(int a,int b,long*c) void main() int a,b; long c; system(“CLS“); printf(“Input a,b:“); scanf(“%d%d“, fun(a,b, printf(“The result is:%ld/n“,c); (分数:24.00)_二级 C 语言-611 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.设栈的顺序存储空间为 S(0:49),栈底指针 bottom=49,栈顶指针 top=30(指向栈顶元素)。则栈中的元素个数
25、为_。(分数:1.00)A.30B.29C.20 D.19解析:解析 栈是一种特殊的线性表,它所有的插入与删除操作都限定在表的同一端进行。入栈运算即在栈顶位置插入一个新元素,退栈运算即取出栈顶元素赋予指定变量。在内存中,栈的增大方向是地址递减,元素依次存储在单元 30:49 中,个数为:49-30+1=20 个。2.设数据元素的集合 D=1,2,3,4,5,则满足下列关系 R 的数据结构中为线性结构的是_。(分数:1.00)A.R=(1,2),(3,4),(5,1)B.R=(1,3),(4,1),(3,2),(5,4) C.R=(1,2),(2,3),(4,5)D.R=(1,3),(2,4),
26、3,5)解析:解析 一个非空的数据结构如果满足以下两个条件:有且只有一个根结点;每一个结点最多有一个前件,也最多有一个后件,称为线性结构。A 项中有两个根结点 3 和 5,错误;B 项根结点为 5,之后的结点除最后一个结点外都只有一个前件和后件,正确;C 项有两个根结点 1 和 4,错误;D 项有两个根结点 1 和 2,错误。3.下列叙述中错误的是_。(分数:1.00)A.在带链队列中,队头指针和队尾指针都是在动态变化的B.在带链栈中,栈顶指针和栈底指针都是在动态变化的 C.在带链栈中,栈顶指针是在动态变化的,但栈底指针是不变的D.在带链队列中,队头指针和队尾指针可以指向同一个位置解析:解析
27、 带链的队列就是用一个单链表来表示队列,队列中的每一个元素对应链表中的一个结点,在入队和退队过程中,队头指针和队尾指针都是在动态变化的,A 项正确;带链的栈在入栈和退栈过程中栈底指针不变,栈顶指针随之变化,C 项正确;循环队列中当队列满或者空时,队头指针和队尾指针指向同一个位置,D 项正确。4.深度为 7 的完全二叉树中共有 125 个结点,则该完全二叉树中的叶子结点数为_。(分数:1.00)A.62B.63 C.64D.65解析:解析 完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。深度为 6 的满二叉树,结点个数为 2 6 -1=63,且第 6 层
28、的结点数为 2 6-1 =32 个,则第 7 层共有 125-63=62 个叶子结点,分别挂在第 6 层的左边 31 个结点上,加上第 6 层的最后 1 个叶子结点,该完全二叉树共有 63 个叶子结点。5.计算机软件的构成是_。(分数:1.00)A.源代码B.程序和数据C.程序和文档D.程序、数据及相关文档 解析:解析 计算机软件是程序、数据及相关文档的完整集合。6.软件设计中模块划分应遵循的准则是_。(分数:1.00)A.低耦合低内聚B.高耦合高内聚C.低耦合高内聚 D.内聚与耦合无关解析:解析 模块的独立程度由两个定性标准度量:内聚性和耦合性。耦合衡量不同模块彼此间互相依赖(连接)的紧密程
29、度。内聚衡量一个模块内部各个元素彼此结合的紧密程度。一般来说,模块划分要求模块之间的耦合尽可能弱,即模块尽可能独立,且要求模块的内聚程度尽可能高。7.使用白盒测试方法时,设计测试用例应根据_。(分数:1.00)A.程序的内部逻辑 B.程序的复杂结构C.程序的功能D.使用说明书解析:解析 白盒测试允许测试人员利用程序内部的逻辑结构及有关信息来设计或选择测试用例,对程序所有的逻辑路径进行测试。8.逻辑模型是面向数据库系统的模型,下面属于逻辑模型的是_。(分数:1.00)A.关系模型 B.谓词模型C.物理模型D.实体联系模型解析:解析 逻辑模型是面向数据库系统的模型,着重于在数据库系统一级的实现。成
30、熟并大量使用的逻辑模型有层次模型、网状模型、关系模型和面向对象模型等。9.设有关系表学生表 S(学号,姓名,性别,年龄,身份证号),每个学生学号惟一。除属性学号外,也可以作为键的是_。(分数:1.00)A.姓名B.身份证号 C.姓名,性别,年龄D.学号,姓名解析:解析 候选键是二维表中能惟一标识元组的最小属性集。一个二维表有多个候选键,则选定其中一个作为主键供用户使用。学生学号与身份证号均可惟一标识一位学生,都可以作为主键。10.有三个关系表 R、S 和 T 如下,其中三个关系对应的关键字分别为 A,B 和复合关键字(A,B)。 (分数:1.00)A.实体完整性约束B.参照完整性约束 C.用户
31、定义的完整性约束D.关系完整性约束解析:解析 实体完整性约束是指,若属性 M 是关系的主键,则属性 M 中的属性值不能为空值。参照完整性约束是指,若属性(或属性组)A 是关系 M 的外键,它与关系 M 的主码相对应,则对于关系 M 中的每个元组在 A 上的值必须为:要么取空值,要么等于关系 M 中某个元组的主码值。表 T 中属性 B 为关系 T 的外键,它与关系 S 的主键相对应,则 T 中元组在 B 上应该为空或者与 S 中主键值相等,因此记录项(b,q,4)违反参照完整性约束。11.以下选项中叙述正确的是_。(分数:1.00)A.C 程序中的语句要经过编译才能转换成二进制机器指令 B.算法
32、需要包含所有三种基本结构C.有些算法不能用三种基本结构来表达D.简单算法的操作步骤不能超过 20 步解析:解析 编译就是把高级语言变成计算机可以识别的二进制语言,不经过编译的源程序是不能运行的,A 项正确。算法不一定要包含所有三种基本结构,B 项错误。结构化程序主要由 3 种基本控制结构组成,循环结构、选择结构、顺序结构,它们组成的算法结构可以解决任何复杂的问题,C 项错误。算法的复杂程度不是由操作步骤多少决定的,而是由时间复杂度与空间复杂度来衡量,D 项错误。12.以下叙述错误的是_。(分数:1.00)A.在进行模块化程序设计的时候,应首先完成每个模块的编写调试,再集中考虑主程序中的算法 B
33、同一程序各模块可由一组人员同时进行编写调试,可提高编写程序的效率C.模块化的程序设计是采用自顶向下、逐步细化的原则D.程序的每个模块都可通过三种基本结构实现解析:解析 进行模块化设计时,首先设计框架,并定义和调试好各个模块之间的输入输出关系,完成各个模块的编写调试后再集中编译,A 项错误;各个模块可以由不同人员同时进行编写调试,提高编写程序的效率,B 项正确;模块化的程序设计采用自顶向下、逐步细化的原则,C 项正确;结构化程序使用三种基本结构可以解决任何复杂的问题,D 项叙述正确。13.以下选项中,合法的实数是_。(分数:1.00)A.1.5E2 B.E1.1C.2.10ED.1.9E1.4
34、解析:解析 用尾数指数形式表示浮点数时,E 的右侧必须是整数且不能为空。14.以下叙述正确的是_。(分数:1.00)A.C 程序总是以 main()作为程序执行的起始行 B.main()函数若不带参数,其后面的一对圆括号可省略C.函数体内的定义语句和可执行语句允许任意穿插出现D.C 语言中的语句之间必须用分号作为分隔符解析:解析 main()函数后面的括号不可以省略,B 项错误;函数体内的定义语句应该出现在执行语句的前面,C 项错误;C 语言中的某些语句可以不用分号,例如 if 语句,宏定义,D 项错误。15.设有以下程序段: int y; y=rand()%30+1; 则变量 y 的取值范围
35、是_。(分数:1.00)A.0y30B.0y30 C.1y30D.1y30解析:解析 rand()产生随机整数,任何整数对 30 求余得到的整数范围为 029,则 y 的取值范围为1y30 或者 0y30,y 是整数,0y30。16.若变量已正确定义,则以下 for 循环_: for(x=0,y=0;(y!=123)x+);(分数:1.00)A.执行 4 次 B.执行 3 次C.执行次数不确定D.执行 123 次解析:解析 循环判断语句为“(y!=123) printf(“INT:%d/n“,x+1); 程序运行后的输出结果是_。(分数:1.00)A.INT:14B.INT:13C.INT:1
36、2D.INT:20 解析:解析 0x13 是十六进制数,%d 需要输出十进制数,先将 0x13 换算成十进制:161+16 0 3=16+3=19,输出 INT=x+1=20。18.有如下程序: #includestdio.h main() int a=0,b=1; if(+a=b+) printf(“T“); else printf(“F“); printf(“a=%d,b=%d/n“,a,b); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.Ta=0,b=1B.Fa=1,b=2C.Ta=1,b=2 D.Fa=0,b=2解析:解析 程序执行过程为:判断+a=b+
37、是否成立,+a 前缀运算先加 1,则 a=1,b+后缀运算先取值,则 b=1,1=1 成立,输出 T,之后 b=2,输出 a=1,b=2。19.有如下程序: #includestdio.h main_ int i,data; scanf(“%d“, for(i=0;i5,i+) if(idata)break; printf(“%d,“,i); printf(“/n“); 程序运行时,从键盘输入:3回车后,程序输出结果为_。(分数:1.00)A.3,4,B.0,1,C.3,4,5,D.0,1,2,3, 解析:解析 break 语句作用是结束整个循环过程,不再判断循环的条件是否成立,在嵌套循环中,
38、break 语句只跳出最内层的一层循环。程序执行过程为:输入 3,则 data=3;执行 for 循环,在 i=3 时,if 条件不成立,执行语句 printf(“%d,“,i);依次输出 i 值,0,1,2,3;直到 i=4 时,if 条件成立,执行 break 退出 for 循环。20.以下程序的功能是判断输入的一个整数是否能被 3 或 7 整除,若能整除,输出 YES,否则输出 NO。在下划线处应填入的选项是_。 #includestdio.h main() int k; printf(“Enter a int number:“);scanf(“%d“, if_printf(“YES/n
39、); else printf(“NO/n“); printf(“%d/n“,k%3); (分数:1.00)A.(k%3=0)|(k%7=0) B.(k/3=0)|(k/7=0)C.(k%3=0)|(k%7=0)D.(k%3=0) if(“0“=0)putchar(“2“); if(“a“b“)putchar(“3“); 程序运行后的输出结果是_。(分数:1.00)A.1 B.123C.23D.3解析:解析 “/0“是转义字符,表示空字符,故“/0“=0 成立,输出 1;“0“是字符常量,其值为 0 的ASCII 码值,“a“和“b“都是字符常量,“b“a“,不执行 if 后面的语句,所以最后
40、输出只有 1。22.有以下程序: #includestdio.h main() int i,k; int array 42=1,0,0,2,9,3; for(i=0;i2;i+) for(k=0;k3;k+) printf(“%d,“,arrayki); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.1,0,2,0,0,9, B.1,2,4,9,6,0,C.2,9,0,0,1,4,D.1,2,0,1,4,1,解析:解析 程序定义一个 4 行 2 列数组 array,初始化赋值 6 个数,其余自动为 0,根据 for 循环,第一次输出第一列前三行数,分别是 1,0,
41、2;第二次输出第二列前三行数,分别是 0,0,9。23.有如下程序: #includestdio.h int sub(double a,double b) return(int)(a-b); main_ printf(“%d/n“,sub(3.8,2.1); 程序运行后的输出结果是_。(分数:1.00)A.2.0B.1.7C.2D.1 解析:解析 在类型转换过程中,如果较高类型转换成较低类型,直接忽略多余位数。程序执行过程为:调用函数 sub(3.8,2.1),3.8-2.1=1.7(double 类型),(int)强制转换将 1.7 转换成 int 类型 1,然后返回 1 并输出。24.以下
42、关于指针的叙述正确是_。(分数:1.00)A.所有类型的指针变量所占内存的大小是一样的 B.指针变量所占内存的大小与其类型有关,char 型指针变量只占 1 个字节,double 型指针变量占 8 个字节C.指针变量可直接指向任何类型的变量,而不会出现编译或运行错误D.指针变量既可以直接指向结构体,也可直接指向结构体中某个成员,而不会出现编译或运行错误解析:解析 所有变量地址值所占字节都相同,故指针变量所占内存大小相同,A 项正确,B 项错误。只能把具有相同类型的变量地址,存放到指针变量中,结构体变量与某个成员类型不同,不能用同样的指针指向它们,CD 两项错误。25.有以下程序段: int*p
43、1,*p2,a10; p1=a; p2= 则 p2-p1 的值为_。(分数:1.00)A.5 B.10C.12D.无法确定解析:解析 将数组名赋值给指针,表示指针指向数组首地址,p1=a,表示把 a0地址赋给p1,p2= for(i=s;i=n;i-) *(x+i+3)=*(x+i); main() int m=0,1,2,3,4,5,6,7,8,9,k; fun(m,10-4,3); for(k=0;k10;k+) printf(“%d“,mk); 程序的运行结果是_。(分数:1.00)A.0123456345B.0123453456 C.0123456666D.0123454569解析:解
44、析 程序的执行过程为:定义数组 m,并为其赋初值,数组长度为 10。调用函数 fun(m,6,3)实现将数组下标值从 6 到 3 的元素依次向下标值大的方向移动三个位置,for 循环结束之后数组为m=0,1,2,3,4,5,3,4,5,6。依次输出数组元素,结果为 0123453456。27.有以下程序: #includestdio.h main() char*s6=“ABCD“,“EFGH“,“IJKL“,“MNOP“,“QRST“,“UVWX“,*p; int i; p=s; for(i=0;i4;i+)printf(“%s“,pi); printf(“/n“); 程序运行后的输出结果是_
45、分数:1.00)A.ABCDEFGHIJKLMNOP B.ABCDEFGHIJKLC.ABCDD.AEIM解析:解析 程序定义数组指针 s 以及指针的指针 p,p 指向数组指针 s。pi为 s 的第 i 行字符串,因此程序输出 s 的前四行字符串 ABCDEFGHIJKLMNOP。28.设有一个 M*N 的矩阵已经存放在一个 M 行 N 列的数组 x 中,且有以下程序段: sum=0; for(i=0;iM;i+)sum+=xi0+xiN-1; for(j=1;jN-1;j+)sum+=x0j+xM-1j; 以上程序段计算的是_。(分数:1.00)A.矩阵两条对角线元素之和B.矩阵所有不靠边元素之和C.矩阵所有元素之和D.矩阵所有靠边元素之和 解析:解析 程序执行过程为:第一个 for 循环实现对数组 x 的第一列和第 N 列求和。第二个 for 循环在上一个 for 循环结果上实现对第一行和第 M 行从第二个元素到第 N-1 个元素的求和,因此,程序段计算的是矩阵所有靠边元素之和。29.当没有指定 C 语言中函数形参的存储类别时,函数形参的存储类别是_。(分数:1.00)A.外部(exter