1、二级 C 语言-207 (1)及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充 main()函数,该函数的功能是:计算 3 名学生各科的平均成绩。 例如,当 scoreNM=85,62,89.5,60,69,90,96,84.5,100,85,92,97,86,73,85时,五门学科的平均分为:89 85 86.7 77.7 79.7。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在 main()函数的横线上填入所编写的若干表达式或语句。 试题程序: #includestdlib.h #inclu
2、destdio.h #define N 3 #define M 5 int main() int i,j; static float scoreNM=85,62,89.5,60,69, 90,96,84.5,100,85,92,97,86,73,85; static float arrN; system(“CLS“); for(i=0;iM;i+) arri=0.0; for(i=0;i 1;i+) for(j=0;j 2;j+) arrj+=scoreij; for(i=0;iM;i+) printf(“/nsubject%d/taverage=%5.1f“,i+1, 3); return
3、0; (分数:30.00)二、程序改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 proc()的功能是:根据以下公式求 的值,并作为函数值返回。例如,给指定精度的变量 eps 输入 0.0001 时,应当输出 Pi=3.141358。 /2=1+i/3+1/3*2/5+1/3*2/5*3/7+1/3*2/5*3/7*4/9 请修改程序中的错误,使它能得出正确的结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includeconio.h #includestdio.h #includemath.h double proc(doubl
4、e eps) double s,t;int n=1; s=0.0; t=1; /*found* while(teps) s+=t; t=t*n/(2*n+1); n+; /*found* return(s); void main() double s; printf(“/nPlease enter a precision:“); scanf(“%1f“, printf(“/nPi=%1f/n“,proc(s); (分数:30.00)三、程序设计题(总题数:1,分数:40.00)3.请编写函数 proc(),它的功能是求 Fibonacci 数列中小于 n 的最大的一个数,结果由函数返回。 Fi
5、bonacci 数列 F(n)的定义为 F(0)=0,F(1)=1 F(n)=F(n-1)+F(n-2) 例如,n=500 时,函数值为 377。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的花括号中填写所编写的若干语句。 试题程序: #includestdlib.h #includeconio.h #includemath.h #includestdio.h int proc(int t) void main() int n; system(“CLS“); n=500; printf(“n=%d,f=%d/n“,n,proc(n);
6、(分数:40.00)_二级 C 语言-207 (1)答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充 main()函数,该函数的功能是:计算 3 名学生各科的平均成绩。 例如,当 scoreNM=85,62,89.5,60,69,90,96,84.5,100,85,92,97,86,73,85时,五门学科的平均分为:89 85 86.7 77.7 79.7。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在 main()函数的横线上填入所编写的若干表达式或语句。 试题程序: #includestdli
7、b.h #includestdio.h #define N 3 #define M 5 int main() int i,j; static float scoreNM=85,62,89.5,60,69, 90,96,84.5,100,85,92,97,86,73,85; static float arrN; system(“CLS“); for(i=0;iM;i+) arri=0.0; for(i=0;i 1;i+) for(j=0;j 2;j+) arrj+=scoreij; for(i=0;iM;i+) printf(“/nsubject%d/taverage=%5.1f“,i+1, 3
8、); return 0; (分数:30.00)解析:N M arri/N解析 变量 M 和 N 分别存放学科数和学生数。题目中要求统计所有学生各科的平均成绩,因此第一处填“N”;第二处填“M”。数组 arr 中存放所有学生各科成绩的总和,而最后要求输出各科的平均成绩,因此第三处填“arri/N”。二、程序改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 proc()的功能是:根据以下公式求 的值,并作为函数值返回。例如,给指定精度的变量 eps 输入 0.0001 时,应当输出 Pi=3.141358。 /2=1+i/3+1/3*2/5+1/3*2/5*3/7+1/3*2/5*3
9、/7*4/9 请修改程序中的错误,使它能得出正确的结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includeconio.h #includestdio.h #includemath.h double proc(double eps) double s,t;int n=1; s=0.0; t=1; /*found* while(teps) s+=t; t=t*n/(2*n+1); n+; /*found* return(s); void main() double s; printf(“/nPlease enter a precision:“)
10、; scanf(“%1f“, printf(“/nPi=%1f/n“,proc(s); (分数:30.00)解析:错误:while(teps) 正确:while(t=eps) 错误:return(s); 正确:return(s*2); 解析 变量 eps 为给定的精度,当变量 t 等于精度值的时候还要继续进行运算,因此,“while(teps)”应改为“while(t=eps)”。程序中求出的是 /2 的值,而题目要求返回 的值,因此“return(s)”应改为“return(s*2)”。三、程序设计题(总题数:1,分数:40.00)3.请编写函数 proc(),它的功能是求 Fibonacc
11、i 数列中小于 n 的最大的一个数,结果由函数返回。 Fibonacci 数列 F(n)的定义为 F(0)=0,F(1)=1 F(n)=F(n-1)+F(n-2) 例如,n=500 时,函数值为 377。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的花括号中填写所编写的若干语句。 试题程序: #includestdlib.h #includeconio.h #includemath.h #includestdio.h int proc(int t) void main() int n; system(“CLS“); n=500; pri
12、ntf(“n=%d,f=%d/n“,n,proc(n); (分数:40.00)_正确答案:()解析:int proc(int t) int a500; a0=0;/a0表示数列的第 1 项 a1=1;/a1表示数列的第 2 项 for(inti=2;i=t;i+) ai=ai-1+ai-2; /根据公式列出第 i 项的计算式 if(ai=t) /若 ai大于 t 的值 returnai-1; /返回 ai前一项 ai-1的值 解析 由题目中所给的公式可知,Fibonacci 数列的第 n 项为第 n-1 项和第 n-2 项的和。要求Fibonacci 数列中小于 n 的最大的一个数,首先根据公式求出 Fibonacci 数列的第 n 项的值,当第 i 项大于 n,则返回第 i-1 项的值。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1