使用C++实现计算器(比windows的calc功能更加全面)v1.5.0

要求:

1.是一个计算器

2.为一个控制台(Console应用),无需ui界面(按钮等)

3.能够计算常规计算(加减乘除),还能够计算开方、平方、圆柱圆锥球体体积计算

4.能够计算绝对值

5.输出超出选项范围的值能够退出

6.π取3.14

1.头文件
#include <bits/stdc++.h> //万能头
#include <math.h>        //数学库
#include <iomanip>       //小数点后位数保留
#include <windows.h>     //系统头文件
using namespace std;     //命名空间

数学库用于计算开方、平方等操作

iomanip用于保留小数位数

系统头文件用于更改控制台文字颜色

2.数学表达方式

1.1下面介绍数学计算方式

           平方

              格式是这样的:

pow(x,y)

其中,pow是用于计算平方的关键字,x为底数,y为指数

也简化成这样计算平方

int a = x*x

a被赋值为x的2次方,其中,2为 pow(x,y)的指数

实例:

#include <math.h>
#include <iostream>
using namespace std;

int main(){
    int a = pow(2,3);  //pow计算
    int b = 2*2*2;     //常规计算
    cout << a << endl;
    cout << b << endl;
    return 0;
}

a与b的值一致,为8。

1.开方(根号)

需要使用数学库中的sqrt计算开方

格式:

sqrt(x) //计算根号x的值(x的开方)

在计算器里实现:

int kf(long double num1,long double num2)
{
	long double sum1 = sqrt(num1);
	long double sum2 = sqrt(num2);
	cout << "运算完成!结果数1为\n " << setiosflags(ios::fixed)<<setprecision(50)<< sum1 << endl;
	cout << "运算完成!结果数2为\n " << setiosflags(ios::fixed)<<setprecision(50)<< sum2 << endl;
	return sum1;
	return sum2;
	
}

使用setprecision保留50位小数

先定义一个名为kf(开方)的函数,num1与num2为浮点数,为了保证能够保留小数足够的位数,使用long double赋值

最后返回sum1与sum2的值

2.计算面积以及体积

要先知道各个几何体的体积公式,以及平面图形的面积公式

下面是要求中所使用的公式

圆柱:

 V表示体积

Sh表示底面积乘高    体积公式1

πr^2h表示先计算底面积,再乘高       体积公式2

C++表示都可以选,建议选第二个,因为第一种代码其实是一样的(要先计算底面积)

表示方法

int Vyz(double num1,double num2){
	double sum = 3.14*num1*num1*num2;
	cout << "运算完成!圆柱体积为:" << sum << endl;
	return sum;
} 

3.利用体积公式计算圆柱体积。

球体:V = 4.0/3*3.14*r*r*r;

半径的立方*π乘4/3

C++表示方法:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    double r, V;
    cin >> r;
    V = 4.0/3*3.14*r*r*r;
    cout << fixed << setprecision(2) << V << endl;
    return 0;
}

r为半径

项目计算器:

int Vqiu(double num1,double num2){
	double sum1 = 4.0/3*3.14*num1*num1*num1;
	double sum2 = 4.0/3*3.14*num2*num2*num2;
	cout << "运算完成!球体1体积为:" << sum1 << endl;
	cout << "运算完成!球体2体积为:" << sum2 << endl;
	return sum1;
	return sum2;
}

先定义一个名为Vqiu的函数(V:体积 qiu:球   这里我懒得打英语)

圆锥:

体积公式:

由于一个圆锥和圆锥是同底等高时,圆锥的体积是圆柱的1/3(不信的可以试试,准备一个等底等高的圆锥与圆柱,将圆锥装满水,圆锥的水只能到圆柱的1/3) 

所以在C++中,圆锥体积可以这样表示:

	double sum = 1.0/3*(3.14*num1*num1)*num2;

 与上方的公式一致,但是要先计算底面积,所以公式应该是这样的:

V=1/3πr²h

3.循环方式

这里不使用for循环,也不适用while循环,而去使用goto语句

项目节选:

int main(){
    start:
    ......
    if(...){
    int sum = ...;
    goto start;

4.实现加减乘除

1.要定义函数

2.要在main函数中调用

int jia(float num1, float num2)
{
    float sum = num1 + num2;
    cout << "运算完成!结果为\n " << sum << endl;
    return sum;
}

int jian(float num1, float num2)
{
    float sum = num1 - num2;
    cout << "运算完成!结果为\n " << sum << endl;
    return sum;
}

int cheng(float num1, float num2)
{
    float sum = num1 * num2;
    cout << "运算完成!结果为\n " << sum << endl;
    return sum;
}

int chu(float num1, float num2)
{
    float sum = num1 / num2;
    cout << "运算完成!结果为\n " << sum << endl;
    return sum;
}

注意,这里其实要用代数思想,要在没有确切的数时声明变量

5.完整计算器代码:
#include <bits/stdc++.h>
#include <math.h>
#include <iomanip>
#include <windows.h> 
using namespace std;

int jia(float num1, float num2)
{
    float sum = num1 + num2;
    cout << "运算完成!结果为\n " << sum << endl;
    return sum;
}

int jian(float num1, float num2)
{
    float sum = num1 - num2;
    cout << "运算完成!结果为\n " << sum << endl;
    return sum;
}

int cheng(float num1, float num2)
{
    float sum = num1 * num2;
    cout << "运算完成!结果为\n " << sum << endl;
    return sum;
}

int chu(float num1, float num2)
{
    float sum = num1 / num2;
    cout << "运算完成!结果为\n " << sum << endl;
    return sum;
}

int qvmo(int num1, int num2)
{
    int sum = num1 % num2;
    cout << "运算完成!结果为\n " << sum << endl;
    return sum;
}

int kf(long double num1,long double num2)
{
	long double sum1 = sqrt(num1);
	long double sum2 = sqrt(num2);
	cout << "运算完成!结果数1为\n " << setiosflags(ios::fixed)<<setprecision(50)<< sum1 << endl;
	cout << "运算完成!结果数2为\n " << setiosflags(ios::fixed)<<setprecision(50)<< sum2 << endl;
	return sum1;
	return sum2;
	
}

int pf(long double num1,long num2)   //num1为底数 num2为指数 
{
	long sum = pow(num1,num2);
	cout << "运算完成!结果为:" << sum << endl;
	return sum;
}

int jdz(int num1,int num2){
	int sum1 = abs(num1);
	int sum2 = abs(num2);
	cout << "运算完成!结果1为:" << sum1 << endl;
	cout << "运算完成!结果2为:" << sum2 << endl;
	return sum1;
	return sum2;
}

int xsjdz(double num1,double num2){
	double sum1 = fabs(num1);
	double sum2 = fabs(num2);
	cout << "运算完成!结果1为:" << sum1 << endl;
	cout << "运算完成!结果2为:" << sum2 << endl;
	return sum1;
	return sum2;
}

int Syuan(double num1,double num2){
	double sum1 = pow(num1,2) * 3.14;  
	double sum2 = pow(num2,2) * 3.14;
	cout << "运算完成!圆1面积为:" << sum1 << endl;
	cout << "运算完成!圆2面积为:" << sum2 << endl;
	return sum1;
	return sum2;
}

int Vqiu(double num1,double num2){
	double sum1 = 4.0/3*3.14*num1*num1*num1;
	double sum2 = 4.0/3*3.14*num2*num2*num2;
	cout << "运算完成!球体1体积为:" << sum1 << endl;
	cout << "运算完成!球体2体积为:" << sum2 << endl;
	return sum1;
	return sum2;
}

int Vzhui(double num1,double num2){
	double sum = 1.0/3*(3.14*num1*num1)*num2;
	cout << "运算完成!圆锥体积为:" << sum << endl;
	return sum;
}

int Vyz(double num1,double num2){
	double sum = 3.14*num1*num1*num2;
	cout << "运算完成!圆柱体积为:" << sum << endl;
	return sum;
} 
int main()
{
	system("color a");
	cout << "                               计算器v1.5.0               " << endl; 
    start:
    cout <<"特别提示:如果是空值就填0!" << endl;
    double num1;
    double num2;
    cout << "输入数字1的数值: " ;
    cin >> num1;
    cout << "输入数字2的数值: ";
    cin >> num2;
    cout << "输入13以上的数退出!"<<endl;
	cout << "你要进行什么运算?"<<endl << "1为加法运算" << endl << "2为减法运算\n3为乘法运算\n4为除法运算\n5为取模\n6为开方(取小数点后50位)\n7为平方计算\n8为整数绝对值\n9为小数绝对值\n10为圆面积计算(请输入半径)\n11为球体体积计算(请输入半径)\n12为圆锥体积计算(数字1为半径,数字2为高度)\n13计算圆柱体积\n" << endl; 
    cout << "请输入你要进行的操作:"; 
	int yunsuan = 0;
    cin >> yunsuan;

    if (yunsuan == 1) {
        float sum = jia(num1, num2);
        goto start;
    }

    if (yunsuan == 2) {
        float sum = jian(num1, num2);
        goto start;
    }

    if (yunsuan == 3) {
        float sum = cheng(num1, num2);
        goto start;
    }

    if (yunsuan == 4) {
        float sum = chu(num1, num2);
        goto start;
    }

    if (yunsuan == 5) {
        float sum = qvmo(num1, num2);
        goto start;
    }
    
    if (yunsuan == 6){
    	long double sum = kf(num1,num2);
    	goto start;
	}
	
	if (yunsuan == 7){
		long sum = pf(num1,num2);
		goto start;
	}
	
	if (yunsuan == 8){
		int sum = jdz(num1,num2);
		goto start;
	}
	if (yunsuan == 9){
		int sum = xsjdz(num1,num2);
		goto start;
	}
	if (yunsuan == 10){
		int sum = Syuan(num1,num2);
		goto start;
	}
	if (yunsuan == 11){
		int sum = Vqiu(num1,num2);
		goto start; 
	}
	if (yunsuan == 12){
		int sum = Vzhui(num1,num2);
		cout << "结果计算为取小数点后5位数";
		goto start;
	}
	if (yunsuan == 13){
		int sum = Vyz(num1,num2);
		goto start;
	} 
	if (yunsuan <= 14){
    	cout << endl << "[Error]运算程序退出!"; 
    	return 0;
    }
    if (yunsuan >= 0){
    	cout << endl << "[Error]运算程序退出!"; 
    	return 0;
	}
}

最后,记得要在超出选项范围的选项限制一下,比如这个:

if (yunsuan <= 14){                                //第185行
    	cout << endl << "[Error]运算程序退出!"; 
    	return 0;
    }
    if (yunsuan >= 0){
    	cout << endl << "[Error]运算程序退出!"; 
    	return 0;
	}

yunsuan选项超过14或为0为负数是判断,如果判断为True就退出,否则就使用goto语句回到start的位置继续计算

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值