当前位置:文档之家› 二级C语言资料模拟及历年考试编程题答案

二级C语言资料模拟及历年考试编程题答案

二级C语言资料模拟及历年考试编程题答案作者: 日期:模拟一试题7某客户为购房办理商业贷款,选择了按月等额本息还款法,在贷款本金(loan )和月利率(rate)一定的情况下,住房贷款的月还款额(mo ney)取决于还款月数(mo nth), 计算公式如下。

客户打算在5〜30年的范围内选择还清贷款的年限,想得到一张“还款年限—月还款额表”以供参考。

rate(1 rate)monthmoney loa n(1 rate)month 1(1)定义函数cal_power(x, n)计算x的n次幕(即x n),函数返回值类型是double。

(2)定义函数cal_mo ney(loa n,rate,mo nth)计算月还款额,函数返回值类型是double,要求调用函数cal_power(x, n)计算x的n次幕。

(3)定义函数main(),输入贷款本金loan (元)和月利率rate,输出“还款年限—月还款额表”,还款年限的范围是5〜30年,输出时分别精确到年和元。

要求调用函数cal_mon ey(loa n, rate,m on th)计算月还款额。

#in clude<stdio.h> double cal_power(double x,i nt n){int k; double result=1;for(k=1;k<=n; k++)result*=x;return result;}double cal_ mon ey(double loa n, double rate,i nt month){double result=cal_power(1+rate,m on th);result=loa n*rate*result/(result-1);return result;}void mai n(){int k,year; double loa n,mon ey,rate;sca nf("%lf%lf", &loa n,& rate);for(year=5;year<=30;year++){mon ey=cal_m on ey(loa n,rate,12*year);prin tf("year=%d,m on ey=%.0f\n",year,m on ey); }}试题8编写程序,输入一批学生的成绩,遇0或负数则输入结束,要求统计并输出优秀(大于85)、通过(60〜84)和不及格(小于60)的学生人数。

运行示例:Enter scores: 88 71 68 70 59 81 91 42 66 77 83 0> =85:260-84:7<60 2#in clude<stdio.h>void mai n(){int mark,a,p,f;a=p=f=0;printf("Enter scores :"); sca nf("%d",&mark);while(mark>0){if(mark>=85) a++;else if(mark>=60) p++;else f++;scan f("%d",&mark);}prin tf(">=85:%d\n",a);prin tf("60-84:%d\n",p);prin tf("<60:%d\n",f);}试题9(1 )编写程序,输入一个正整数n,求下列算式的值。

要求定义和调用函数fact(k)计算k 的阶乘,函数返回值的类型是double o运行示例:En ter n: 5sum = 1.71667#in clude<stdio.h> double fact(i nt n) {int k; double result=1; for(k=1;k<=n; k++) result*=k;return result;}void mai n(){int i,n; double x,sum; //double fact(i nt n); prin tf("E nter n:"); sca nf("%d",&n); sum=0;for(i=1;i<=n ;i++) sum=sum+1/fact(i); prin tf("sum = %.5f\n",sum); } (2)输入一个正实数x 和一个正整数n,求下列算式的值。

要求定义和调用2个函数:fact(n)计算n 的阶乘;mypow(x, n)计算x 的n 次幕(即x n ), 2个函数的返回值类型都是 double 。

234xxxx2! 3! 4!#include<stdio ・h> double fact(i nt n) {int k; double result=1; for(k=1;k<=n; k++)result*=k; return result;}double mypow(double x,i nt n) {int k; double result=1; for(k=1;k<=n; k++)result*=x; return result; }void mai n() {int i,n; double x,sum; prin tf("E nter x,n :”); sca nf("%lf%d",& x,&n); sum=0;for(i=1;i<=n ;i++) sum=sum+mypow(-1,i-1)*mypow(x,i)/fact(i); prin tf("sum = %.2f\n",sum); }模拟二试题7从n 个不同的元素中,每次取出 k 个不同的元素,不管其顺序合并成一组, 称为组合。

组合种数计算公式如下 :n! (n k)!k!定义函数fact(n)计算n 的阶乘n!,函数返回值类型是double o1)n 1(1)(2)定义函数cal(k, n) 计算组合种数C n k,函数返回值类型是double,要求调用函数fact(n) 计算n的阶乘。

(3)定义函数main(),输入正整数n ,输出n的所有组合种数C:(1 < k < n),要求调用函数cal(k,n) 计算组合数。

#in clude<stdio.h>double fact(i nt n){int k; double result=1;for(k=1;k<=n; k++)result*=k;return result;}double cal( int k,i nt n){double result=fact( n)/(fact( n-k)*fact(k));return result;}void mai n(){int n ,k;sca nf("%d",&n);for(k=1;k<=n; k++)printf("%d个数中取出%d个数的所有组合种数为:%.0lf\n",n,k,cal(k,n));}试题8编写程序,输入100个学生的英语成绩,统计并输出该门课程的平均分以及不及格学生的人数。

#in clude<stdio.h>void mai n(){int count,k; float a[100]; double aver;for(k=0;k<100;k++)sca nf("%f",&a[k]);aver=0;for(k=0;k<100;k++)aver+=a[k];aver/=100;coun t=0;for(k=0;k<100;k++)if(a[k]<60) count++;prin tf("aver=%lf\n",aver);prin tf("fail %d\n",cou nt);}试题9编写程序,输入一个正整数 n 计算并输出下列算式的值。

要求定义和调用函数total(n)计算1+1/2+1/3+ ......... +1/n ,函数返回值的类型是double 。

#in clude<stdio.h> void mai n() { int n;double total( int n); sca nf("%d",&n);prin tf("sum = %f\n ",total( n)); }double total( int n) {int k; double sum=0; for(k=1;k<=n; k++)sum=sum+1.0/k; return sum; }试题10#in clude<stdio.h> void mai n() {double rate,salary,tax; sca nf("%lf", &salary); if(salary<=850) rate=0;else if(salary<=1350) rate=0.05; else if(salary<=2850) rate=0.1; else if(salary<=5850) rate=0.15; else rate=0.2; tax=rate*(salary-850);(1)输入一个职工的月薪 其中rate 的计算方式如下:salary < 850 时, 850 v salary < 1350 v salary < salary ,计算并输出应交的个人所得税tax = rate * (salary-850)。

当 当 当 当 当rate = 0 ;1350 时,rate = 5% ;2850 时,rate = 10% ;2850 v salary < 5850 时,rate = 15% ; 5850 vsalary 时,rate = 20% 。

prin tf("tax=%.2lf",tax);}(2)输出一张平方根表(如卜表所示) ,x的取值范围是[5, 1000],请调用库函数sqrt()计算平方根。

x sqrt(x)5 2.246 2.45999 31.611000 31.62#in clude<stdio.h>#in clude<math.h>void mai n(){ int x;prin tf("x sqrt(x)\n"); for(x=5;x<=1000;x++)prin tf("%d %f\n",x,sqrt(x));80个字符),再输入一个字符,统计并输出该字符在字符串中(3 )输入一个字符串(少于出现的次数。

相关主题