[计算机类试卷]国家二级(C语言)机试模拟试卷109及答案与解析.doc

上传人:appealoxygen216 文档编号:502843 上传时间:2018-11-29 格式:DOC 页数:28 大小:80.50KB
下载 相关 举报
[计算机类试卷]国家二级(C语言)机试模拟试卷109及答案与解析.doc_第1页
第1页 / 共28页
[计算机类试卷]国家二级(C语言)机试模拟试卷109及答案与解析.doc_第2页
第2页 / 共28页
[计算机类试卷]国家二级(C语言)机试模拟试卷109及答案与解析.doc_第3页
第3页 / 共28页
[计算机类试卷]国家二级(C语言)机试模拟试卷109及答案与解析.doc_第4页
第4页 / 共28页
[计算机类试卷]国家二级(C语言)机试模拟试卷109及答案与解析.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、国家二级( C语言)机试模拟试卷 109及答案与解析 一、选择题 1 下列叙述中正确的是 ( )。 ( A)所有数据结构必须有根结点 ( B)所有数据结构必须有终端结点 (即叶子结点 ) ( C)只有一个根结点,且只有一个叶子结点的数据结构一定是线性结构 ( D)没有根结点或没有叶子结点的数据结构一定是非线性结构 2 以下叙述中错误的是 ( )。 ( A) C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令 ( B) C程序经过编译、链接步骤之后才能形成一个真正可执行的二进制机器指令文件 ( C)用 C语言编写的程序称为源程序,它以 ASCII代码形式存放在一个文本文件中 (

2、 D) C语言源程序经编译后生成后缀为 obj的目标程序 3 C语言主要是借助以下 ( )功能来实现程序模块化的。 ( A)定义函数 ( B)定义常量和外部变量 ( C)三种基本结构语句 ( D)丰富的数据类型 4 有以下程序段: char ch; int k; ch=a; k=12; printf(“ c, d, “, ch, ch, k); printf(“k= d n“, k); 已知字符 a的 ASCII码十进制值为 97,则执行上述程序段后输出的结果是 ( )。 ( A)因变量类型与格式描述符的类型不匹配,输出无定值 ( B)输出项与格式描述符个数不符,输出为零值或不定值 ( C)

3、a, 97, 12k=12 ( D) a, 97, k=12 5 下列叙述中正确的是 ( )。 ( A)栈是 “先进先出 ”的线性表 ( B)队列是 “先进后出 ”的线性表 ( C)循环队列是非线性结构 ( D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构 6 若要实现 total=1+2+3+4+5求和,以下程序段错 误的是 ( )。 ( A) int i=1, total=1; while(i 5) i+=1; total+=i; ( B) int i=1, total=0; while(i =5) total+=i; i+=1; ( C) int i=0, total=0;

4、while(i 5) total+=i; i+=1; ( D) int i=0, total-0; while(i =5) total+=i; i+=1: 7 下列不属于软件工程 3个要素的是 ( )。 ( A)工具 ( B)过程 ( C)方法 ( D)环境 8 下面不属于黑盒测试方法的是 ( )。 ( A)边界值分析法 ( B)基本路径测试 ( C)等价类划分法 ( D)错误推测法 9 有三个关系 R、 S和 T如下: 则下列操作中正确的是 ( )。 ( A) T=RS ( B) T=R S ( C) T=RS ( D) T=R S 10 下列选项中,不属于数据管理员 (DBA)职责的是 (

5、 )。 ( A)数据库维护 ( B) 数据库设计 ( C)改善系统性能,提高系统效率 ( D)数据类型转换 11 有以下程序 #include main() int a=0, b=0; *给 a赋值 a=10; b=20;给 b赋值 * printf(“a+b= d n“, a+b); *输出计算结果 * 程序运行后的输出结果是 ( )。 ( A) a+b=0 ( B) a+b=30 ( C) a+b=10 ( D)出错 12 有以下程序段 #include main() int a, b, c; a=10; b=50; c=30; if(a b)a=b, b=c; c=a; printf(“

6、a-= d b= d c= d n“, a, b, c); 程序的输出结果是 ( )。 ( A) a=10 b=50 c=30 ( B) a=10 b=50 c=10 ( C) a=10 b=30 c=10 ( D) a=50 b=30 c=50 13 下列二叉树描述中,正确的是 ( )。 ( A)任何一棵二叉树必 须有一个度为 2的结点 ( B)二叉树的度可以小于 2 ( C)非空二叉树有 0个或 1个根结点 ( D)至少有 2个根结点 14 下列叙述中,不符合良好程序设计风格要求的是 ( )。 ( A)程序的效率第一,清晰第二 ( B)程序的可读性好 ( C)程序中要有必要的注释 ( D)

