[大学计算] 第二次小测 答案
计算医疗报销费用
完成程序,只在Program和End之间增加代码。
编写函数double MedicalReimbursement(
double totalFee, double outerFee, double startLine,
double rbRatio, double capLine),计算患者可报销的医疗费用,其中:
1)totalFee表示治疗总费用,
2)outerFee表示报销范围外的费用,
3)startLine表示起付线,
4)rbRatio表示报销比例,
5)capLine表示封顶线。
医疗可报销费用可用下面公式计算:
可报销费用 = (治疗总费用 - 报销范围外的费用 - 起付线)×报销比例
1)若治疗总费用 - 报销范围外的费用低于起付线,则可报销费用为0;
2)若按上述公式计算出的可报销费用大于封顶线,则可报销费用为封顶线金额。
例如:
案例1:假设小李的治疗费用是20000元,其中报销范围外的费用是5000元,起付线标准是1000元,报销比例是50% ,封顶线是100000。则小李可报销的金额 = (20000 - 5000 - 1000) * 50 %= 7000元,报销费用在封顶线内,因此小李可实际报销7000元。
案例2:假设小李的治疗费用是20万元,其中报销范围外的费用是2万元,起付线标准是1000元,报销比例是70 % ,封顶线是10万元。则小李可报销的金额 = (200000 - 20000 - 1000) * 70 %= 125300元,报销费用超过封顶线,因此小李实际报销10万元。
输入格式:
输入在一行中给出治疗总费用、报销范围外的费用、起付线、报销比例、封顶线,中间用空格分开。
输出格式:
在一行中输出实际可报销的费用。
输入样例:
20000 5000 1000 0.5 100000
输出样例:
7000
#include <iostream>
#include <cmath>
using namespace std;
double MedicalReimbursement(
double totalFee, double outerFee, double startLine,
double rbRatio, double capLine)
{
/**********Program**********/
if (totalFee - outerFee < startLine)
{
return 0;
}
double res = (totalFee - outerFee - startLine) * rbRatio;
if (res > capLine)
{
return capLine;
}
return res;
/********** End **********/
}
int main()
{
double totalFee, outerFee, startLine, rbRatio, capLine;
cin >> totalFee >> outerFee >> startLine >> rbRatio >> capLine;
cout << MedicalReimbursement(totalFee, outerFee, startLine, rbRatio, capLine);
return 0;
}
计算a+b
完成程序,只在Program和End之间增加代码。
输入两个整数到变量a、b中,计算a+b的结果并输出。
例如:输入10 20,则输出30。
输入格式:
输入在一行中给出两个整数,中间用空格分开。
输出格式:
在一行中输出两个整数的和。
输入样例:
1 1
输出样例:
2
#include <iostream>
using namespace std;
int main()
{
int a, b;
/**********Program**********/
cin >> a >> b;
cout << a + b;
/********** End **********/
return 0;
}
求函数的值
完成程序,只在Program和End之间增加代码。
计算函数f(x)=a∗x3+b∗x2+c∗x+d的值,并将结果存入fx中。
输入格式:
输入在一行中给出5个浮点数,分别输入给a、b、c、d、x,中间用空格分开。
输出格式:
在一行中输出f(x)的值。
输入样例:
1 1 1 1 1
输出样例:
4
#include <iostream>
using namespace std;
int main()
{
double a, b, c, d, x, fx;
cin >> a >> b >> c >> d >> x;
/********Program********/
fx = a * x * x * x + b * x * x + c * x + d;
/******** End ********/
cout << fx;
return 0;
}
逆序输出正整数
完成程序,只在Program和End之间增加代码。
该程序将正整数n逆序输出。如输入123,则输出321,输入2300,则输出32。
输入格式:
输入在一行中给出1个1000到9999之间的正整数n。
输出格式:
在一行中输出n的逆序。
输入样例:
4321
输出样例:
1234
#include <iostream>
using namespace std;
int main()
{
unsigned n;
cin >> n;
/**********Program**********/
int a = n % 10;
int b = n / 10 % 10;
int c = n / 100 % 10;
int d = n / 1000;
cout << a * 1000 + b * 100 + c * 10 + d;
/********** End **********/
return 0;
}
计算课时费
完成程序,只在Program和End之间增加代码。
某健身俱乐部有两种课程,课程A和课程B,其中课程A为100元
一节课,B为150元一节课,有促销活动如下:
1.单课程满20节(含20),给与8折优惠。
2.同时选择两种课程,在优惠1的基础上再享受9折优惠。
3.计算折扣价格后,每满1000元,享受50元的返现。
以上促销活动可同时参加。
请完成函数cashcheck(),该函数的参数为客户希望学习的
A、B课程数,计算并返回该用户应支付的金额。
输入格式:
输入在一行中给出两个正整数,分别是客户学习课程A和课程B的课时数,中间用空格分开。
输出格式:
在一行中输出一个正整数表示客户要支付的金额。
输入样例:
20 20
输出样例:
3450
#include <iostream>
using namespace std;
int cashcheck(int ClassA, int ClassB);
/********Program********/
int cashcheck(int ClassA, int ClassB)
{
double tot1 = ClassA * 100;
double tot2 = ClassB * 150;
if (ClassA >= 20)
{
tot1 *= 0.8;
}
if (ClassB >= 20)
{
tot2 *= 0.8;
}
double tot = (tot1 + tot2);
if (ClassA != 0 && ClassB != 0)
{
tot *= 0.9;
}
tot -= int(tot / 1000) * 50;
return tot;
}
/******** End ********/
int main()
{
int ClassA, ClassB;
cin >> ClassA >> ClassB;
cout << cashcheck(ClassA, ClassB);
return 0;
}
完美数判断
完成程序,只在Program和End之间增加代码。
如果一个数等于其因数(不含自身)之和,则这个数就是完美数。
例如:6是完美数,因为6=1+2+3.
编写函数int IsPerfectNumber(int number);
判断正整数number是不是完美数,是则返回1,否则返回0.
输入格式:
输入在一行中给出一个正整数。
输出格式:
1或者0,正整数是完美数则输出1,否则输出0。
输入样例:
20
输出样例:
0
#include <iostream>
using namespace std;
int IsPerfectNumber(int number);
int main()
{
int num;
cin >> num;
cout << IsPerfectNumber(num);
return 0;
}
/* ********* Program begin ************* */
int IsPerfectNumber(int number)
{
int cnt = 0;
for (int i = 1; i <= number / 2; i ++)
{
if (number % i == 0)
{
cnt += i;
}
}
return number == cnt;
}
/* ********* Program end ************* */
公式计算
完成程序,只在Program和End之间增加代码。
编写计算 1 - 1/3 + 1/5 - 1/7 + 1/9 … 前n项之和的函数cal(int n),其中n是表达式的项数,n为正整数。例如,当n为4时,表达式为1 - 1/3 + 1/5 - 1/7,值为0.72381。
输入格式:
输入在一行中给出1个正整数n。
输出格式:
输出表达式前n项的和,为一个浮点数。
输入样例:
4
输出样例:
0.72381
#include <iostream>
using namespace std;
double cal(int n)
{
/**********Program**********/
double sign = 1;
double tot = 0;
for (double i = 1; i <= n; i += 1)
{
tot += 1 / (i * 2 - 1) * sign;
sign *= -1;
}
return tot;
/********** End **********/
}
int main()
{
int n;
cin >> n;
cout << cal(n);
return 0;
}
四则运算
完成程序,只在Program和End之间增加代码。
输入两个浮点数到全局变量a、b中,输入运算符到c中。
编写函数f(),根据运算符c的类型对a、b进行运算,将结果存入全局变量x中。
c是’+’,则x = a + b
c是’-‘,则x = a - b
c是’*’,则x = a * b
c是’/‘,则x = a / b
c是’%’,则x = 0
c是其他符号,则x = -1 例如,a = 5.1, b = 5.2, c = ‘+’, 则x = 5.1 + 5.2 = 10.3
输入格式:
输入在一行中给出两个浮点数和一个运算符,中间用空格分开。
输出格式:
在一行中输出计算结果。
输入样例:
43.2 21 +
输出样例:
64.2
#include <iostream>
using namespace std;
void f();
double a, b, x;
char c;
/**********Program**********/
void f()
{
switch(c)
{
case '+':
x = a + b;
break;
case '-':
x = a - b;
break;
case '*':
x = a * b;
break;
case '/':
x = a / b;
break;
case '%':
x = 0;
break;
default:
x = -1;
break;
}
}
/********** End **********/
int main()
{
cin >> a >> b >> c;
f();
cout << x;
return 0;
}
有几个素数?
完成程序,只在Program和End之间增加代码。
对于给定的正整数m、n,编写函数cOfPrimes计算m——n(包括m、n)之间素数的个数并返回。
例如,m = 5,n = 2,函数的返回值为3,因为2——5之间的素数有2、3、5。
输入格式:
输入在一行中给出两个正整数,中间用空格分开。
输出格式:
在一行中输出两个正整数之间的素数个数。
输入样例:
4 21
输出样例:
6
#include <iostream>
using namespace std;
/**********Program**********/
int cOfPrimes(int m, int n)
{
if (m > n)
{
int c = m;
m = n;
n = c;
}
if (m <= 1)
{
m = 2;
}
int tot = 0;
for (int i = m; i <= n; i ++)
{
bool judge = 0;
for (int j = 2; j <= i / 2; j ++)
{
if (i % j == 0)
{
judge = 1;
break;
}
}
if (judge == 0)
{
tot += 1;
}
}
return tot;
}
/********** End **********/
int main()
{
int m, n;
cin >> m >> n;
cout << cOfPrimes(m, n);
return 0;
}
楼梯的走法
完成程序,只在Program和End之间增加代码。
张楚爬楼梯,已知他每次只能走一级或者两级台阶,要求实现
递归函数waysOfClimbing(int n),计算n级台阶的楼梯,张楚
一共有多少不同的走法数并返回。
例:假设楼梯一共有3级,他可以每次都走一级,即1 1 1,或
者第一次走一级,第二次走两级,即1 2,也可以第一次走两级
,第二次走一级,即2 1,一共3种方法。
完成程序,只在Program和End之间增加代码。
输入格式:
输入在一行中给出一个整数表示楼梯的台阶级数。
输出格式:
在一行中输出走法数。
输入样例:
3
输出样例:
3
#include <iostream>
using namespace std;
/**********Program**********/
int waysOfClimbing(int n)
{
if (n == 1)
{
return 1;
}
if (n == 2)
{
return 2;
}
return waysOfClimbing(n - 1) + waysOfClimbing(n - 2);
}
/********** End **********/
int main()
{
int n;
cin >> n;
int numOfWays = waysOfClimbing(n);
cout << numOfWays;
return 0;
}

浙公网安备 33010602011771号