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

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

1、国家二级( C语言)机试模拟试卷 120及答案与解析 一、选择题 1 下列关于栈和队列的描述中,正确的是 ( )。 ( A)栈是先进先出 ( B)队列是先进后出 ( C)队列允许在队头删除元素 ( D)栈在栈顶删除元素 2 已知二叉树后序遍历序列是 CDABE,中序遍历序列是 CADEB,它的前序遍历序列是 ( )。 ( A) ABCDE ( B) ECABD ( C) EACDB ( D) CDEAB 3 在数据流图中,带有箭头的线段表示的是 ( )。 ( A)控制流 ( B)数据流 ( C)模 块调用 ( D)事件驱动 4 结构化程序设计的 3种结构是 ( )。 ( A)顺序结构,分支结构

2、,跳转结构 ( B)顺序结构,选择结构,循环结构 ( C)分支结构,选择结构,循环结构 ( D)分支结构,跳转结构,循环结构 5 下列方法中,不属于软件调试方法的是 ( )。 ( A)回溯法 ( B)强行排错法 ( C)集成测试法 ( D)原因排除法 6 下列选项中,不属于模块间耦合的是 ( )。 ( A)内容耦合 ( B)异构耦合 ( C)控制耦合 ( D)数据耦合 7 下列特征中不是 面向对象方法的主要特征的是 ( )。 ( A)多态性 ( B)标识惟一性 ( C)封装性 ( D)耦合性 8 在数据库设计中,将 ER图转换成关系数据模型的过程属于 ( )。 ( A)需求分析阶段 ( B)概

3、念设计阶段 ( C)逻辑设计阶段 ( D)物理设计阶段 9 在一棵二叉树上,第 5层的结点数最多是 ( )。 ( A) 8 ( B) 9 ( C) 15 ( D) 16 10 下列有关数据库的描述,正确的是 ( )。 ( A)数据库设计是指设计数据库管理系统 ( B)数据库技术的根本目 标是要解决数据共享的问题 ( C)数据库是一个独立的系统,不需要操作系统的支持 ( D)数据库系统中,数据的物理结构必须与逻辑结构一致 11 以下关于 C语言的叙述中正确的是 ( )。 ( A)预处理命令通常位于函数体外面,但也可以位于函数体中间 ( B) C语言中的变量定义须在其他语句之前 ( C)在 C语言

4、程序的书写中,一个语句必须单占一行 ( D) 个 C语言源程序可以由一个或多个源文件组成,每个源文件可由自己的ma1n函数 12 下列叙述中错误的是 ( )。 ( A)用户所定义的标识符允许使 用关键字 ( B)用户所定义的标识符应尽量做到 “见名知意 ” ( C)用户所定义的标识符必须以字母或下划线开头 ( D)用户定义的标识符中,大、小写字母代表不同标识 13 下列选项中可作为 C语言合法常量的是 ( )。 ( A) 80 ( B) 080 ( C) 8e1 0 ( D) 80 0e 14 下列定义变量的语句中错误的是 ( )。 ( A) int _int; ( B) doubleint_