7、输入数据前要有提示信息 15 有以下程序 #include main() int x, y, z; x=y=1; z=x+, y+, +y; printf(“ d, d, d n“, x, y, z); 程序运行后的输出结果是 ( )。 ( A) 2, 3, 1 ( B) 2, 3, 2 ( C) 2, 3, 3 ( D) 2, 2, 1 16 设二叉树如下: 则后序序列为 ( )。 ( A) ABDEGCFH ( B) DBGEAFHC ( C) DGEBHFCA ( D) ABCDEFGH 17 以下叙述中正确的是 ( )。 ( A) break语句不能用于提前结束 for语句的本层循环

8、( B)使用 break语句可以使流程跳出 switch语句体 ( C) continue语句使得整个循环终止 ( D)在 for语句中, continue与 break的效果是一样的,可以互换 18 有以下程序: #include 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 19 待排序的关键码序列 为 (15, 20, 9, 30, 67, 65, 45, 90),要按关键码值递增的顺序排

9、序,采取简单选择排序法,第一趟排序后关键码 15被放到第 ( )个位置。 ( A) 2 ( B) 3 ( C) 4 ( D) 5 20 下列关系表达式中,结果为 “假 ”的是 ( )。 ( A) (3+4) 6 ( B) (3! =4) 2 ( C) 3 =4 3 ( D) (3 4)=1 21 有如下程序: #include main() int i; for(i=0; i 5; i+) putchar(9 i); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) 54321 ( B) 98765 ( C) 9“8“7“6“5 ( D) 43210 22 下列叙述中正确

10、的是 ( )。 ( A)可以用关系运算符比较字符串的大小 ( B)空字符串不占用内存,其内存空间大小是 0 ( C)两个连续的单引号是合法的字符常量 ( D)两个连续的双引号是合法的字符串常量 23 以下关于 C语言函数参数传递方式的叙述正确的是 ( )。 ( A)数据只能从实参单向传递给形参 ( B)数据可以在实参和形参之间双向传递 ( C)数据只能从形参单向传递给实参 ( D) C语言的函数,参数既可以从实参单向传递给形参,也可以在实参和形参之间双向传递,可视情况选择使用 24 以下叙述中错误的是 ( )。 ( A)当在程序的开头包含头文件 stdio h时,可以给指针变量赋 NULL (

11、 B)函数可以返回地址值 ( C)改变函数形参的值,不会改变对应实参的值 ( D)可以给指针变量赋一个整数作为地址值 25 有以下程序 (说明:字母 A的 ASCII码 值是 65): #include void fun(char*s) while(*s) if(*s 2)printf(“ c“, *s); S+: main() cha, r a=“BYTE“; fun(a); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) BY ( B) BT ( C) YT ( D) YE 26 有以下程序: #include main() while(getchar()! = n

12、); 以下叙述中正确的是 ( )。 ( A)此 while语句将无限循环 ( B) getchar()不可以出现在 while语句的条件表达式中 ( C)当执行此 while语句时,只有按回车键程序才能继续执行 ( D)当执行此 while语句时,按任意键程序就能继续执行 27 有以下程序: #include void fun(int*p, int*q) main() int m=1, n=2, *r=&m; f(r, &n); printf(“ d, d“, m, n); void f(int*p, int*q) p=p+1; *q=*q+1; 程序运行后的输出结果是 ( )。 ( A) 1

13、, 3 ( B) 2, 3 ( C) 1, 4 ( D) 1, 2 28 以下函数按每行 8个输出数组中的数据: void fun(int*w, int n) int i; for(i=0; i n; i+) _ printf(“ d“, wi); printf(“ n“); 下画线处应填入的语句是 ( )。 ( A) if(i 8=0)printf(“ n“); ( B) if(i 8=0)continue; ( C) if(i 8=0)printf(“ n“); ( D) if(i 8=0)continue; 29 以下叙述中正确的是 ( )。 ( A)函数的形参类型不 能是指针类型 (

14、B)函数的类型不能是指针类型 ( C)设有指针变量为 double*p,则 p+1将指针 p移动 8个字节 ( D)基类型不同的指针变量可以相互混用 30 设有以下定义: char s1=“0123“; char s2=0, 1, 2, 3; 则以下叙述正确的是 ( )。 ( A)数组 s1的长度小于 s2的长度 ( B)数组 s1和 s2的长度相同 ( C)数组 s1的长度大于 s2的长度 ( D)数组 s1和 s2完全等价 31 有以下程序 (strepy为字符串复制函数, strcat为字符串连接函数 ): #include #include main() char a10=“abe“,

