第三章-分支程序设计代码实例(C++蓝豹子)

例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;
}

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值