1、国家二级 C语言机试(操作题)模拟试卷 262及答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.函数 fun的功能是:输出 a所指数组中的前 11个数据,要求每行输出 5个数。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1C 中。不得增行或删行,也不得更改程序的结构! 试题程序: #includestdioh #includestdlibh void fun(int*a,int n) int i ; for(i=0;in;i+) *found* if( 【1】 =0) *fo
2、und* printf(“ 【2】 “); *found* printf(“d“, 【3】 ); main() int a100=0,i,n; n=22; for(i=0;in;i+) ai=rand()21; fun(a,n); printf(“n“); (分数:2.00)_二、程序修改题(总题数:1,分数:2.00)2.下列给定程序中,函数 fun的功能是:按以下递归公式求函数的值。 (分数:2.00)_三、程序设计题(总题数:1,分数:2.00)3.请编个函数 flat fun(double h),该函数的功能是:使变量 h中的值保留两位小数,并对第三位进行四舍五入(规定 h中的值为正数
3、)。例如,若 h值为 1234567,则函数返回 1234570000;若 h值为1234564,则函数返回 1234560000。注意:部分源程序在文件 PROG1C 中。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序:1 #includestdioh2 #includeconioh3 #includestdlibh4 float fun(float h)5 67 8 void main()9 10 FILE*wf;11 float a;12 system(“CLS“);13 printf(“Enter a:“);14 scanf(“
4、f“, *单精度数 h乘以1000后再加 5,相当于对 h中的第三位小数进行四舍五入,除以 10后将其赋给一个长整型数时就把第三位小数后的数全部截去* return(float)tmp1000; *除以 100,保留 2位小数* )解析:解析:注意:本题要求对 h的值真正进行四舍五人运算,而不是为了输出,即不能用prinff(“72f“,h)来直接得到结果。四舍五入算法:如果要求精确到小数点后面的第 n位,则需要对第 n+1位进行运算。方法是将该小数乘以 10的 n+1次方后加 5,然后除以 10并强制转换变量类型为整型,再将该数除以 10的 n次方,同时强制转换类型为浮点型。 代码实现如下: int t;*定义整型变量t* t=(int)(h*10 n+1 +5)10;*对 h进行操作,得到值浮点型,t 取值时取整数部分。10 n+1 为要扩大的倍数* h=(noat)t10 n ;*将 t缩小 10 n 倍,并转换成浮点型*