15、 b10=“012“, c10=“xyz“; strcpy(a+1, b+2); puts(strcat(a, c+1); 程序运行后的输出结果是 ( )。 ( A) a12xyz ( B) 12yz ( C) a2yz ( D) bc2yz 32 以下叙述中正确的是 ( )。 ( A)简单递归不需要明确的结束递归的条件 ( B)任何情况下都不能用函数名作为实参 ( C)函数的递归调用不需要额外开销,所以效率很高 ( D)函数既可以直接调用自己,也可以间接调用自己 33 有以下函数: #include void rune(int n) int i; for(i=0; i =n; i+)prin

16、tf(“*”); printf(“#“); main() func(3); printf(“?“); func(4); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) *#?*# ( B) *#?*# ( C) *#?*# ( D) *#?*# 34 有以下程序: #include int b=2; int fun(int*k、 b=*k+b: return(b); main() int a10=1, 2, 3, 4, 5, 6, 7, 8, i; for(i=2; i 4; i+)b=fun(&ai)+b; printf(“ d“, b); printf(“ n);

17、程序运行后的输出结果是 ( )。 ( A) 10 12 ( B) 8 10 ( C) 10 28 ( D) 10 16 35 以下叙述中正确的是 ( )。 ( A)在 C语言中,预处理命令行都以 “#”开头 ( B)预处理命令行必须位于 C源程序的起始位置 ( C) #include必须放在 C程序的开头 ( D) C语言的预处理不能实现宏定义和条件编译的功能 36 有以下程序: #include main() char a, b, e, d; seanf(“ c e“, &a, b); c=getchar(); d=getchar(); printf(“ c c c c n“, a, b,

18、c, d); 当执行程序时,按下列方式输入数据 (从第一列开始, 代表回车,注意:回车是一个字符 ) 12 34 则输出结果是 ( )。 ( A) 1234 ( B) 12 ( C) 12 3 ( D) 12 34 37 在 C语言中,只有在使用时才占用内存单元的变量,其存储类型是 ( )。 ( A) auto和 register ( B) extern和 register ( C) auto和 static ( D) static和 register 38 以下程序: #include void fun(int x) if(x 2 1)fun(x 2); printf(“ d“, x); m

19、ain() fun(7); printf(” n”); 程序运行后的结果是 ( )。 ( A) 1 3 7 ( B) 7 3 1 ( C) 7 3 ( D) 3 7 39 以下结构体类型说明和变量定义中正确的是 ( )。 ( A) typedef struct int n; char c; REC; REC t1, t2; ( B) struct REC; int n; char c; ; REC t1, t2; ( C) typedef struct REC: int n=0; char c=A; t1, t2; REC t1, t2; ( D) struct int n; char C;

20、REC; 40 以下叙述正确的是 ( )。 ( A)在 C语言中调用 fopen函数就可把程序中要读、写的文件与磁盘上实际的数据文件联系起来 ( B) fopen函数的调用形式为: fopen(文件名 ) ( C) fopen函数的返回值为 NULL时,则成功打开指定的文件 ( D) fopen函数的返回值必须赋给一个任意类型的指针变量 二、程序填空题 41 请补充 fun函数,该函数的功能是:按 0到 9统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组 num中。注意:不能使用字符串库函数。 例如,输入 “x=1123 456+0 909*bc”,结果为: 1=2, 3=1, 5

21、=1, 7=0, 9=2。 注意: 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的横线上填入所编写的若干表达式或语句。 【试题源程序】 #include #include #define N 20 fun(char*tt, int num) int i, j; int bb10; char*p=tt; for(i=0; i 10; i+) humi=0; bbi=0; while(【 1】 ) if(*p =0&*p =9) 【 2】 ; p+; for(i=1, j=0; i 10; i=i+2, j+) 【 3】 ; main() char strN; int num1

22、0, k; printf(“ nPlease enter a string: “); gets(str); printf(“ n*The original string* n“); puts(str); fun(str, num); printf(“ n*The number of letter*n“); for(k=0; k 5; k+) printf(“ n“); printf(“ d= d“, 2*k+1, nunk); printf(“ n“); return; 三、程序修改题 42 下列给定程序中,函数 fun的功能是:实现两个整数的交换。例如,给 a和 b分别输入 60和 65,输

23、出为: a=65 b=60。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动 main函数,不得增行或删行,也不得更改程序的结构。 【试题源程序】 #include #include #include *found* void fun(int a, b) int t; *found* t=b; b=a, a=t; void main() int a, b; system(“CLS“); printf(“Enter a, b: “); scanf(“ d d“, &a, &b); fun(&a, &b); printf(“a= d b= d n“, a, b); 四、程序设计题 4

24、3 请编一个函数 void fun(int ttMN, int PPN 3), tt指向一个 M行 N列的二维数组,求出二维数组每列中最大元素,并依次放入 pp所指的一维数组中。二维数组中的数已在主函数中给出。 注意: 请勿改动主函数 main和其他函数中的任何内容, 仅在函数 fun的花括号中填入你编写的若干语句。 【试题源程序】 #include #include #include #define M 3 #define N 4 void fun(int ttMN, int ppN) void main() int tMN=68, 32, 54, 12, 14, 24, 88, 58, 4

25、2, 22, 44, 56; int PN, i, j, k; system(“CLS“); printf(“The riginal data is: n“); for(i=0; i M; i+) for(j=0; j N; j+) printf(“ 6d“, tij); printf(“ n“); fun(t, p); printf(“ nThe result is: n“); for(k=0; k N; k+) printf(“ 4d“, pk); printf(“ n“); 国家二级( C语言)机 试模拟试卷 109答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 D项正确,线

26、性结构的特点是: 集合中必存在 “第一个元素 ”且惟一; 集合中必存在 “最后一个元素 ”且惟一; 除最后一个元素外,其他数据元素均有惟一的 “后继 ”; 除第一个元素外,其他数据元素均有惟一的 “前驱 ”。所以没有根结点或没有叶子结点的数据结构一定是非线性结构。 AB两项错误,不是所有数据结构都必须有根结点和叶子结点; C项错误,数据结构中若有中间结点不满足只有一个前件或者后件的条件,就不是线性结构。 2 【正确答案】 A 【试题解析】 A项错误,注释语句不会被翻译成二进制的机器指令。 C源程序经过 C编译程序编译之后生成后缀为 obj的二进制文件 (称为目标文件 ),然后由“链接程序 ”(

27、Link)的软件把 obj文件与各种库函数连接起来生成一个后缀为 exe的可执行文件。 3 【正确答案】 A 【试题解析】 C程序的模块化主要通过函数来实现。 C语言允许对函数单独进行编译,从而可以实现模块化。 4 【正确答案】 D 【试题解析】 字符变量的值是该字符的 ASCII码值,可以参与整型变量所允许的任何运算。 “ch=a”, c表示以字符格式输出 ch的值,所以输出为 a; d表示以十进制代码的形式输出 ch的值,为 97; k没有对应的输出格式,不输出。在第二个语句中,首先输出 “k=”,然后以十进制代码输出 k的值,为 12。 5 【正确答案】 D 【试题解析】 有序的线性表既

28、可采用顺序存储结构,也可以采用链式存储结构。A项错误,栈是 “先进后出 ”的线性表; B项错误,队列是 “先进先出 ”的线性表; C项错误,循环队列是线性结构的,有序的线性表既可采用顺序存储结构,也可采用链式存储结构。 6 【正确答案】 A 【试题 解析】 A项执行过程为: i=l, total=1,判断 while循环条件 1 5成立,total=1+1, i=2;判断循环条件执行函数体,直到 i=4, total=1+1+2+3+4, i=5;i=5循环条件不成立,退出循环, A项不能实现题目要求,错误。 B项执行过程:i=1, total=0, 1 =5成立, total=0+1: 1,

29、 i=2;直至 i=5, total=1+2+3+4+5,i=6; i=6条件不成立,退出循环,程序正确。 C项执行过程: i=0, total=0, 0 5成立, i=1, total=1;直到 i=5, total=1+2+3+4+5; i=5条件不成立,退出循环,程序正确。 D项执行过程: i=0, total=0, 0 =5成立, total=0, i=1;直到 i=5,total=1+2+3+4+5, i=6; i=6条件不成立,退出循环,程序正确。 7 【正确答案】 D 【试题解析】 软件工程是指用工程的方法来构建和维护软件,其要素包括: 方法,用于完成软件工程项目的技术手段; 工

30、具,用于支持软件的开发、管理、文档生成; 过程,用于支持软件开发的各个环节的控制、管理。 8 【正确答案】 B 【试题解析】 常见的黑盒测试方法有:等价类划分法、边界值分析法、错误推测法以及因果图等;常见的白盒测试方法有:逻辑覆盖测试和基本路径测试。 9 【正确答案】 D 【试题解析】 图中关系 R比关系 s多一行 T中的元组,故由关系 R和 S得到关系 T的操作是差。 10 【正确答案】 D 【试题解析】 数据库管理员对数据库进行规划、设计、维护、监视等,其主要工作有: 数据库设计,主要是对数据模式进行设计; 数据库维护,对数据库中的数据安全性、完整性、并发控制及系统恢复、数据定期转储等进行

31、实施与维护; 改善系统性能,不 断调整内部结构,提高系统效率。 11 【正确答案】 A 【试题解析】 注释 *和 *之间的代码不参与编译,所以 a、 b的值仍为 0。 12 【正确答案】 B 【试题解析】 C语言中使用分号来作为语句的结束,所以 a=b, b=c;是一条含有逗号运算符语句。 if条件不满足,直接执行 c=a。 13 【正确答案】 B 【试题解析】 非空的树形结构有且只有一个根结点,二叉树是每个结点最多有两棵子树的树形结构。度是一个结点所拥有的后件个数,二叉树中所有结点中的最大的度称为二叉树的度。 14 【正确答案】 A 【试题解析】 “清晰第一,效率第二 ”是当今主导的程序设计

32、风格。对程序的要求不仅是能够运行正常,还要便于调试和维护,所以程序要具有良好的可读性,语句结构应该简单直接,这有利于程序的开发与维护。 15 【正确答案】 A 【试题解析】 对于表达式 “z=x+, y+, +y; ”,因为赋值运算符的优先级高于逗号运算符的优先级,所以可以将上式改成 “(z=x+), (y+), (+y)”。然后从左向右先计算表达式 z=x+,后缀自增运算先进行其他运算,再执行自增运算,所以 z的值为 1, x的值为 2,再计算逗号表达式第二个表达式 y+,此时 y的值为1, y+的值为 2,最后计算第三个表达式 +y, y的值为 3。 16 【正确答案】 C 【试题解析】

33、二叉树的遍历方式包括: 前序遍历,先访问根结点,再访问左右子树; 中序遍历,访问根结点在访问左右子树之间; 后序遍历,在访问左右子树之后再访问根结点。本题中,树不为空,所以先后序遍历左子树,得DGEB,再后序遍历右子树,得 HFC,最后访问根结点。所以该二叉树的后序序列为 DGEBHFCA。 17 【正确答案】 B 【试题解析】 B项 正确, break语句可以跳出 switch语句和循环。 A项错误,break语句在 for循环内部的作用是跳出循环; C项错误, continue语句的作用是跳过本次循环体中余下尚未执行的语句,立刻进行下一次的循环条件判定,即仅结束本次循环,并没有使整个循环终

34、止; D项错误, continue和 break的效果完全不同: 18 【正确答案】 C 【试题解析】 “+”和 “-”运算,当以前缀形式出现时,则先进行加一或减一操作,再进行其他运算,当以后缀形式出现时,则先进行其他运算,再进行加一或减一操作。 a初始定义 为 1, b为 0,执行 -a, a的值变为 0,即 if判断为假,执行b+=2,输出 b的值为 2。 19 【正确答案】 B 【试题解析】 简单选择排序的算法可以描述为:前面的元素已经有序,扫描剩下的线性表,找到最小的元素,将它交换到剩余表的最前面,直到剩余表为空。所以第一趟排序后,将选出的最小元素与 15交换, 15被放在第 3个位置

35、。 20 【正确答案】 B 【试题解析】 A项,先执行 3+4=7, 7 6,结果为真; B项,先执行 3! =4为真,即为 1, 1 2结果为假; C项,先执行 3可以出现在程序的任意一行的开始部位; D项错误,预处理可以实现宏定义、条件编译和文件包含。 36 【正确答案】 C 【试题解析】 scanf()函数的一般调用形式为: scanf(格式控制,输入地址列表 )。其中,格式控制是用双引号括起来的字符串,包括格式字符和普通字符,格式是由 “ ”和格式字符组成。 getchar()函数的功能是从标准输入设备上读入一个字符。根据程序中的格式控制可知,接收输入时分别把 1赋给了 a, 2赋给了

36、 b,然后 getchar()函数提取一个换行符赋给 c,再提取 一个字符 3赋给了 d。所以程序的输出结果为: 12 CR 3。 37 【正确答案】 A 【试题解析】 C语言中,动态存储区域中存放的变量在使用时才分配内存空间。auto变量的存储单元是分配在内存的动态存储区中,每当进入函数体时自动分配存储单元。 register变量也是自动类变量。 static说明的变量为静态变量,静态变量在内存的静态存储中占据着永久的存储单元,直至程序运行结束。 extern说明的变量为外部变量,属于全局变量,全局变量在整个程序运行期间都占用内存空间。 38 【正确答案】 D 【试题解析】 函数 fun是递

37、归函数,递归终止条件是 x小于等于 3,当大于 3时递归调用 fun(x 2)。第一次循环 x 2=3,调用 fun(3), fun(3), x 2=1,跳出 if循环,执行输出 x=3,然后回到第一次循环,执行 if循环的语句,输出 x=7。 39 【正确答案】 A 【试题解析】 A项,用 typedef定义结构体类型名 REC后,可以用 REC定义变量。 B项, “struct REC; ”后面不应加分号; C项,没有这样的书写形式; D项,REC定义的是一个变量,不是结构体类型,因此不能用来定义结构体 变量。 40 【正确答案】 A 【试题解析】 A项正确, C语言中打开一个文件通过系统

38、函数 fopen实现,通过这个函数把程序中要读、写的文件与磁盘上实际的数据文件联系起来; B项错误,函数调用中缺少参数 “操作方法 ”; C项错误, fopen函数返回一个指向指定文件的文件指针,如果不能实现打开指定文件的操作,则返回一个空指针 NULL; D项错误, fopen函数的返回值必须赋给一个文件类型的指针变量。 二、程序填空题 41 【正确答案】 【 1】 *p 【 2】 bb*p-0+ 【 3】 numj=bbi 【试题解析】 先把数组 num的各元素清 0; 遍历字符串,利用数字字符在 ASCII码中的连续规律,使用 (数字字符 -0)作数组的下标,个数作数组元素的值。 填空【

39、 1】:此处用临时指针 p遍历字符串 str,所以应填 *p。 填空【 2】:因为 10个数字字符在 ASCII码中是连续的,将它们和字符 0作差刚好用来作为数组的下标。所以此处应该填 bb*p-0+。 三、程序修改题 42 【正确答案】 (1)错误: void fun(int a, b) 正确: void fun(int*a, int*b) (2)错误: t=b; b=a; a=t 正确: t=*b; *b=*a; *a=t; 【试题解析】 错误 (1):采用一般变量作形参,不能改变实参的值;采用指针变量作为形参,能够改变实参的值。主函数中 fun的调用方式说明 fun函数的参数应当为指针类

40、型。 错误 (2): a和 b都是指针变量,进行变量交换时不能直接引用,应加上 “*”号。 四、程序设计题 43 【正确答案】 void fun(int ttMN, int ppN) int i, j, max; if(tt=NULL pp=NULL)return; for(j=0; j N; j+) max=tt0j; *假设各列中的第一个元素最大 * for(i=0; i M; i+) if(ttij max) *如果各列中的其他元素比最大值大,则将这个更大的元素看作当前该列中最大元素 * max=ttij; ppj=max; *将各列的最大值依次放入 pp数组中 * 【试题解析】 根据题意可知, fun函数实现 的功能是对给定二维数组中每列的元素进行比较,得出最大值后依次输出至一维数组中。设计思路如下:定义一个最大值变量 max,首先将每列的第一个元素设为最大值,然后将最大值 max与第二个元素比较,较大值赋给 max;以此类推,将 max依次与第三, , M个元素比较,得出该列最大值,并进行输出。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1