1、国家二级( C语言)机试模拟试卷 158及答案与解析 一、选择题 1 下列叙述中正确的是 ( )。 ( A)程序执行的效率与数据的存储结构密切相关 ( B)程序执行的效率只取决于程序的控制结构 ( C)程序执行的效率只取决于所处理的数据量 ( D)以上说法均错误 2 软件按功能可以分为应用软件、系统软件和支撑软件 (或工具软件 )。下列各项中属于应用软件的是 ( )。 ( A)学生成绩管理系统 ( B) C语言编译程序 ( C) UNIX操作系统 ( D)数据库管理系统 3 通常软件测试实施的步骤 是 ( )。 ( A)集成测试、单元测试、确认测试 ( B)单元测试、集成测试、确认测试 ( C
2、)确认测试、集成测试、单元测试 ( D)单元测试、确认测试、集成测试 4 下列叙述中错误的是 ( )。 ( A)系统总体结构图支持软件系统的详细设计 ( B)软件设计是将软件需求转换为软件表示的过程 ( C)数据结构与数据库设计是软件设计的任务之一 ( D) PAD图是软件详细设计的表示工具 5 对长度为 n的线性表作快速排序,在最坏情况下,比较次数为 ( )。 ( A) n ( B) n-1 ( C) n(n-1) ( D) n(n-1) 2 6 某二叉树共有 7个结点,其中叶子结点只有 1个,则该二叉树的深度为 (假设根结点在第 1层 )( )。 ( A) 3 ( B) 4 ( C) 6
3、( D) 7 7 下列关于栈的叙述中,正确的是 ( )。 ( A)栈顶元素最先能被删除 ( B)栈顶元素最后才能被删除 ( C)栈底元素永远不能被删除 ( D)栈底元素最先能被删除 8 在数据库中,数据模型包括数据结构、数据操作和 ( )。 ( A)数据约束 ( B)数据类型 ( C)关系运算 ( D)查询 9 一名教师可讲授多门课程,一门课程可由多名教师讲授。则实体教师和课程间的联系是 ( )。 ( A) 1: 1联系 ( B) 1: m联系 ( C) m: 1联系 ( D) m: n联系 10 支持子程序调用的数据结构是 ( )。 ( A)栈 ( B)树 ( C)队列 ( D)二叉树 11
4、 以下正确的说法是 ( )。 ( A)用户若需要调用标准库函数,调用前必须重新定义 ( B)用户可以重新定义标准库函数,但若重新定义,该函数将失去原有意义 ( C)用户系统根本不允许用户重新定义库函数 ( D)用户若 需要调用库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统会自动寻找该文件 12 下列叙述中错误的是 ( )。 ( A) C程序可以由一个或多个函数组成 ( B) C程序可以由多个程序文件组成 ( C)一个 C语言程序只能实现一种算法 ( D)一个 C函数可以单独作为一个 C程序文件存在 13 设有定义: int a; float b; 执行 scanf(“
5、 2d f“, &a, &b);语句时,若从键盘输入 876543 0,则 a和 b的值分别是 ( )。 ( A) 87和 6 0 ( B) 876和 543 0 ( C) 87和 543 0 ( D) 76和 543 0 14 若变量均已正确定义并赋值,以下各项中属于合法的 C语言赋值语句是 ( )。 ( A) x=n 2 5; ( B) x=y=5; ( C) x+n=i; ( D) x=5=4+1; 15 以下各项中,属于合法的转义字符是 ( )。 ( A) x41 ( B) 0x41 ( C) X41 ( D) 0X41 16 有以下程序: #include stdio h main(
6、) int a=3: a+=a-=a*a; printf(“ d n“, a); 程序的输出结果是 ( )。 ( A) 0 ( B) 9 ( C) 3 ( D) -12 17 设有定义: char s81; int i=0; 以下不能将一行 (不超过 80个字符 )带有空格的字符串正确读入的语句或语句组是( )。 ( A) gets(s); ( B) while(si+=getchar()!= n); si= 0; ( C) scanf(“ s“, s); ( D) doscanf(“ c“, &si); while(si+!= n); si= 0; 18 有以下程序: #include st
7、dio h main() char c1, c2, c3, c4, c5, c6; scanf(“ c c c c“, &c1, &c2, &c3, &c4); c5=getchar(); c6=getchar(); putchar(e1); putchar(c2); printf(“ c c n“, c5, c6); 程序运行后,若从键盘输入 (从第 1列开始 ): 123回车 45678回车 则输出结果是 ( )。 ( A) 1256 ( B) 1245 ( C) 1278 ( D) 1267 19 有以下程序: #include stdio h main() int a, b; for(
8、a=0; a 3; a+) scanf(“ d“, &b); switch(b) default: printf(“ d“, +b); case1: printf(“ d“, +b); case2: printf(“ d“, +b); 执行时输入: 1 2 3回车,则输出结果是 ( )。 ( A) 2 3 3 4 5 6 ( B) 2 3 4 ( C) 2 2 3 4 4 4 ( D) 2 3 4 3 4 4 20 对于 if(表达式 )语句,以下叙述中正确的是 ( )。 ( A) “表达式 ”的值可以是任意合法的数值 ( B)变量不能出现在 “表达式 ”中 ( C)常量不能出现在 “表达式
9、”中 ( D)如果 “表达式 ”的值不是逻辑值,程序会出编译错误 21 若有以下程序: #include stdio h main() int c; C=13|15; printf(“ d n“, c); 则程序的输出结果是 ( )。 ( A) 13 ( B) 15 ( C) 18 ( D) 5 22 有以下程序: #include stdio h main() int a=1, b=0; if(-a)b+; else if(a=0)b+=2; else b+=3; printf(“ d n“, b); 程序运行后的输出结果是 ( )。 ( A) 0 ( B) 1 ( C) 2 ( D) 3
10、23 有以下程序: #include stdio h main() int i, array6=1, 5, 0, 4; for(i=0; i 5; i+) printf(“ d“, arrayi); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) 0 4 0 4 0 ( B) 1 5 0 4 0 ( C) 1 5 5 4 0 ( D) 1 2 1 2 0 24 以下叙述中正确的是 ( )。 ( A)数组说明符的一对方括号中只能使用整型常量,而不能使用表达式 ( B)一条语句只能定义一个数组 ( C)每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元
11、( D)在引用数组元素时,下标表达式 可以使用浮点数 25 若有定义语句: int m 3=1, 2, 3, 4, 5, 6, 7;,则与该语句等价的是( )。 ( A) int m 3=1, 2, 3, 4, 5, 6, 7; ( B) int m 3=1, 2, 3, 4, 5, 6, 7; ( C) int m 3=1, 2, 3, 4, 5, 6, 7; ( D) int m 3=1, 2, 3, 4, 5, 6, 7; 26 以下叙述中正确的是 ( )。 ( A) char, c1, c2, *c3, c440;是合法的变量定义语句 ( B)数组下标的下限由数组中第一个非零元素的位置
12、决定 ( C)数组下标的下限由数组中第一个被赋值元素的位置决定 ( D)数组下标的下限是 1 27 有以下程序: #include stdio h main() int a=3; do printf(“ d, “, a-=2); while(!(-a); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) 1, -3, ( B) 1, -2, ( C) 3, 0, ( D) 1, 0, 28 若有定义: char s30=0; 运行时输入: This is a string回车 则以下不能正确读入整个字符串 This is a string到字符数组 s中的语句组是 ( )
13、。 ( A) scanf(“ s“, s); ( B) gets(s); ( C) for(i=0; (c=getchar()!= n; i+)si=c; ( D) i=0; while(c=getchar()!= n)si+=c; 29 有以下程序: #include stdio h main() int x; for(x=3; x 6; x+) printf(x 2)?(“* d“): (“# d“), x); printf(“ n“); 程序的输出结果是 ( )。 ( A) *3#4*5 ( B) #3*4#5 ( C) *3*4#5 ( D) *3#4#5 30 有以下程序: #inc
14、lude stdio h void fun(int a, int b) int t; t=a; a=b; b=t; main() int c10=1, 2, 3, 4, 5, 6, 7, 8, 9, 0, i; for(i=0; i 10; i+=2) fun(ci, ci+1); for(i=0; i 10; i+) printf(“ d“, ci); printf(“ n“); 程序的运行结果是 ( )。 ( A) 1 2 3 4 5 6 7 8 9 0 ( B) 2 1 4 3 6 5 8 7 0 9 ( C) 0 9 8 7 6 5 4 3 2 1 ( D) 0 1 2 3 4 5 6
15、 7 8 9 31 有以下程序: #include stdio h int fun(int n) int a; if(n=1)return1; a=n+fun(n-1); return(a); main() printf(“ d n“, fun(5); 程序的输出结果是 ( )。 ( A) 10 ( B) 14 ( C) 15 ( D) 9 32 以下选项中,没有编译错误的是 ( )。 ( A) char str3=d, e, b, u, g, 0; ( B) char str15=“pass“, str26; str2=str1; ( C) char name10; name=“china“
16、; ( D) char str4; str4=“hello world“; 33 有以下程序: #include stdio h int add(int a, int b) return(a+b); main() int k, (*f)(), a=5, b=10; f=add; 则以下函数调用语句中错误的是 ( )。 ( A) k=*f(a, b); ( B) k=add(a, b); ( C) k=(*f)(a, b); ( D) k=f(a, b); 34 以下关 于 C语言函数参数传递方式的叙述中正确的是 ( )。 ( A)数据只能从实参单向传递给形参 ( B)数据可以在实参和形参之间双
17、向传递 ( C)数据只能从形参单向传递给实参 ( D) C语言的函数参数既可以从实参单向传递给形参,也可以在实参和形参之间双向传递,可视情况选择使用 35 设已有定义: float x; 则以下对指针变量 p进行定义且赋初值的语句中正确的是 ( )。 ( A) float*p=&; x; ( B) int*p=(float)x; ( C) float p=&; x; ( D) float*p=1024: 36 以下叙述中正确的是 ( )。 ( A)在 C语言中,预处理命令行都以 #开头 ( B)预处理命令行必须位于 C源程序的起始位置 ( C) #include stdio h必须放在 C程序
18、的开头 ( D) C语言的预处理不能实现宏定义和条件编译的功能 37 有以下程序: #include stdio h int fun1(int a, int b) return a+b; int fun2(int a, int b) return a-b; int fun(int(*t)(int, int), int x, int y) return(*t)(x, y); main() int x; X=fun(fun1, 9, 3); x+=fun(fun2, 8, 3); printf(“ d n“, x); 程序运行后的输出结果是 ( )。 ( A) 24 ( B) 23 ( C) 17
19、 ( D) 22 38 有以下程序: #include stdio h void sp(int*a) int b=2; a=&b; *a=*a*2; printf(“ d, “, *a); main() int k=3, *p=&k; sp(p); pfinff(“ d, d n“, k, *p); 则程序的输出结果是 ( )。 ( A) 4, 3, 3 ( B) 4, 3, 4 ( C) 6, 3, 6 ( D) 6, 6, 6 39 有以下程序: #include stdio h void my() char ch; ch=getchar(); if(ch!=c)my(); putchar
20、(ch); main() my(); 执行时,输入 abc回车,则输出结果是 ( )。 ( A) abc ( B) ababc ( C) bca ( D) cba 40 有以下程序: #include stdio h main() unsigned char a=8, c; c=a 3: printf(“ d n“, c); 程序运行后的输出结果是 ( )。 ( A) 32 ( B) 16 ( C) 1 ( D) 0 二、程序填空题 41 下列给定程序中,函数 fun的功能是:有 NN矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为 0。 例如,若 N=3,
21、有下列矩阵: 1 2 3 4 5 6 7 8 9 计算后结果为 1 0 0 6 5 0 10 14 9 请在程序的下画线处填入正确的内容并把下画线删除。使程序得出正确的结果。 注意:不得增行或删行,也不得改程序的结构 ! 试题程序: #include stdio h #define N4 三、程序修改题 42 在主函数中用键盘输入若干个数放入数组中,用 0结束输入并放在最后一个元素中。下列给定程序中,函数 fun的功能是:计算数组元素中所有值为正数 的平均值 (不包括 0)。 例如,数组中元素中的值依次为: 39, -47, 21, 2, -8, 15, 0,则程序的运行结果为 19 2500
22、00。 请改正程序中的错误,使它能得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h double fun(int x) *found* int sum=0 四、程序设计题 43 假定输入的字符串中只包含字母和 *号。请编写函数 fun,其功能是:除了尾部的 *号之外,将字符中的其他 *号全部删 除。形参 p已指向字符串中最后的一个字母。在编写函数时,不得使用 C语言提供的字符串函数。 例如,字符串中的内容为 *A*BC*DEF*G*,删除后,字符串中的内容应当是 ABCDEFG*。 注意:请勿改动主函数 main和其他函数中的任何内
23、容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include stdio h voidfun(char*a, cha 国家二级( C语言)机试模拟试卷 158答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 程序执行的效率与数据的存储结构、数据的逻辑结构、程序的控制结构以及所处理的数据量等有关。 2 【正确答案】 A 【试题解析】 软件按功能可以分为:应用软件、系统软件、支撑软件。操作系统、编译程序、汇编程序、网络软件、数据库管理系统都属于系统软件。所以B、 C、 D选项都是系统软件,只有 A选项是应用软件。 3 【正确答案】 B 【试题解析】 软件测试过程一般
24、按 4个步骤进行,即单元测试、集成测试、验收测试 (确认测试 )和系统测试。故答案应该选 B。 4 【正确答案】 A 【试题解析】 详 细设计的任务是为软件结构图而非总体结构图中的每一个模块确定实现算法和局部数据结构、用某种选定的表达工具表示算法和数据结构的细节,因此 A选项描述错误。 5 【正确答案】 D 【试题解析】 快速排序最坏情况就是每次选的基准数都和其他数做过比较,共需比较 (n-1)+(n-2)+1=n(n -1) 2,故 D选项正确。 6 【正确答案】 D 【试题解析】 根据二叉树的基本性质:在任意一棵二叉树中,度为 0的叶子结点总比度为 2的结点多一个,因此本题中度为 2的结点
25、为 1-1=0个,据此可以知道本题中的二 叉树的每一个结点都有一个分支,所以共有 7个结点、共 7层,即深度为 7,选择 D。 7 【正确答案】 A 【试题解析】 栈是 “先进后出 ”的数据结构,因此栈顶元素最后入栈却最先被删除,栈底元素最先入栈却最后被删除,答案为 A。 8 【正确答案】 A 【试题解析】 数据模型是数据特征的抽象,从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示和操作提供一个抽象的框架,即描述了数据结构、数据操作及数据约束。故正确答案为 A。 9 【正确答案】 D 【试题解析】 因为一名 教师可讲授多门课程,而一门课程又能由多名教师讲授,所以教师
26、和课程之间是多对多的关系,可以表示为 m: n,选择 D。 10 【正确答案】 A 【试题解析】 栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表。在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,所以 A选项正确。 11 【正确答案】 D 【试题解析】 无论是标准库函数,还是别的函数,都属于函数的范畴,都允许用户重新定义 和使用,使用的时候 include命令必须以 “#”号开头,文件名用一对双引号或一对尖括号括起来,系统提供的头文件是以 h作为文件后缀。 12 【正确答案】
27、 C 【试题解析】 一个 C程序可以有一个或多个程序文件,也可以有一个或多个函数,所以一个 C语言程序可以实现多种算法,答案选 C。 13 【正确答案】 A 【试题解析】 scanf()函数的一般形式为: scan(格式控制,地址表列 )。其中, “格式控制 ”是用双引号括起来的字符串,也称为 “转换控制字符串 ”,它包括两种信息: 格式说明,由 “ ”和格 式字符组成; 普通字符,即需要原样输入的字符。 “地址表列 ”是需要接收输入数据的一系列变量的地址。本题中的 “格式控制 ”是 “ 2d f”, “ 2d”的意思是要输入一个整数,但该整数最宽只占 2个字符,而“ 2d”是要输入一个浮点数
28、。题目要求输入的是 876空格 543 0,所以 scanf()函数将 87赋给 a,将 6赋给 b。 14 【正确答案】 B 【试题解析】 取余操作数只能是整数, x+n和数值 5不能作为赋值的左值,所以 A、 C、 D选项错误。 15 【正确答案】 A 【试题解析】 xhh表示 1到 2位十六进制所代表的字符,故答案为 A。 16 【正确答案】 D 【试题解析】 等号 “=”运算符是从右到左,且与 “+、 -、 *”运算符比,优先级较低。首先计算 a*a,结果为 9,执行 a=a-9后 a的值为 -6,然后执行 a+=a,即a=a+a=-6+(-6),所以值为 -12。 17 【正确答案】
29、 C 【试题解析】 函数 scanf()输入字符串时默认空格为间隔符,所以不能输入空格,答案选 C。 18 【正确答案】 B 【试题解析】 对于字符型数据的输入而言,从键盘上输入的字符,不管是否可以输出,都会被读入字符型变量中。因此, c1=1, c2=2, c3=3, c4=回车,c5=4, c6=5,输出 c1, c2, c5, c6的结果为 1245,答案选 B。 19 【正确答案】 A 【试题解析】 这是一个循环结构嵌套选择结构,按照外层循环,内层选择一步一步处理即可。本题重点注意, switch语句中并没有出现 break语句,所以内层循环是不会跳出的。 20 【正确答案】 A 【试
30、题解析】 B、 C、 D选项描述比较片面。 21 【正确答案】 B 【试题解析】 本题考查位运算中按位或运 算符,或运算只要两个比较的位中有一个为 1,其结果是 1,否则结果为 0。 13用二进制表示为 00001101, 15用二进制表示为 00001111,或运算后结果为 00001111,即 15,故 B选项正确。 22 【正确答案】 C 【试题解析】 “+”和 “-”运算,当以前缀形式出现时,则先进行加 1或减 1操作,再进行其他运算;当以后缀形式出现时,则先进行其他运算,再进行加 1或减 1操作。 a初始定义为 1, b为 0,执行 -a, a的值变为 0,即 if判断为假,执行b+
31、=2,输出 b的值为 2。 23 【正确答案】 B 【试题解析】 本题主要考查一维数组的输出。由于数组中有 6个元素,但初始化数组的时候只给出 4个元素,所以 array5=0, array6=0,前面几位元素依次输出,不够位数补 O,所以选项 B正确。 24 【正确答案】 C 【试题解析】 同类元素的集合称为数组,数组元素在内存中占据连续的存储空间, C选项正确。方括号中可以为整型变量或者常量表达式, A选项错误。在使用逗号运算符的情况下,一条语句可以定义多个数组, B选项错误。数组元素在数组中的下标为整型常量或者变量构成的整型表达式,不能为浮点数 , D选项错误。答案选 C。 25 【正确
32、答案】 C 【试题解析】 考查二维数组的初始化。初始化二维数组的时候,若给数组的全部元素均赋初值,此时第一维的元素个数可以不指定,部分赋值时,最后一行元素不写完整,此时数组第一维元素个数仍然可以不指定。题中为按行给数组 m赋值,最后一行只有部分赋初值,答案选 C。 26 【正确答案】 A 【试题解析】 A选项正确, charc1, c2, *c3, c440表示定义了两个字符变量c1、 c2,一个字符指针 c3,一个字符数组 c4。数组的下限永远为 0,选项 B、 C、D错,答案选 A。 27 【正确答案】 B 【试题解析】 本题重点考查 dowhile 语句,该循环语句的特点是,先执行循环中
33、的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此, dowhile 循环至少要执行一次循环语句。变量 a赋初值为 3,每循环一次需执行语句 a-=2一次,同时循环条件使变量 a自减 1,所以第一次循环后变量 a变为 1,第 2次循环后变量 a变为 -2。故 B选项正确。 28 【正确答案】 A 【试题解析】 考查基本的字符串输入控制语句。 29 【正确答案 】 A 【试题解析】 条件运算符组成条件表达式的一般形式为:表达式 1?表达式 2:表达式 3。其求值规则为:表达式 1值为真,则以表达式 2的值作为条件表达式的值,否则以表达式 3的值作为整个条件表达式的值
34、。本题中语句 printf(x2)?(“* d“): (“# d“, x);含义为变量 x对 2求余,如果结果为真,则按照 “*d”出,否则按照 “# d”出。故 A选项正确。 30 【正确答案】 A 【试题解析】 函数 fun()属于值传参,形参的变化不会影响实参,所以函数调用结束后,数组 c没有任何变化,输出 结果为选项 A。 31 【正确答案】 C 【试题解析】 考查递归函数。函数 fun()的功能是计算 1到 n之间的数字之和,所以计算结果为 15,答案选 C。 32 【正确答案】 A 【试题解析】 B选项中,不能直接将字符数组名直接赋值给另一个字符数组名。C选项赋值错误,不能将一个字
35、符串常量赋值给一个字符指针。 D选项定义 str4时需要定义其长度。故 A选项正确。 33 【正确答案】 A 【试题解析】 int(*f)()为一个函数指针变量,返回值为整型, f为一个指针变量,指向一个已经定义的函数 ,在调用该函数的时候需要把参数写在相应的小括号内,即 (*指针名 )(参数或参数列表 ),所以选项 A调用错误,答案选 A。 34 【正确答案】 A 【试题解析】 数据只能由实参单向传递给形参称为 “值传递 ”,而不能由形参传回来给实参, A选项正确;数组名、指针等作参数,实参传递给形参地是地址值,这样形参和实参就指向同一段内存单元,在函数体内对形参数据的改变也将影响到实参。实
36、参和形参之间不可双向传递, BD选项错误。数据不能从形参传递给实参, C选项错误。 35 【正确答案】 A 【试题解析】 考查指针变 量的初始化。只能把对应类型的变量的地址赋值给指针,选项 B错误;定义指针时要加上 “*”标明该变量为一个指针变量,选项 C错误;不能把一个整数直接赋值给指针变量,选项 D错误;所以答案选 A。 36 【正确答案】 A 【试题解析】 C语言中,凡是以 “#”开头的都被称为编译预处理行,选项 A正确;预处理行可以放在 C源程序的任何位置,习惯放在起始位置,选项 B错误;语句 “#include stdio h ”必须放在使用文件 stdio h中相关方法的语句之前,
37、但是不一定非要放在 C程序开头,选项 C错误;预处理包括宏定义 、文件包含和条件编译等,选项 D错误。答案选 A。 37 【正确答案】 C 【试题解析】 本题主要考查函数作为形参时的使用,由 x=fun(fun1, 9, 3);可得到 x=9+3=12,而后直接传入函数 fun2, x=x+8-3=12+5=17。故 C选项正确。 38 【正确答案】 A 【试题解析】 首先在主函数中给整型变量 k赋值为 3,将变量 k的地址赋给指针变量 p,调用 sp函数,将实参 p的值传给形参 a,在 sp函数中,指针变量 a又获得变量 b的地址,通过运算后,输出 a的值为 4,返回主函数,输出 k的值和
38、p的值为 3和 3。故 A选项正确。 39 【正确答案】 D 【试题解析】 my()递归,直到输入了 c开始返回。递归使用的是栈的思想,因此最后输入进去的最先返回并输出。所以结果是 cba。 40 【正确答案】 C 【试题解析】 字符常量与其 ASCII码值一一对应,在计算的时候,可以使用该字符的 ASCII码参与运算,输出时会根据格式控制符输出对应的字符或者 ASCII码。右移运算符 “ ”的运算规则是把左边运算数的各二进制位全部右移 n位, n取决于 “ ”右边的数值。字符 a的 ASCII码值为 8,对应二进 制为 1000,所以a 3=1,输出的字符 c的 ASCII码值为 1,答案选
39、 C。 二、程序填空题 41 【正确答案】 (1)N (2)tij (3)tji 【试题解析】 本题考查:有参函数定义,需要根据题目要求和给定程序确定函数参数。 NN矩阵中如何表示左下角和右上角元素。 填空 1:主函数中调用函数的参数为二维数组,所以此处形参应定义为指针数组。 填空 2:根据题意可知,对称元素相加的和存放在左下三角元素中,那么应填入的是 tij。 填空 3:右上三角元素置 0,应填入 tji。 三、程序修改题 42 【正确答案】 (1)double sum=0 0; (2)sum =c; 【试题解析】 本题考查:变量的数据类型,区别 int整型和 double双精度型;除法运算
40、符 “ ”。 (1)变量定义错误,变量 sum存放所有数据的和,应定义为 double型。 (2)C语言中的除法运算符是 “ ”。 四、程序设计题 43 【正确答案】 void fun(char*a, char*p) char*t=a; for(; t =p; t+) if(*t!=*) *(a+)=*t; for(; *t!= 0; t+) *(a+)=*t; *a= 0; *在字符串最后加上字符串结束标识 * 【试题解析】 本题考查:删除字符串中非尾部 *号,删除的主要思想就是把不删除的字符保留起来。本题用两个循环语句来实现。第 1个循环的作用是将指针 p所指字母以前所有非 *号的字符保留下来,即删除指针 p以前所有的木号。第 2个循环的作用是将指针 p以后的所有 *号保留下来。最后在新串的结尾加上结束符。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1