5、; ( C) char For; ( D) floatU 15 下列关于函数的叙述中正确的是 ( )。 ( A)每个函数都可以被其他函数调用(包括 ma1n函数) ( B)每个函数都可以被单独编译 ( C)每个函数都可以单独运行 ( D)在一个函数内部可以定义另一个函数 16 当 a=1、 b=2、 c=3、 d=4时,执行下面程序段后, x的值是 ( )。 if(a main() int a=4, b=3, c=2, d=1; printf(“ d“, a main() int b33=0, 1, 2, 0, 1, 2, 0, 1, 2, i, j, t=0; for(i=0; i=i; j

6、 ) =biD; printf(“ dn“, t); 程序运行后的输出结果是 ( )。 ( A) 4 ( B) 3 ( C) 8 ( D) 9 19 以下程序: #inc1ude main() char str10; scanf(“ s“, &str); printf(“ sn“, str); 运行上面的程序,输入字符串 “how are you”,则 程序的执行结果是 ( )。 ( A) how ( B) how are you ( C) h ( D) howareyou 20 设变量 x和变量 y都是 int类型,且 x=1, y=2,则 printI!( “ d dt“, x, y,(x

7、, y)的输出结果是 ( )。 ( A) 12 ( B) 122 ( C) 1, 2 ( D)输出值不确定 21 以下程序的输出结果是 ( )。 #inc1ude main() int a=8, b=6, m=1; switch(a 4) case 0:m+; break; case 1: m+: switch(b 3) default: m+; case 0:mH; break; printf(“ dn“, m); ( A) 1 ( B) 2 ( C) 3 ( D) 4 22 定义如下变量和数组: int i, X33=1, 2, 3, 4, 5, 6, 7, 8, 9; 则下面语句的输出结

8、果是 ( )。 for(i=0; i void main() int a20, *p4; int i, k=0; for(i=0; i #defineN 8 void fun(int *x, int i) *x=*(x+i)+1; main() int aN=1, 2, 3, 4, 5, 6, 7, 8), i; fun(a, 2); for(i=0; i main() char a=a, b, c, d, f, g), *p; p=a; printf( “ c n“, *p+4); ( A) a ( B) b ( C) e ( D) f 34 下面函数的功能是 ( )。 sss(s, t)

9、char*s, *t; while(*s); while(*t) *(s+)=*(t+); retum s; ( A)将字符串 s复制到字符串 t中 ( B)比较两个字符串的大小 ( C)求字符串的长度 ( D)将字符串 t续接到字符串 s中 35 下列程序的运行结果是 ( )。 #inc1ude void sub(int*s, int*y) static int m=4; *y: sm; m ; void main() int a=1, 2, 3, 4, 5, k, x; printf(“ n“); for(k=0; k int b=3: int fun(int *k) b=*k+b; re

10、turn(b); main() int a10=1, 2, 3, 4, 5, 6, 7, 8, i; for(i=2; i #include #define N 5 #define M 10 int fun (char (*ss) Ml, int k) int i, j=0, len; len=strlen (ss i ) ; if (len int fun (int n, int a, int *k) int m=0, 1, t; t=n; /*found*/ for(i=0; i #define M 4 #define N 5 int fun (int aM N) main() int a

11、aMN=1, 3, 5, 7, 9, 2, 9, 9, 9, 4), 6, 9, 9, 9, 8, 1, 3, 5, 7, 0; int i, j, y; void NONO (); printf (“The original data is : n“); for (i=0; iM; i+) for (j =0; jN; j+) printf (“ 6d“, aaij); printf (“n“); y= fun (aa); printf(“nThe sum: dn“ , y); printf(“n“); NONO(); void NONO () /*请在此函数内打开文件,输入测试数据,调用

12、fun函数,输出数据,关闭文件。 */ int i, j, y, k, aa M N ; FILE *rf, *wf ; rf= fopen (“in dat“, “r“); wf= fopen (“out dat“, “w“); for(k= 0 ; k 10 , k+) for(i = 0 ; i M ; i+) for(j=0; jN; j+) fscanf (rf, y = fun (aa); fprintf(wf, “ dn“, y) fclose (rf) ; fclose (wf) ; 国家二级( C语言)机试模拟试卷 120答案与解析 一、选择题 1 【正确答案】 D 【试题解

13、析】 栈实际也是线性表,只不过是一种特殊的线性表。栈是只能在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶,另一端为栈底。队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。 2 【正确答案】 C 【试题解析】 由于后序遍历的最后一个元素为 E,所以 E为根结点,所以它的前序遍历的首个元素为 E,故排除 A)和 D)选项。由于中序遍历中,元素 B在元 素根结点 E的后面,所以 B为二叉树的右子树,并且该二叉树右子树只有一个元素,所以前序遍历的最后一个元素应为 B,故选项 C)为正确选项,即该二叉树的前序遍历序列是 EACDB。 3

14、【正确答案】 B 【试题解析】 数据流图中带箭头的线段表示数据流,沿箭头方向传递数据的通道,一般在旁边标注数据流名。 4 【正确答案】 B 【试题解析】 程序设计语言仅仅使用顺序、选择和重复(循环)三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。遵循程序结构化的设计原则,按结构化程序设计方法设计出的程序易 于理解、使用和维护;可以提高编程工作的效率,降低软件的开发成本。 5 【正确答案】 C 【试题解析】 软件调试主要采用以下三种方法: 强行排错法:作为传统的调试方法,其过程可概括为设置断点、程序暂停、观察程序状态、继续运行程序。 回溯法:该方法适合于小规模程序的排错、即一旦发现了

15、错误,先分析错误征兆,确定最先发现 “症状 ”的位置。 原因排除法:原因排除法是通过演绎和归纳,以及二分法来实现。 6 【正确答案】 B 【试题解析】 耦合可以分为下列几种,它们之间的耦合度由 高到低排列: 内容耦合一一若一个模块直接访问另一模块的内容,则这两个模块称为内容耦合。 公共耦合一一若一组模块都访问同一全局数据结构,则称为公共耦合。 外部耦合一一若一组模块都访问同一全局数据项,则称为外部耦合。 控制耦合一一若一模块明显地把开关量、名字等信息送入另一模块,控制另一模块的功能,则称为控制耦合。 标记耦合一一若两个以上的模块都需要其余某一数据结构的子结构时,不使用其余全局变量的方式而全使用

16、记录传递的方式,这样的耦合称为标记耦合。 数据耦合一一若一 个模块访问另一个模块,被访问模块的输入和输出都是数据项参数,则这两个模块为数据耦合。 非直接耦合一一若两个模块没有直接关系,它们之间的联系完全是通过程序的控制和调用来实现的,则称这两个模块为非直接耦合,这样的耦合独立性最强。 7 【正确答案】 D 【试题解析】 面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括:标识惟一性、多态性、封装性、模块独立性、继承和多态性好。 8 【正确答案】 C 【试题解析】 逻 辑结构设计的任务:概念结构是各种数据模型的共同基础,为

17、了能够用某 DBMS实现用户需求,还必须将概念结构进一步转化为相应的数据模型,这正是数据库逻辑结构设计所要完成的任务。它包括从 ER图向关系模式转换和逻辑模式规范化及调整、实现。 9 【正确答案】 D 【试题解析】 根据二叉树的性质:二叉树第 i( i1)层上至多有 2i1个结点。得到第 5层的结点数最多是 16个。 10 【正确答案】 B 【试题解析】 数据库设计的目的实质上是设计出满足实际应用需求的实际关系模型。数据库技术的主要目的是有效 地管理和存取大量的数据资源,包括:提高数据的共享性,使多个用户能够同时访问数据库中的数据;减小数据的冗余,以提高数据的一致性和完整性;提供数据与应用程序

18、的独立性,从而减少应用程序的开发和维护代价。 11 【正确答案】 A 【试题解析】 源程序中可以有预处理命令( inc1ude命令仅为其中的一种)。 C语言中的变量可以在使用之前的任何位置进行定义。 C语言程序的书写中,多个语句可以位于一行,但为了增强可读性,一般每行只有一条语句。一个 C语言源程序可以由一个或多个源文件组成,但仅可以有一个 main函数。 12 【正确答案】 A 【试题解析】 在 C语言中,合法标识符的命名规则是:标识符可以由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,凡是要求标识符的地方都必须按此规则命名。在 C语言的标识符中,大写字母和小写字母被认为是两个不

19、同的字符。在选择标识符时,应注意做到 “见名知义 ”,即选择具有一定含义的英文单词或汉语拼音作为标识符,以增加程序的可读性。 13 【正确答案】 A 【试题解析】 所谓常量是指在程序运行的过程中,其值不能被改变的量。在 C语言中,有整型常量、实型常量、字符常量和 字符串常量等类型。选项 B)中是以 0开头,表示一个八进制数,而八进制数的取值范围是 0 7,所以 “080”错误;在 C语言中 e后面的指数必须是整数,因此选项 C)和 D)也不正确。 14 【正确答案】 D 【试题解析】 C语言规定,变量的标识符只能由字母、数字和下划线 3种字符组成,且首字符必须为字母或下划线。在 C语言中大写字

