c语言编写计算器程序

c语言编写计算器程序,第1张

C语言编写计算器

我们可以用printf和scanf函数输出结果和获取用户的输入。需要<stdioh>头文件。scanf函数在读取数据的时候不需要再一行上输入每个数据,只要数据和数据之间留出空白就可以了。先声明两个变量number1和number2,operation变量用来存储运算符。用scanf函数获取这两个数字和运算符。分别用%lf %c %lf

然后需要检测输入是否是正确的,检查是不是+ - / %,在这里要用到switch函数,用来看operation变量是否别传入了正确的值。

switch(operation)

{

case '+':

printf

}

具体的运算我们只需要再case之后的printf语句中设定和输出就可以了。

由于除法和取余运算比较特殊,我们单独说明。除法的除数不能为零,所以除法需要检测除数是否为零,只需要用if else语句就可以,if(number2 == ),取余运算符对于浮点数没有意义,所以将浮点数转换为long类型,强制类型转换,if((long)number2 == 0)   else ,这样整个代码就完成了。

简单计算器的编辑并不难,但是要注意一些细节,除法的处理要注意除数不能为零的情况,而且取模运算要将两个 *** 作数转化为整型,当然,作为真正的计算器,只实现这些功能是不够的,还需要更多的功能,不过有一个好的开始也不错。

下面我们就运行一下这个程序吧。2513的值和8%5的值。可以看到是我们期望的值。

#include<stdioh>

#include<windowsh>

#include<mathh>

#define p 31415926

#define r p/180 //r=p/180,p=314,p/180是求的1弧度,下面sin(里面要求的是弧度),sin(30弧度)=05。 void main()

{

float i,j,k;

int l,m,n,a[10];

char cmd;

LOOP:

system("cls");

printf("\n");

printf("小寒计算器\n");

printf("\n");

printf("\n\n本计算器提供+、-、、/四种运算。\n");

printf("p-代表圆周率pai。\n");

printf("a-代表十进制转换为二进制。\n");

printf("b-代表十进制转换为八进制。\n");

printf("c-代表十进制转换为十六进制。\n");

printf("d-代表该数值开方。\n");

printf("e-代表该数值开立方。\n");

printf("f-代表求几次方。\n");

printf("S-代表sin。\n");

printf("C-代表cos。\n");

printf("T-代表tan。\n");

printf("\n\n请输入要计算的数字和运算符号,输入“#”时,结束;输入“!”时复位。\n");

scanf("%f",&k);

while((cmd=getchar())!='#')

{

if(i!=0)

switch(cmd)

{

case '+': scanf("%f",&i);

k=k+i;

printf("=%52f",k);

break; case '-': scanf("%f",&i);

k=k-i;

printf("=%52f",k);

break; case '': scanf("%f",&i);

k=ki;

printf("=%52f",k);

break; case '/': scanf("%f",&i);

k=k/i;

printf("=%52f",k);

break;

case 'p': k=kp;

printf("%64f",k);

break; case 'f': printf("请输入要求该数字的几次方:");

scanf("%d",&n);

i=k;

for(m=0;m<n-1;m++)

k=ki;

printf("%52f",k);

break; case 'a': printf("转换成二进制\n");

m=0;

while((int)k>0)

{

l=k;

k=k/2;

l=l%2;

a[m]=l;

m++;

}

for(n=m-1;n>=0;n--)

printf("%d",a[n]);

break; case 'b': printf("转换成八进制\n");

m=0;

while((int)k>0)

{

l=k;

k=k/8;

l=l%8;

a[m]=l;

m++;

}

for(n=m-1;n>=0;n--)

printf("%d",a[n]);

break;

case 'c': printf("转换成十六进制\n");

m=0;

while((int)k>0)

{

l=k;

k=k/16;

l=l%16;

a[m]=l;

m++;

}

for(n=m-1;n>=0;n--)

{

if(a[n]==10)

{ printf("A");continue;}

else if(a[n]==11)

{ printf("B");continue;}

else if(a[n]==12)

{ printf("C");continue;}

else if(a[n]==13)

{ printf("D");continue;}

else if(a[n]==14)

{ printf("E");continue;}

else if(a[n]==15)

{ printf("F");continue;} printf("%d",a[n]);

}

break;

case 'e': printf("该数值开立方得\n");

i=pow(k,10/3);

printf("%52f",i );

break;

case 'd': printf("该数值开方得\n");

i=k/2;

j=sqrt(k);

printf("%52f",j);

break; case 'S': k=kr;

i=sin(k);

printf("%52f",i);

break;

case 'C': k=kr;

i=cos(k);

printf("%52f",i);

break; case 'T': k=kr;

i=tan(k);

printf("%52f",i);

break; case '!': goto LOOP;

}

}

}

使用win键或者是左键单击windows开始,在下面的搜索框中输入计算器。

接下来就能看到搜索的最上面会匹配出来计算器,单击就能打开。

