这又是以前的一篇文章,觉得有纪念价值。就发过来了。

去年暑假自己下了C语言实战105例,看了几个基础的,其中有一个是关于字符计算器的

我看起来蛮简单的,不过自己做起来我觉得还是做得少了,懵懵懂懂的。

现在想起那个觉得蛮有趣的(想想以前跟老大学做按钮计算器没做成,失败啊!~~~)

于是又重新写了一下,不过还是忍不住看了下源码,呵呵,真菜

不过发现里面有一点点错误,例如:不能计算 6 /4;只能计算 6/4 。

也许作者当时只想把原理展示出来,而把更多的细节留给了我们,不错的办法。

然后我自己也尝试着赶紧了一下:

#include

#include

#include

char token; //保存操作符

int error = 1;//error 为0表示计算中有错误

int mid();

int high();

int Match(char c)

{

//匹配成功则读入下一个字符并返回1

if(c == token)

{

while((token = getchar()) == ' ')

;

return 1;

}

//失败则返回0

else

return -1;

}

int low()

{

int result;

result = mid(); //读入操作数

while('+' == token || '-' == token) //计算多个加法与减法

if('+' == token) //计算加法

{

Match('+');

result += mid();

}

else if('-' == token) //计算减法

{

Match('-');

result -= mid();

}

return result;

}

int mid()

{

int result;

int div; //除数

result = high(); //读入操作数

while('*' == token || '/' == token) //计算多个乘法和除法

if('*' == token) //乘法

{

Match('*'); //匹配获取下一个字符

result *=high();

}

else if('/' == token) //除法

{

Match('/');

div = high(); //先读入除数

if(div) //除数不能为0

{

result /= div;

}

else

error = 0;

}

return result; //返回结果

}

int high()

{

int result;

if('(' == token)

{

Match('('); //获取输入中的下一个字符

result = low(); //计算括号内的表达式

Match(')'); //获取输入中的下一个字符

}

else if(token >= '0' && token <= '9')

{

ungetc(token,stdin); //如果token是数字,返还给输入流

scanf("%d",&result); //从输入中获取数字

while((token = getchar()) == ' ')

; // 消除空格符并读入下一个字符

}

else

error = 0;

return result; //返回结果

}

int main()

{

int result;

char title[] = "小小程序菜鸟野兔 qq:371514614 欢迎大家加我"; //做个小广告

SetConsoleTitle(title); //设置窗口标题

printf("*****************************************\n");

printf("**Welcome to use this simple calculator**\n");

printf("**Please input a multinomial like **\n");

printf("** 6-3*(5-1)/2+14/7 **\n");

printf("*****************************************\n");

while((token = getchar()) == ' ')

; //载入第一个字符

result = low(); //从低到高进行计算

if('\n' == token && (error != 0)) //按下回车则开始计算结果并判断计算过程中是否出错

printf("The answer is:%d\n",result);

else

printf("出错了\n");

getch(); //让屏幕停留一会

return 0;

}

我很佩服写出这个程序的人,刚开始拿到这程序的时候,我根本

就不相信它可以正确执行,后来直到自己运行了一下。然后我又想着它的工作

原理是什么呢(没办法,我就喜欢刨根问底。嘻嘻)。就自己看源码,根据注释慢慢看

。可那时候我刚学,递归都不是很懂,遇到不理解的,就把这里改一下在运行

看看有什么不同。就这样跌跌撞撞的弄懂了其中的原理,也让我自己成了一回计算机,

执行了一下这个程序。不过我真觉得自己模拟计算机执行代码很好。很能锻炼能力。

看看以前写的代码,心里还是挺有感触的。以前自己不怕死,不弄明白饭也不吃。

现在呢?我跟自己说想通了,不会就不会呗。锐气也就被磨掉了。

带着这样的想法,很久没有接触过编程了。昨天在群里被他们说成是“大牛”其实我

只是一个小菜鸟。

有个朋友说他以前是这个专业的,现在要重新拾起来。我也是这么想的,重新拾起来。

加油,大笨兔!!! :)