20、母和小写字母被认为是两个不同的字符。选项 A)定义的变量标识符 int和选项 B)定义的变量标识符 mt与 C语言的关键字 int是不同的,是正确的变量标识。选项 C)定义的变量标识符For与 C语言 中的关键字 for是两个不同的标识符,所以选项 C)是正确的,而选项 D)包含有特殊字符 ,因而其不符合 C语言的变量命名规定。 15 【正确答案】 B 【试题解析】 在 C语言中,函数定义是平行的,函数不能嵌套定义,即函数之间没有从属关系。虽然函数之间可以相互调用,但 main()函数不能被调用,选项A)错误; C程序从 main()函数开始执行,当 main()函数执行完毕时,整个程序就结束

21、了。 C程序的执行必须从 main()函数开始,选项 C)选项错误;函数不能嵌套定义,选项 D)错误。 16 【正确答案】 A 【试题解析】 本题考查的是 ifelse语句。第一个 if语句,先判断条件,发现ab条件成立,执行下面的语句。第二个 if语句,先判断条件,发现 cd条件成立,执行下面的语句 x=1。 17 【正确答案】 A 【试题解析】 条件表达式的格式为: “a?b: c“,它的功能是:当 a为真时,表达式的值等于 b的值:当 a为假时,表达式的值等于 c的值。因为条件运算符的结合方向为 “自右向左 ”。因此,当表达式中嵌套使用条件表达式时,应先计算右边的条件表达式,再计算左边的

