鱼C论坛

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

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

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

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

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

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

void move(int start,int ins)
{
    int i, j, k;
    for(i = start;i<length;i++) num[i] = num[i+1];
    num[start] = ins;
    for(j = start+1;j<length;j++) chs[j] = chs[j+1];
    //for(i = 0;i<length-1;i++) printf("%ld ",num[i]);
    //printf("\n");
    //printf("%s\n",chs);
    length -= 1;
}
long int f(int a, int b,char ch)
{
    switch(ch)
    {
        case '+': return a+b;
        case '-': return a-b;
        case '*': return a*b;
        case '/': return (int)a/b;
    }
}
void init()
{
    // 把 s 分成 num,chs
    int i, index = 0;
    for(i = 0;i<length;i++)
    {
        if(s[i]>='0' && s[i]<='9')
            num[index] = num[index]*10+(s[i] - '0');
        else
        {
            chs[index+1] = s[i];
            index += 1;
        }
    }
    length = index+1;
}
int main()
{
    int i, temp = 0;
    char ch;
    scanf("%s",s);
    length = strlen(s);
    //printf("%d\n\n", length);
    if(s[0] == '-') chs[0] = '-';
    else chs[0] = '+';
    init();
    for(i = 0;i<length;i++)
    {
        ch = chs[i];
        if(ch == '*' || ch == '/')
        {
            temp = f(num[i-1],num[i],ch);
            move(i - 1, temp);
            i -= 1;
        }
    }
    for(i = 1;i<length;i++)
    {
        ch = chs[i];
        if(ch == '+' || ch == '-')
        {
            temp = f(num[i-1],num[i],ch);
            move(i - 1, temp);
            i -= 1;
        }
    }
    printf("%ld\n",num[0]);
    return 0;
}
回复即可看到真正的答案....
游客,如果您要查看本帖隐藏内容请回复


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-17 16:23:00 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-17 21:52:49 | 显示全部楼层
太难了太难了看看大佬怎么写的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-9 15:18:50 | 显示全部楼层
加求余,指数幂等功能应该怎样呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-22 20:21:39 | 显示全部楼层
优秀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-22 22:25:41 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 16:25:40 | 显示全部楼层
研究一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-21 15:41:17 | 显示全部楼层
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-21 16:18:08 From FishC Mobile | 显示全部楼层
来看看。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-16 21:42:28 | 显示全部楼层
sddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-20 20:31:06 From FishC Mobile | 显示全部楼层
好奇
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-23 16:08:54 | 显示全部楼层
ok
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-24 17:23:46 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-29 20:40:49 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-5 13:48:49 | 显示全部楼层
了解一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-11 22:03:46 | 显示全部楼层
我来看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-21 23:14:31 | 显示全部楼层
冲冲冲
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-24 18:23:46 | 显示全部楼层
666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-2 16:48:27 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 16:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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