c语言字符型计算器,C语言字符计算器相关推荐

  1. (转)字符型指针变量与字符数组的区别

    (1)分配内存 设有定义字符型指针变量与字符数组的语句如下: char *pc ,str[100]; 则系统将为字符数组str分配100个字节的内存单元,用于存放100个字符.而系统只为指针变量pc分 ...

  2. c语言字符型运算符,C语言试题:数据类型、运算符与表达式

    <C语言试题:数据类型.运算符与表达式>由会员分享,可在线阅读,更多相关<C语言试题:数据类型.运算符与表达式(4页珍藏版)>请在人人文库网上搜索. 1.3 数据类型.运算符与 ...

  3. go 拼接mysql字符串_MYSQL 整型转字符型 拼接-Go语言中文社区

    题记: 没有什么能难倒中国程序员! update里的拼接很小众,但是有时候你不会也是急的李元芳都要飞起来 update table a set a.column = concat('凡众一是男孩子,出 ...

  4. c语言 字符型变量,C语言中字符型变量与整型变量的联系

    1)字符型变量可以与整型变量一样进行算术运算(使用字符数据的ASCII码值进行运算的) 例1: char  m = 'A'; char  n = 32;     //char类型直接赋值整型,此整型为 ...

  5. VS里SCANF_S不能输入字符型问题(输入字符型变量时,scanf语句被忽略!!!!)

    输入字符型变量时,scanf语句被忽略!!!! while循环里不能输入两次(用两个scanf)嘛? 字符char换成整型int 型就可以 感觉就这一句代码的前后有问题 解决方法: 在scanf前加上 ...

  6. C语言字符型PPT,C语言字符串ppt课件

    <C语言字符串ppt课件>由会员分享,可在线阅读,更多相关<C语言字符串ppt课件(40页珍藏版)>请在人人文库网上搜索. 1.1.第10章字符串,知识点1:字符串1.字符串常 ...

  7. c语言定义一个字符型变量,C语言-字符与字符串常量及变量

    字符型数据 字符常量:用单引号括起来的一个字符例如:'a' 'A''$''!' 注:'a'与'A'是不同的字符常量 转义字符:①以一个'\'开头的字符序列 例如:'\n'换行 '\t'横向跳格(水平制 ...

  8. 计算机编程c 语言实型数据,C语言-基础教程-C语言实型数据

    C语言-基础教程-C语言实型数据 分类:计算机等级 | 更新时间:2016-07-08| 来源:转载 2.4.1 实型常量 实型常量又称浮点常量,是一个十进制表示的符号实数.符号实数的值包括整数部分. ...

  9. c语言整型最大数,C语言:求一个短整型正整数中的最大数字

    C语言:求一个短整型正整数中的最大数字 关注:84  答案:5  手机版 解决时间 2021-01-16 02:17 提问者舊倳偂歡 2021-01-15 14:26 例如整数12354中的最大数字是 ...

  10. c 语言boll型变量,My语言几种常见指标编写与跨指标模型的案例分析

    发明者量化平台的My语言是一种函数高度集成且功能强大的量化编程语言,专为量化初学者量身定做,虽然它受众多初学者的欢迎,在功能上却一点不比别的编程语言逊色.在深度定制某些复杂策略方面,由于已经定制好的函 ...

最新文章

  1. Bootstrap按钮组件
  2. 远程开启目标计算机的远程桌面
  3. Eclipse将android 类编译为jar类库
  4. 【JavaScript】jQuery绑定事件
  5. ZedGraph在Web中的使用
  6. AndroidStudio中提示:Didn‘t find class “android.support.v7.widget.RecyclerView“
  7. 楼市调控要“围堵”更要“疏通”
  8. python3moduleoftheweek中文_[翻译]Python Module of The Week: Counter
  9. Direct ByteBuffer学习
  10. 南方人第一次见到雪的样子。。。| 今日最佳
  11. JavaWeb项目开发案例精粹-第3章在线考试系统-005action层
  12. 账户验证业务规则及改造要点介绍
  13. 机场云商sign解析
  14. 台式计算机m.2的参数,【联想启天 M参数】联想启天 M系列台式电脑参数-ZOL中关村在线...
  15. 这四大配音神器你用过几个?哪个好用?
  16. 抖音api开放平台对接_抖音开放一键发布功能 第三方内容可分享至抖音
  17. android textview 字体边框,android TextView加边框
  18. 重力加速度陀螺仪传感器MPU-6050(一)
  19. 将m个相同的球全部放到n个相同的盒子里面有几种放法
  20. 黑苹果教程(二)自己制作cdr、dmg镜像

热门文章

  1. java摆渡人,视频丨越野怪兽 JAVA 摆渡人(ANIMA)山地车
  2. C++11中的原子操作(atomic operation)
  3. 支持全文搜索的桌面搜索工具
  4. Go语言编程(旧读书笔记)
  5. 《圈圈教你玩USB》 第三章 USB鼠标的实现——看书笔记( 3 )
  6. MAC OS X 技术内幕 学习笔记之一 MAC OS的变迁
  7. 友情链接php源代码_2017最新ThinkPHP开发的友情链接交易系统平台源码
  8. hexo之Volantis主题美化
  9. Dynamics AX2012 弹出Message Box
  10. VC知识库文档中心嵌入开发WinCE 里面不少写的很好的WinCE的文章