22、条件表达式。题中应先计算 “dc?d:b”的 “dc”关系表达式的值,因为 “d=1c=2”为真,所以取第一个表达式的值,即 d的值作为整个表达式的值。接着计算 “ab?a: d”, “a=4b=3”为假,取第二个表达式的值,即 d的值作为整个表达式的值。 18 【正确答案】 C 【试题解析】 这道题主要考查的是二维数组的有关知识。在两层 for循环语句中,累加上三角元素,所以程序执行的过程为“t=b00+b01+b02+b11+b12+b22=8”。 19 【正确答案】 A 【试题解析】 当从键盘输入 “how are you”时,由于 scanf输入函数的特点是遇到空格时结束读入字符,因此

23、,该程序只将 how这 3个字符送到了字符数组 str中,并在其后自动加上结束符 “0”。 20 【正确答案】 A 【试题解析】 本题考查 printf函数的格式和逗号表达式。 printf函数在输出时,是根据格式说明符的个数输出的,如果函数中有多余的项将不予输出;如果有输出项少于格式说明符,则出错,不能输出正确的结果。本题中逗号表达式 (x, y)只返回 y的值。此时格式说明的个数是 2,而输出项的个数是 3,因此 printf函数只输出前两项。 21 【正确答案】 B 【试题解析】 本题考查 switch语句。因为 a=8, a 4=0,所以执行 case 0后面的语句,将 m加 1,遇到

24、 break语句跳出 switch。 22 【正确答案】 C 【试题解析】 本题主要考查二维数组的使用。题中利用 for循环来输出 x数组中的指定元素: 当 i=0时,输出 x02=3; 当 i=1时,输出 x11=5; 当 i=2时,输出 x20=7。 23 【正确答案】 C 【试题解析】 C语言允许用 typedef说明一种新类型名,其一般形式为: typedef类型名标识符。 typedef语句的作用仅仅是使 “标识符 ”来代表已存在的 “类型名 ”,并未产生新的数据类型。原有类型名依然有效。此题中,用 typedef定义了新的类型 OLD结构,所以 OLD为结构体类型。 24 【正确答

25、案】 B 【试题解析】 二维数组的初始化有以下几种形式: 分行进行初始化; 不分行的初始化; 部分数组元素初始化; 省略第一维的定义,不省略第二维的定义。 在选项 B)中赋值号左边定义了一个 2行 3列的二维数组,而右边用 3行 2列的 数字进行赋初值。所以出现了边界的越界溢出错误。 25 【正确答案】 D 【试题解析】 本题考查函数调用的变量作用域。全局变量不在任何函数体内定义,作用域为整个文件;局部变量在函数体内定义,作用域仅为本次函数; static类型是静态变量,为了方便其他编译单元的引用,不能随意改变。一个函数包含两部分:函数首和函数体,函数体包括花括号内的所有语句。 26 【正确答

26、案】 B 【试题解析】 本题考查函数返回值。 fu函数的返回值类型为 int*类型,即函数返回一个指向整型变量的指针。 27 【正确 答案】 D 【试题解析】 本题考查通过指针引用数组元素。用指针引用数组有以下 3种形式: “(p+n)与 (a+n)”表示数组元素 an的地址; “*(p+n)与 *(a+n)”表示数组元素 an; “pn=*(p+n)”,都表示数组元素 an。 选项 A)、 B)没有这种引用形式;选项 C), “*(p+5)”是引用数组的第 6个元素,而数组一共有 5个元素,出现越界;选项 D), “*(a+2)”引用数组的第 3个元素。 28 【正确答案】 C 【试题解析】

