国家C语言上机考试题库.doc
文本预览下载声明
第一套
简单应用题
下列给定程序中,函数fun的功能是:把形参a所指数组中的最小值放在元素a[0]中,接着把a所指数组中的最大值放在a[1]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3],以此类推。
例如,若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7;则按规则移动后,数据排列为:1、9、2、8、3、7、4、6、5。形参n中存放a所指数组中数据的个数。
规定fun函数中的max存放当前所找的最大值,px存放当前所找最大值的下标。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不行更改程序的结构!
【参考答案】
(1) a[i] (2) a[j] (3) a[j]
【考点分析】
本题考查:数组的引用;if语句条件表达式,如果表达式的值为真,则执行下面的语句,如果该值为假,则不执行下面的语句。
【解题思路】
填空1:for循环语句循环体中将数组元素a[i]赋值给变量max和变量min。
填空2:通过一次for循环,找到数组中的最大值,if语句的条件表达式是maxa[j]。
填空3:同理,此处if语句的条件表达式是mina[j]。
基本操作题
下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:1、1、2、3、5、8、13、21、……
例如,若给n输入7,则该项的斐波拉契数值为13。
请改正程序中的错误,使它能得出正确结果。
注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构。
【参考答案】
(1) 去掉分号
(2) case 1:case 2:return 1;
【考点分析】
本题考查:switch语句,其一般形式为:
switch(表达式){
case常量表达式1: 语句1;
case常量表达式2: 语句2;
……
case常量表达式n: 语句n;
default: 语句n+1;
}
其中switch(表达式)后不应该带有;,同时case语句常量后应该是:。
综合应用题
某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:求出该学生的平均分,并放入记录的ave成员中。
例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun部位中填入你编写的若干语句。
【参考答案】
oid fun(STREC *a)
{
double ave=0.0;
int i;
for(i=0;iN;i++)
a-ave=a-ave+a-s[i];
/*求各门成绩的总和*/
a-ave/=N;
/*求平均分*/
}
【考点分析】
本题考查:结构体类型成员运算,指向结构体类型的指针变量作函数参数。
【解题思路】
本题考查自定义形参的相关知识点,程序流程是这样的:在fun()函数中求出平均分后,返回到主函数时平均分也要带回,所以只能定义一个指针类型的形参STREC*a ,此时,引用成员的方式可以使用指向运算符,即a-ave和a-s[i],当然也可用(*a).ave和(*a).s[i]。
第二套
简单应用题
下列给定程序中,函数fun的功能是进行数字字符转换。若形参ch中是数字字符0~9,则将0转换成9,1转换成8,2转换成7,……,9转换成0;若是其它字符则保持不变;并将转换后的结果作为函数值返回。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
参考答案】
(1) char (2) ch=9 (3)0
【考点分析】
本题考查:函数定义,注意函数定义的一般形式以及有参函数和无参函数的区别;if语句条件表达式,本题的条件表达式是判断数字字符;函数返回值,其一般形式为return 表达式;
二.基本操作题
下列给定程序中函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。
例如,若给a输入字符串:ABCDEFGKHIJK,调用函数后,字符数组b中的内容为:ABC DEF GHI JK。
请改正程序中的错误,使它能得出正确结果。
注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构。
【参考答案】
(1) b[k]=*p;
(2) b[k]=′ ′;k++;
【考点分析】
本题考查:指针类型变量作为函数的
显示全部