计算器第一版:C语言,VC++6.0

本文介绍了一个使用C语言编写的简易计算器程序,该程序能够处理加减乘除运算,支持单个括号和嵌套括号,但不支持并列括号。程序通过分离数字、运算符和括号,逐层计算得出结果。
摘要由CSDN通过智能技术生成

这个计算器编写没有参考什么算法,都是自己想出来的,支持加减乘除,单个括号和嵌套括号,不能计算并列的括号。程序如下:

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>




/*全局变量*/
/*int  n=0;//n计算num[255]实际存入的字符个数
int  warn=0;
char num[255];//存放输入公式的字符串数组
char tnsarr[30];//存放数字字符的临时字符串数组
int  tnsarr_i=0;//存放数字字符的临时字符串数组的的下标
float  numarr[30];//存放数字的数组
int  numarr_i=0;//存放数字的数组的下标
char jcarr[30];//存放运算符的字符串数组
int  jcarr_i=0;//存放运算符的字符串数组的下标*/


int  n=0;//n计算num[255]实际存入的字符个数
int  warn=0;
float  fn=0;//存放临时计算结果
char cutnum[];
int  cutnum_i;


/*函数声明*/
void cut(char cutnum[],int cutnum_i);//判断公式中是否存在括号
void cutno(char cutno[],int cutno_i);//找出没有括号的那一层,四则运算
void cutyes(char cutyes[],int cutyes_i,int n1,int n2);//有括号,截取括号内公式
void Countno(char Countno[],int n);//当前公式没有括号,分离数字和运算符
void Countyes(char Countyes[],int n,int n1,int n2,float fn);当前公式有括号,分离数字和运算符
void CountC(float numarr[],int numarr_i,char jcarr[],int jcarr_i);//计算乘除法,返回值为代入公式的最终计算结果
void CountJ(float numarr[],int numarr_i,char jcarr[],int jcarr_i);//计算加减法,返回值为代入公式的最终计算结果




/*
void  Count(void);
void  CountC(void);
void  CountJ(void);
float cut(char cutnum[],int cutnum_i);//截取括号中数据,cutnum:输入的字符串,m字符串长度
*/


/*主函数,保存输入的计算公式,字符串的形式*/
int main()                                  
{    
  int  n=0;//n计算num[255]实际存入的字符个数
       char num[255];//存放输入公式的字符串数组
       int  warn=0;


  int i=0;
  printf("*******************************C语言简易计算器******************************\n");
  printf("*******************************不支持小数点输入******************************\n");
  printf("支持单层或嵌套括号运算如:2*(2+3-(6-5))/2,不支持并列括号如:2*(2+3)-(6-5)/2\n");


  scanf("%s",&num);//接收输入的公式以字符串形式
       //printf("********************C语言简易计算器********************\n");


  for(i=0;;i++)
  {
  if(num[i]=='\0')
  {
  n=i;//n计算num[255]实际存入的字符个数
  //printf("实际存入的字符个数%d\n",n);
  break;
  }
  }


       /*验证公式输入是否正确*/
  for(i=0;i<n;i++)
  {
  if((num[i]>=48&&num[i]<=57)||num[i]=='*'||num[i]=='/'||num[i]=='+'||num[i]=='-'||num[i]=='('||num[i]==')')
  {
  warn=0;
  }
  else
  {
  warn++;
  }
  }


  if(warn==0)
  {
           cut(num,n);//公式输入正确,判断公式中是否有括号
           printf("公式计算结果:%f\n",fn);//输出结果,字符类型要对
  }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值