27、 联合体的几个特点: 联合体所占用的 内存空间为最长的成员所占用的空间; 各个成员分量全部是从低地址方向开始使用内存单元; 联合体中的空间在某一时刻只能保存某一个成员的数据: 联合体和结构体可以任意嵌套。 29 【正确答案】 C 【试题解析】 本题考查函数调用时的参数传递。选项 C)中第一个参数的表达式不正确,因此不能得到正确的结果。 30 【正确答案】 D 【试题解析】 本题考查指针的运用。通过 pt=&xy,将 pt指向 xy所占的内存地址,而 *pt是指针 pt所指向内存单元中的内容,即 200,所以最后 xy的值为230。 31 【正确答案】 B 【试题解析】 第一个 for循环,给数

28、组 a的 20个元素分别赋值 0 19; 第二个for循环,给数组 p赋值, p0=a1=1, p1=a2=2, p2=a5=5,p3=a10=10:第三个 for循环,将数组 p中元素的值进行累加,k=1+2+5+10=18。 32 【正确答案】 C 【试题解析】 函数 “fun(int*x, int i)”的功能是把数组元素 xi的值加 1赋给x0。所以在主函数中执行 fun(a, 2)后,数组元数 a0的值等于 4。然后在 for循环语句中,输出数组 a中的前 4个元素的值,分别是 4、 2、 3、 4。 33 【正确答案】 C 【试题解析】 “*”号的优先级比 “+”的优先级高,所以先

29、执行 “*p”;指针 p指向的是数组的首地址,因此 “*p=a”,再加 4得 e。 34 【正确答案】 D 【试题解析】 本题考查指针变量的运用。本题中的函数实质上是将字符串 t续接到字符串 s中。 35 【正确答案】 A 【试题解析】 本题考查的是静态变量以及函数的实参与形参之间的地址值传递。sub()函数中定义的变量 m是一个静 态变量,系统可为其分配固定的存储空间,重复使用时,变量的值保留;所以当 main()函数中的 for循环中语句 “sub(a,&X)”;执行时, sub函数中 m的值依次是 4、 3、 2、 1、 0:因为变量 x进行的是地址值传递,所以最后依次输出的是数组 a的

30、元素 a4、 a3、 a2、 a1、 a0。 36 【正确答案】 B 【试题解析】 本题考查指针变量的赋值操作。选项 A)是将指针 ql和 q2所指向的变量值相乘,然后赋给 k;选项 B)中, float型数据和指针型数据之间不能进行赋值运算;选项 C)中,是两个指 针变量之间的赋值;选项 D)中,是两个指针型变量所指向的两个 int型数据相加。 37 【正确答案】 B 【试题解析】 本题考查的是联合体的有关概念。因为联合体是各个成员共享一段存储空间,此段存储空间最终存放的是最后存入的成员的值,所以题目中输出s age实际上输出了最后存入的 3000,因为 3000已经把原来存入的 s age

31、 (32)的值覆盖。 38 【正确答案】 D 【试题解析】 本题考查宏替换的规则。宏替换有两类:简单的字符替换和带参数的宏替换。使用宏应注意: 宏定义仅仅是符号替换,不是 赋值语句,因此不做语法检查; 为了区别程序中其他的标示符,宏名的定义通常用大写字母,但不是必须用大写; 双引号中出现的宏名不替换; 使用宏定义可以嵌套,即后定义的宏中可以使用先定义的宏。 39 【正确答案】 B 【试题解析】 i=2时, fun(&a2)返回值是: b=b+a1=3+3=6,b=b+b=6+6=12; i=3时, fun(&a3) 返回值是: b=b+a3=12+4=16, b=b+b=16+16=32 40

32、 【正确答案】 C 【试题解析】 数据块输入 /输出函数的调用形式为:fread(buffer,size,count,fp) fread函数参数说明: “buffer”是一个指针,对 fread来说,它是读入数据的存放地址; “size”是要读写的字节数; “count”是要进行读写多少个 size字节的数据项; “fp”是指文件型指针。 二、程序填空题 41 【正确答案】 (1)N (2)k (3)ssi 【试题解析】 本题中函数 fun的功能是在形参 ss所指字符串数组中,删除所有串长超过 k的字符串,然后函数返回所剩字符串的个数。根据题意,在 fun函数中,利用 for循环比较字符串长度

33、是否小于 k,然后利用 strcpy函数组成新的可用字符串数组,将可用的字符串数组的长度值进行返回,即为字符串的个数。 第一空: “for( i=0; i_1_; i+) ”,这一空部分出现在 fun函数中的 for循环条件中,在定义了 i之后 i的条件。根据 for后面的语句我们可以看出,这里是要进行比较,比较对象是 ss所指字符串数组的所有字符串,所以这里循环要进行整改字符串数组的长度,相应的,这里 for循环的循环条件就要是 i小于字符串长度,而字符串长度开始就有定义,为 N,所以 这里应该是 iN,这一空应该填N。 第二空: “if(len_2_) ”,这一空部分出现在 fun函数中,

34、是 for循环中 if条件语句的条件,这根据 if条件语句后面的语句我们可以知道,这里的条件语句是后面 strcpy的执行条件,向 strcpy要执行,根据题目给出的条件我们可以知道是要字符串长度小于等于 k才能保留,所以这里的 if条件语句中的条件应该是字符串长度小于 k,所以这一空应该填 k。 第三空: “strcpy(ssj+, _3_); ”这一空部分出现在 strcpy函数中,此函数为字符串复 制函数,是将后面的一个字符串复制到前面一个字符数组中去,根据题意和前面的条件语句,这一行语句是要将符合条件的字符串重新组成一个新的字符串数组,然后返回新数组的长度,这样的话就能知道 ssj为新

35、字符串数组,而这里要复制的就是原字符串数组中符合条件的字符串,所以这里要填就是前面符合条件的 i所对应的字符串,所以这一空应该填 ssi。 一维数组 for循环结构、 if条件语句、字符串处理函数。 三、程序修改题 42 【正确答案】 (1)for(i=0; in; i+)改为 for(i=1; in; i+) (2)k=m;改为 * k=m; (3)if(t=0)改为 if(t=0) 【试题解析】 本题的 fun函数主要功能是:是判断整数 n是否是 “完数 ”。当一个数的因子之和恰好等于这个数本身时,就称这个数为 “完数 ”。(例如: 6的因子包括 1、 2、 3,而 61+2+3,所以 6

36、是完数)如果是完数,函数返回值为 1,否则函数返回值为 0。数组 a中存放的是找到的因子,变量 k中存放的是因子的个数。这里是一个条件判断问题,原理上利用条件 if条件语句和 for循环得到结果,结果则是用数组输出完数的因子,用 k变量输出因子的个数。 这里 fun()函数为了判定这个数字是否为完数,一定要使用正确的循环,这个判断条件还是需要一定的步骤的。最重要的就是注意细节 (1)第一个错误在 fun()函数的 for循环中,这里的循环的就是输入数字 n的因式,很明显的一个问题就是循环的起始值有问题,这从 i=0开始就违反了最基本的四则运算, 0不可能是其他整数的因式,也没有意义。所以这里应

37、该将 “i=0”改为“1=1”。 (2)第二个错误在 fun()函数中数字经过 for循环过后,这里 “k=m”,是为了得到 “k”的值,也就是因子的个数。但是要注意的细节是在 fun()函数中的参数是 “*k”,也就是说 k只是一个指针变量,而不是我们所需要的因子个数的变量,所以这里我们应该使用的是 “*k”,即将 “k=m”改为 “*k=m”。 (3)第三个错误在 fun函数第二个 if条件语句中,这里 “f( t=0) return 1; ”的 t是数字减掉因子和的值,也就是说只要是 t等于 0就代表输入的数字是一个完数,这里原本的意图就是在得到因子的和之后判断数字是否为完数。但是又有一

38、个细节没有注意到的就是在 if条件语句中,等于号应该是 “=”,而不是普通的 “=”,所以这里应该将 “if( t=0)”改为 “if( t=0”。) 四、程序设计题 43 【正确答案】 1 int tot0, i, j; 2 for(i=0; iN; i+) 3 tot+=a0i; 4 tot+=a Ml i; 5 6 for (i=1; iM1; i+) 7 tot+=ai0; 8 tot+=a i N1; 9 10 return tot; 【试题解析】 该程序功能是求出二维数组周边元 素之和。其中周边元素是指数组的最上和最下的两行,最左和最右的两列。数组第一行元素的行下标为 0,最后一行元素的行下标为 “M1”,第一列的列下标为 0,最后一列的列下标为 “N1”。进入 fun函数,根据前面的分析:求周边元素的和,可以采用两个循环分别把行元素和列元素相加。但要避免把周边元素重复相加。

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

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

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