系统自带的计算器工具放桌面方法:

点击桌面左下角的开始菜单。

在查找输入框中输入“calcexe”。

在查找到的文件中,右下所示,右击选择“属性”。

在属性对话框中可以看到计算器工具所在的位置:C:\Windows\System32目录下。

然后我们打开资源管理器(此电脑),打开C盘。

在C盘目录下找到Windows文件夹,点击打开。

在Windows文件夹下找到System32目录,点击打开。

进入到System32目录后找到calcexe这个软件,将它复制到桌面。

放到桌面后,双击打开,可以正常运行。

#include<iostream>

#include<cmath>

#include<string>

using namespace std;

const double pi = 314159265; const double e = 2718281828459; const int SIZE = 1000;

typedef struct node//为了处理符号而建立的链表(如: 1+(-2)) { char data; node next; }node;

typedef struct stack_num//存储 数 的栈 { double top; double base; }stack_num;

typedef struct stack_char//存储 运算符号 的栈 { char top; char base; }stack_char;

stack_num S_num;//定义 stack_char S_char;//定义

char fu[18] = {'\n', ')', '+', '-', '', '/', '%', '^', 'Q', 'L', 'C', 'S', 'T', 'c', 's', 't', '('};

int compare[1000];//表现出各运算符号的优先级 double shu[1000];//存储 "数" 的数组

double dai_result;//运算的结果,是为了处理 M 运算(简介函数里有M的定义) int biao = 0;//和dia_result 一样,为了处理 M 运算 char line[SIZE];//输入的所要计算的表达式

void init()//初始化 { compare[fu[0]] = -2;//用数字的大小表现出符号的优先级

compare[fu[1]] = -1; compare[fu[2]] = 2; compare[fu[3]] = 2; compare[fu[4]] = 4; compare[fu[5]] = 4; compare[fu[6]] = 4; compare[fu[7]] = 5; for(int i = 8; i <= 15; i++) compare[fu[i]] = 6; compare[fu[16]] = 7; S_numbase = (double)malloc(sizeof(double)SIZE);//为栈开辟空间 S_charbase = (char)malloc(sizeof(char)SIZE);//同上 S_numtop = S_numbase; S_chartop = S_charbase; }

void push_num(double n)//数字进栈 { ++S_numtop = n; }

void push_char(char c)//运算符号进栈 { ++S_chartop = c; }

double pop_num()//数字出栈 { double m = S_numtop; S_numtop--; return m; }

char pop_char()//运算符号出栈 { char cc = S_chartop; S_chartop--; return cc; }

char get_top_char()//得到运算符号的栈中最顶端的运算符号 { return S_chartop;

}

double operate(double y, char c, double x)//

对两个数计算

(

含是双目运算符

:

, /

等等

)

{

double r;

if(c == '-')

r = x - y;

else if(c == '+')

r = x + y;

else if(c == '/' && y != 0)

r = x / y;

else if(c == '')

r = x y;

else if(c == '^')

{

r = 1;

for(int i = 1; i <= y; i++)

r = x;

}

else if(c == '%')

{

int r0 = (int)x % (int)y;

r = double(r0);

}

return r;

}

double operate_one(double one, char cc)//

对一个数运算

(

含单目运算符

:

log(L), sin(S)

等等

)

{

double r;

if(cc == 'Q')

r = sqrt(one);

else if(cc == 'C')

r = cos(one);

else if(cc == 'S')

r = sin(one);

else if(cc == 'T')

r = tan(one);

else if(cc == 'c')

i++;

}

i++;

}

if(ge >= 3)

return 0;

else

return 1;

}

void output(double result)//

打出结果

