| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1362 人关注过本帖
标题:散分求解答,关于无规则运算
只看楼主 加入收藏
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:18 
散分求解答,关于无规则运算
输入一个算式(没有空格),遇等号'='说明输入结束。假设只进行“加、减、乘、除”运算,且运算数和结果都是整数,四种运算符的优先级别相同,从左到右的顺序计算。如,输入“1+2*10-10/2=”之后,输出10.有多个测试用例。第一行是一个正整数N,表示测试用例的个数。
接下来是N行,每行是一个算式。每行所含字符个数小于1000个.
下面是我编的代码,不过运行不对捏,稍微有点纠结了,麻烦高手帮下忙,那个死神版主大人也来给点建议哈
#include<stdio.h>
int main()
{
    int i,n,a,b,s,sum;
    char ch;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        sum=0;
        scanf("%d%c%d",&a,&ch,&b);
        while((ch=getchar())!='=')
        {
            if(ch=='+')
                s=a+b;
            else if(ch=='-')
                s=a-b;
            else if(ch=='*')
                s=a*b;
            else if(ch=='/')
                s=a/b;
            sum=s+sum;
        }
        printf("%d\n",sum);
    }
    return 0;
}
搜索更多相关主题的帖子: 正整数 include 计算 测试 
2012-02-22 14:37
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:20 
程序代码:
#include<stdio.h>
int main()
{
    int n, a, b, c;
    for(scanf("%d", &n); n--;)
    {
        scanf("%d", &a);
        while((c = getchar()) != '=')
        {
            scanf("%d", &b);
            switch(c)
            {
                case '+': a += b; break;
                case '-': a -= b; break;
                case '*': a *= b; break;
                case '/': a /= b; break;
            }
        }
        printf("%d\n", a);
    }
    return 0;
}
//试试这个如何

重剑无锋,大巧不工
2012-02-22 15:00
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
收藏
得分:0 
回复 2楼 beyondyf
很好的方法啊,够简洁,输入一个数据再用switch语句判断符号进行运算,然后再跳出该语句,继续输入数据,嗯,看明白了,谢谢了啊,版主大人

老师说,2B是通向梦想的第一步
2012-02-22 15:38
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
这小姑娘实在太可爱了。不许换头像哦

重剑无锋,大巧不工
2012-02-22 15:42
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
收藏
得分:0 
回复 4楼 beyondyf
估计版主大人是被小姑娘吸引而来的吧嘿嘿

老师说,2B是通向梦想的第一步
2012-02-22 15:45
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
嗯,确实太喜欢了

重剑无锋,大巧不工
2012-02-22 15:47
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
收藏
得分:0 
回复 6楼 beyondyf
版主大哥,再请教下你一道题哈,就不另行开贴了,下次再给多点分你哈
输入有多组测试数据,首先是一个整数T,表示有多少组测试数据。
对于每一组测试数据,第一行是一个整数n,表示班里总共有多少个学生。
接下来有n行,每行有4个整数,代表一个学生的高数,C语言,英语和毛邓三的成绩
对于每一组输入,输出相应需要补考的人数。
我编了一个程序,不过是统计不及格的总数的,现在有点纠结怎么改成输出补考人数的。
#include<stdio.h>
int main()
{
    int n,i,a,t,count=0;
    for(scanf("%d",&t);t--;)                        //这里的办法是学你滴
    {
        for(scanf("%d",&n);n--;)
        {
            for(i=0;i<4;i++)
            {
                scanf("%d",&a);
                if(a<60)
                    count++;
            }
        }
        printf("%d\n",count);
    }
    return 0;
}

老师说,2B是通向梦想的第一步
2012-02-22 20:46
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
下次就不再赠送了。你不能仗着我喜欢这小丫头就白替你答题
这么写代码的恐怕在玩ACM的圈子里不止我一人。学会了,也是你的。
下面这段代码输出的就是补考人数。写成这样有点故意了
程序代码:
#include<stdio.h>
int main()
{
    int t, n, c1, c2, c3, c4, count;
    for(scanf("%d", &t); t--; printf("%d\n", count))
    for(scanf("%d", &n), count = 0; n-- && scanf("%d%d%d%d", &c1, &c2, &c3, &c4); count += c1 < 60 || c2 < 60 || c3 < 60 || c4 < 60);
    return 0;
}

重剑无锋,大巧不工
2012-02-22 22:40
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
收藏
得分:0 
回复 8楼 beyondyf
变量比我的还多捏,我来试试稍微修改下先。。。谢谢斑竹大人了,你的一护头像我记得很牢啊,我问题很多的,下次开贴再大大的奖奖你哈

老师说,2B是通向梦想的第一步
2012-02-22 22:48
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
傻孩子,这是最简单的方式。等你代码写多了就会理解了。

重剑无锋,大巧不工
2012-02-22 23:08
快速回复:散分求解答,关于无规则运算
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031394 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved