鱼C论坛

 找回密码
 立即注册
查看: 4950|回复: 7

第一次发啊,发啥,一题C吧

[复制链接]
发表于 2011-4-29 02:31:29 | 显示全部楼层 |阅读模式

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

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

x
程序模拟简单运算的工作,输入一个算式(没有空格),遇到等号“=”说明输入结束,输出结果,假设计算器只能时行加减乘除运算,运算数和结果都是整数,4种运算符和优先级相同,按从左到右的顺序计算,如,输入“1+2*10-10/2=”后,输出10。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-4-29 06:59:03 | 显示全部楼层
:o:o:o:o:o:o:o
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-4-29 12:13:19 | 显示全部楼层
  1. #include <stdio.h>

  2. void main()
  3. {
  4.         int a, b;
  5.         char c;

  6.         scanf("%d", &a);
  7.         for(;(c = getchar()) != '=';)
  8.         {
  9.                 scanf("%d", &b);
  10.                
  11.                 switch(c)
  12.                 {
  13.                 case '+':
  14.                         b = a + b;
  15.                         break;
  16.                 case '-':
  17.                         b = a - b;
  18.                         break;
  19.                 case '*':
  20.                         b = a * b;
  21.                         break;
  22.                 case '/':
  23.                         b = a / b;
  24.                         break;
  25.                 }
  26.                 a = b;
  27.         }

  28.         printf("%d\n", b);
  29. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-4-29 15:11:50 | 显示全部楼层
简单的检测可以通过,复杂的你试试看吧~
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>

  4. char get_num(char s[]);

  5. void main()
  6. {
  7.       int num_1, num_2;
  8.       char c;
  9.       char s[10];
  10.       
  11.       c = get_num(s);
  12.       num_1 = atoi(s);

  13.       while( c != '=' )
  14.       {            
  15.             switch(c)
  16.             {
  17.             case '+':
  18.                   c = get_num(s);
  19.                   num_2 = atoi(s);
  20.                   num_1 += num_2;
  21.                   break;
  22.             case '-':
  23.                   c = get_num(s);
  24.                   num_2 = atoi(s);
  25.                   num_1 -= num_2;
  26.                   break;
  27.             case '*':
  28.                   c = get_num(s);
  29.                   num_2 = atoi(s);
  30.                   num_1 *= num_2;
  31.                   break;
  32.             case '/':
  33.                   c = get_num(s);
  34.                   num_2 = atoi(s);
  35.                   num_1 /= num_2;
  36.                   break;
  37.             }
  38.       }
  39.       
  40.       printf("%d\n", num_1);
  41. }

  42. char get_num(char s[])
  43. {
  44.       int i=0;
  45.       s[i] = getche();
  46.       while( s[i] != '=' )           
  47.       {
  48.             if( s[i]=='+' || s[i]=='-' || s[i]=='*' || s[i]=='/')
  49.             {
  50.                   return s[i];
  51.             }
  52.             s[++i] = getche();
  53.       }
  54.       return '=';
  55. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-5-2 19:24:14 | 显示全部楼层
:Q:Q:Q:Q:Q:Q:Q:Q
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-27 00:33:45 | 显示全部楼层
本人小白,希望大家写程序时加点备注说明,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-27 05:04:47 | 显示全部楼层
怎么会等于 10? 为什么?  这个试题不应该  乘法优先  得出 1+20-10/2  21-10   11/2   5 余 1  
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-27 13:15:04 | 显示全部楼层
这个有点意思~哈哈
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-11-6 02:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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