例3.1
银行有一年期账户和两年期账户。一年期的年利率是2.5%,两年期的年利率是2.8%,设计一个银行利息计算程序,输入账户类型、存款年份、取款年份、存款金额、输出利息
计算利息公式:本金*(1+利率)^n,n为存几年
计算利息程序1.0
#include<iostream>
#include<cmath>
using namespace std;
//蓝豹子40页例3.1
int main(){
//利率
const double oneYearRate = 0.025, twoYearRate = 0.028;
//本金,利息
double balance, interest;
//存款类型,起始年份,结束年份
int type,startYear,endYear;
cout<<"请输入存款类型(1:一年期,2:两年期):";
cin>>type;
cout<<"请输入存款金额:";
cin>>balance;
cout<<"请输入存款年份:";
cin>>startYear;
cout<<"请输入取款年份:";
cin>>endYear;
if(type==1){
interest = pow(1+oneYearRate,endYear-startYear)*balance-balance;
}
else{
interest = pow(1+twoYearRate, endYear-startYear)*balance-balance;
}
cout<<balance<<"元存"<<endYear-startYear<<"年共得利息"<<interest<<"元"<<endl;
return 0;
}
计算利息程序2.0
#include<iostream>
#include<cmath>
using namespace std;
int main(){
const double oneYearRate = 0.025, twoYearRate = 0.028;
double balance, interest, rate;
int startYear,endYear;
char type;
cout<<"请输入存款类型(O:一年期,T:两年期):";
cin>>type;
cout<<"请输入存款金额:";
cin>>balance;
cout<<"请输入存款年份:";
cin>>startYear;
cout<<"请输入取款年份:";
cin>>endYear;
if(type == 'O'){
rate = oneYearRate;
}
else{
rate = twoYearRate;
}
interest = pow(1+rate,endYear-startYear)*balance-balance;
cout<<balance<<"元存"<<endYear-startYear<<"年共得利息"<<interest<<"元"<<endl;
return 0;
}
例3.2
设计一个程序判断某一年是否为闰年
年份如果能整除400或年份能被4整除但不能被100整除是闰年
#include<iostream>
using namespace std;
int main(){
int year;
bool result;
cout<<"请输入要验证的年份;";
cin>>year;
result = year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
if(result){
cout<<year<<"是闰年"<<endl;
}
else{
cout<<year<<"不是闰年"<<endl;
}
return 0;
}
例3.3
设计一个程序,求一元二次方程ax^2+bx+c=0的解
#include<iostream>
#include<cmath>
using namespace std;
int main(){
double a, b, c, x1, x2, dlt;
cout<<"请输入3个参数:"<<endl;
cout<<"输入a:"; cin>>a;
cout<<"输入b:"; cin>>b;
cout<<"输入c:"; cin>>c;
if(a == 0){
if(b==0){
cout<<"非法方程"<<endl;
}else{
cout<<"一元一次方程,x="<<-c/b<<endl;
}
}
else{
dlt=b*b-4*a*c;
if(dlt>0){
x1=(-b+sqrt(dlt))/2/a;
x2=(-b-sqrt(dlt))/2/a;
cout<<"x1="<<x1<<", x2="<<x2<<endl;
}
else if(dlt==0){
cout<<"x1=x2="<<-b/a/2<<endl;
}
else{
cout<<"无根"<<endl;
}
}
return 0;
}
例3.4
设计一个程序,输入圆的半径r及二维平面上的一个点(x,y),判断点(x,y)是否落在以原点为圆心,r为半径的圆内
思路:只需检查x^2+y^2
的值,如果小于等于r^2
,则在圆内,否则在圆外
#include <iostream>
using namespace std;
int main()
{
double radius, x, y;
cout << "请输入圆的半径:";
cin >> radius;
cout << "请输入点的坐标:";
cin >> x >> y;
cout << "点(" << x << "," << y << ")" <<
(x*x + y*y <=radius*radius?"":"没有")<< "落在圆内" <<endl;
return 0;
}
例3.5 在例3.1中增加一个活期账户,利率是1.2%,修改源程序
思路:switch语句
#include <iostream>
#include <cmath>
using namespace std;
int main(){
const double rate1Year = 0.025, rate2Year = 0.028, currentRate = 0.012;
double balance, interest;
int startYear, endYear, type;
cout << "请输入存款类型(1:一年期, 2:两年期,0:活期):";
cin >> type;
cout << "请输入存款金额:";
cin >> balance;
cout << "请输入起始年份:";
cin >> startYear;
cout << "请输入结束年份:";
cin >> endYear;
switch(type){
case 0:
interest = pow(1 + currentRate, endYear - startYear) * balance - balance;
break;
case 1:
interest = pow(1 + rate1Year, endYear - startYear) * balance - balance;
break;
case 2:
interest = pow(1 + rate2Year, endYear - startYear) * balance - balance;
break;
}
cout << balance << "元存" << endYear - startYear << "年共得利息" << interest << "元" <<endl;
return 0;
}
例3.6 设计一个程序,将百分制的考试分数转换为A,B,C,D,E五级计分。
转换规则是
>=90 A
>=80 <90 B
>=70 <80 C
>=60 <70 D
<60 E
#include <iostream>
using namespace std;
int main()
{
int score;
cout << "请输入分数:";
cin >> score;
switch(score / 10){
case 10:
case 9:
cout << "A";
break;
case 8:
cout << "B";
break;
case 7:
cout << "C";
break;
case 6:
cout << "D";
break;
default:
cout << "E";
}
cout << endl;
return 0;
}
例3.7 设计计算机自动出四则运算计算题(10以内)
思路:需要用到随机数库<cstdlib>
,srand(time(NULL))设置随机数种子为系统时间
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
int num1, num2, op, result1;
int result2 = 0;//默认余数为0
srand(time(NULL));//随机种子初始化
num1 = rand() * 10 / (RAND_MAX + 1); //生成运算数1
num2 = rand() * 10 / (RAND_MAX + 1); //生成运算数2
op = rand() * 4 /(RAND_MAX + 1);//生成运算符,0:+;1:-;2:*;3:/
switch(op){
case 0:
cout << num1 << "+" << num2 << "=? ";
cin >> result1;
if(num1 + num2 == result1) cout << "正确\n";
else cout << "错误,正确答案为" << num1 + num2 << endl;
break;
case 1:
cout << num1 << "-" << num2 << "=? ";
cin >> result1;
if(num1 - num2 == result1) cout << "正确\n";
else cout << "错误,正确答案为" << num1 - num2 << endl;
break;
case 2:
cout << num1 << "*" << num2 << "=? ";
cin >> result1;
if(num1 * num2 == result1) cout << "正确\n";
else cout << "错误,正确答案为" << num1 * num2 << endl;
break;
case 3:
cout << num1 << "/" << num2 << "=? ";
cin >> result1;
if(num1 % num2 !=0){
cout << "余数为=?";
cin >> result2;
}
if((num1 / num2 == result1) && (num1 % num2 == result2)){
cout << "正确";
}
else
cout << "错误,正确答案为"<< num1 / num2 << ",余数为" << num1 % num2 <<endl;
break;
}
return 0;
}