鱼C论坛

 找回密码
 立即注册
查看: 5474|回复: 26

[技术交流] C语言计算器

[复制链接]
发表于 2020-3-16 20:12:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 juhugufudu 于 2020-3-17 09:58 编辑
  1. /*
  2. 这个代码是输入以下的式子,如:
  3. 4565+987*989/9/9/9/9/9/852*987-965
  4. 但你可以把代码改一下,改成double,也可以写成这样:
  5. 输入:
  6. 5+9*8
  7. 输出:
  8. 5+9*8
  9. =5+72
  10. =77
  11. 输出 运算结果
  12. */
  13. #include<stdio.h>
  14. #include<string.h>
  15. char s[100];
  16. long int num[50] = {0};
  17. char chs[50];
  18. int length, x = 1;

  19. void move(int start,int ins)
  20. {
  21.     int i, j, k;
  22.     for(i = start;i<length;i++) num[i] = num[i+1];
  23.     num[start] = ins;
  24.     for(j = start+1;j<length;j++) chs[j] = chs[j+1];
  25.     //for(i = 0;i<length-1;i++) printf("%ld ",num[i]);
  26.     //printf("\n");
  27.     //printf("%s\n",chs);
  28.     length -= 1;
  29. }
  30. long int f(int a, int b,char ch)
  31. {
  32.     switch(ch)
  33.     {
  34.         case '+': return a+b;
  35.         case '-': return a-b;
  36.         case '*': return a*b;
  37.         case '/': return (int)a/b;
  38.     }
  39. }
  40. void init()
  41. {
  42.     // 把 s 分成 num,chs
  43.     int i, index = 0;
  44.     for(i = 0;i<length;i++)
  45.     {
  46.         if(s[i]>='0' && s[i]<='9')
  47.             num[index] = num[index]*10+(s[i] - '0');
  48.         else
  49.         {
  50.             chs[index+1] = s[i];
  51.             index += 1;
  52.         }
  53.     }
  54.     length = index+1;
  55. }
  56. int main()
  57. {
  58.     int i, temp = 0;
  59.     char ch;
  60.     scanf("%s",s);
  61.     length = strlen(s);
  62.     //printf("%d\n\n", length);
  63.     if(s[0] == '-') chs[0] = '-';
  64.     else chs[0] = '+';
  65.     init();
  66.     for(i = 0;i<length;i++)
  67.     {
  68.         ch = chs[i];
  69.         if(ch == '*' || ch == '/')
  70.         {
  71.             temp = f(num[i-1],num[i],ch);
  72.             move(i - 1, temp);
  73.             i -= 1;
  74.         }
  75.     }
  76.     for(i = 1;i<length;i++)
  77.     {
  78.         ch = chs[i];
  79.         if(ch == '+' || ch == '-')
  80.         {
  81.             temp = f(num[i-1],num[i],ch);
  82.             move(i - 1, temp);
  83.             i -= 1;
  84.         }
  85.     }
  86.     printf("%ld\n",num[0]);
  87.     return 0;
  88. }
复制代码
回复即可看到真正的答案....
游客,如果您要查看本帖隐藏内容请回复


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-17 16:23:00 | 显示全部楼层
看看
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-17 21:52:49 | 显示全部楼层
太难了太难了看看大佬怎么写的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-9 15:18:50 | 显示全部楼层
加求余,指数幂等功能应该怎样呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-22 20:21:39 | 显示全部楼层
优秀
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-22 22:25:41 | 显示全部楼层
学习学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 16:25:40 | 显示全部楼层
研究一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-21 15:41:17 | 显示全部楼层
谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-9-21 16:18:08 From FishC Mobile | 显示全部楼层
来看看。。。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-16 21:42:28 | 显示全部楼层
sddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-20 20:31:06 From FishC Mobile | 显示全部楼层
好奇
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-10-23 16:08:54 | 显示全部楼层
ok
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-10-24 17:23:46 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-10-29 20:40:49 | 显示全部楼层
学习
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-5 13:48:49 | 显示全部楼层
了解一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-11 22:03:46 | 显示全部楼层
我来看看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-21 23:14:31 | 显示全部楼层
冲冲冲
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-24 18:23:46 | 显示全部楼层
666
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-2 16:48:27 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-2 21:27:28 | 显示全部楼层
calculator函数中,pos1= 0;pos2 = 0;后面没有改变这两个变量的值,if语句中怎么判断pos1 >= 3? 且num[pos1 - 1] 是什么?这些不理解,望能回复,感谢。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-26 20:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表