{

printf("

所得结果是

: ");

cout<<result<<endl;

}

void check()//

检查表达式是否合法

{

void introduce();

char cc;//

决定计算器按哪种功能进行计算

double result;//

结果

void input();//

定义

if( check_kuohao() && check_char() )//

看是否合法

,

合法则计算

{

result = compute();

output(result);

cout<<"

输入一个字符

'M'

'D'

'F',

决定是否继续

: "<<endl;

while(cin>>cc)

{

if(cc == 'M')

{

system("cls");

introduce();

printf("

您上次所得结果为

: ");

cout<<result<<endl;

cout<<"

在上次计算结果的基础上

,

请继续输入想计算的表达式

"<<endl;

dai_result = result;

biao = 1;

input();//

输入表达式

break;

}

else if(cc == 'D')

{

system("cls");

introduce();

cout<<"

计算器已清零

,

请输入您所要计算的表达式

"<<endl;

input();//

输入表达式

break;

}

else if(cc == 'F')

{

system("cls");

cout<<"

计算器关闭

,

谢谢使用

!"<<endl;

break;

}

else

{

cout<<"

所输入字符无效

,

请输入一个字符

'M'

'D'

'F'!"<<endl;

continue;

}

}

}

else//

不合法,分两种不合法

{

if(check_kuohao() == 0 && check_char() == 1)

{

cout<<"

您所输入的表达式括号不匹配

,

请重新输入

:"<<endl;

input();//

输入表达式

}

else

{

cout<<"

您所输入的表达式不合法

,

请重新输入

:"<<endl;

input();//

输入表达式

}

}

}

void tackle_fuhao()//

处理负号

{

node root, head, p, q, p1;

root = head = new node;

head->next = NULL;

int i;

for(i = 0; line[i] != '\0'; i++)//

建立链表

{

p = new node;

p->data = line[i];

p->next = head->next;

head->next = p;

head = p;

}

// delete p;

q = (node)malloc(sizeof(node));

head = root;

if(root->next->data == '+' || root->next->data == '-')//

处理第一个字符

{

p = new node;

p->data = '0';

p->next = head->next;

head->next = p;

}

if(root->next != NULL)

{

for(q = root->next; q; q = q->next)

{

if(q->data == '(' && (q->next->data == '-' || q->next->data == '+'))

{

p = new node;

p->data = '0';

p->next = q->next;

q->next = p;

}

}

}

// delete q;

p1 = new node;

int qi = -1;

for(p1 = root->next; p1; p1 = p1->next)

{

line[++qi] = p1->data;

}

line[++qi] = '\0';

}

void input()//

输入

{

cin>>line;

if(biao == 0)

tackle_fuhao();//

处理负号

check();//

检查表达式是否合法

}

void introduce()//

对计算器的符号功能的简要介绍

{

cout<<"

计算器简要介绍

"<<endl;

cout<<"C(cos)

S(sin)

T(tan)

a(arccos)

c(arcsin) "<<endl;

cout<<"7

8

9

/

on

t(arctan) "<<endl;

cout<<"4

5

6

%

L(log)"<<endl;

cout<<"1

2

3

-

M(M+)

Q(sqrt)

"<<endl;

cout<<"0

+

^(

乘方

) F(off)

Enter(=) "<<endl;

cout<<"

对于对数输入

L2_5

表示以

2

为底

5

的对数

"<<endl;

cout<<"M(

在前面结果的基础上继续计算,

如:

上次结果为

10

现输入

+1052)"<<endl;

cout<<"D(

清零并继续输入

)"<<endl;

cout<<"F(

计算机关闭

)"<<endl;

cout<<"

输入

P

就代表输入圆周率

,

输入

E

代表输入自然对数

"<<endl<<endl;

}

void print()

{

system("color 2");

cout<<"

欢迎使用本计算器

"<<endl;

cout<<"

输入一个字符串

on,

计算器开始启动

"<<endl;

}

void if_start()//

是否启动计算器

{

string start;

print();

while(cin>>start)

{

if(start != "on")

{

cout<<"

您所输入的字符无效

,

请按照介绍的继续输入

:"<<endl;

continue;

}

else

break;

}

if(start == "on")

{

system("color 5");//

颜色的处理

system("cls");//

刷屏

}

introduce();//

对计算器的简要介绍

cout<<"

现在

,

请输入您所要计算的表达式

"<<endl;

input();//

输入所要计算的表达式

}

int main()

{

if_start();//

调用是否启动计算器函数

return 0;

}

r = acos(one);

else if(cc == 's')

r = asin(one);

else if(cc == 't')

r = atan(one);

#include<stdioh>

#include<mathh>

int main()

{

  char ch,op;

  double a,b,c;

  printf("请按s键开始计算,按q退出程序:\n");

  while(1)

  {

      while(scanf("%c",&ch),ch!='q')

      {

          if(ch!='s')

              break;

          scanf("%lf%c%lf",&a,&op,&b);

          switch(op)

          {

          case '+' :

              c=a+b;

              break;

          case '-' :

              c=a-b;

              break;

          case '' :

              c=ab;

              break;

          case '/' :

              c=a/b;

              break;

          }

          printf("%4f\n",c);

          printf("按s继续计算\n");

      }

      if(ch=='q')

          break;

  }

  return 0;

}

电脑里的计算器工具文件一般在c:\windows\system32文件里查找calcexe文件,有的话拖到开始菜单相应位置就行了。

没有了,可以在添加删除程序里选添删windows组件,找到并选中附件和工具后,点下边的详细信息,然后选附件的详细信息,里边就都是系统里的小组件了,选上代表添加,不选代表删除

1、首先我们打开电脑桌面,找到电脑左下角的菜单图标。

2、点击之后,我们将看到如下界面。

3、之后,我们找到拼音J中的计算器功能。

4、我们也可以在电脑桌面上找到搜索标志。

5、搜索计算器,点击打开。

6、最后我们就进入计算器了。

以上就是关于c语言编写计算器程序全部的内容,包括:c语言编写计算器程序、用C语言编写一个计算器程序、如何截取windows系统自带计算器程序的界面图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9508493.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存