国家二级C语言机试(操作题)模拟试卷587
程序填空题
1.下列给定程序中,函数fun的功能是:计算如下公式
直到
(1)3.0或(double)3
(2)>
(3)(t+1)
解析:本题考查:基本算术运算的类型转换。其转换规则如下:
如果双目运算符两边运算数的类型一致,则所得结果的类型与运算数的类型一致。
如果双目运算符两边运算数的类型不一致,系统将自动进行类型转换,使运算符两边运算数的类型达到一致后,再进行运算。其类型转换规律见下表。
程序修改题
2.下列给定程序中,函数fun的功能是:求出如下分数序列的前n项之和,和值通过函数值返回。
(1)double fun(int n)
(2)s=s+(double)a/b;
解析:本题考查:函数定义,函数定义的一般形式为 “类型标识符函数名(形式参数表列)”,其中类型标识符用来说明函数值的类型,函数的类型实际上是函数返回值的类型。
(1)由语句“:return(s);”和变量s定义为double型可知,该函数定义时其类型标识符为double类型。
(2)注意数据类型double的书写格式。
确定函数类型标识符在填空和改错题中经常考到,如果函数没有返回值,则函数定义为void型;如果函数有返回值,则函数类型应与返回值类型一致;如果不定义函数类型标识符,则系统默认为int型。
程序设计题
3.请编写函数fun,其功能是:找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#define M 4
#include<stdio.h>
int fun(int a[][M])
{
}
void main()
{
int arr[2][M]={5,8,3,45,
76,一4,12,82};
printf(\\
int fun(int a[][M])
{
int i,j,mex=a[0][0];
/*对二维数组进行遍历*/
for(i=0;i<2;i++)
for(j=0;j<M;j++)
if(max<a[i][j])
/*将最大值保存在mex中*/
max=a[i][j];
return max;
}
解析:本题考查:求数组的最大值,需运用循环语句。
因为数组是二维数值,所以应使用二层加for循环嵌套。使用for循环语句时需注意循环变量的取值范围。
此类求最大值或最小值的问题,可以采用逐个比较的方式,对数组中所有元素遍历一遍,从中找出数组最大值或最小值。首先定义变量max用来存放数组的第一个元素的值,然后利用for循环逐个找出数组中的元素,并与max比较,如果元素值大于max,则将该值赋予max,循环结束后max的值即为数组最大值,最后将该值返回。
该类题目考查较多,需要掌握逐个比较的方法。
对于m*n二维数组,如果采用逐个查找方法,代码实现如下:
for(i=0;i<m;i++)
for(j=0;j<n;j++)
本文档预览:3600字符,共2074字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载