| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1362 人关注过本帖
标题:散分求解答,关于无规则运算
取消只看楼主 加入收藏
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
散分求解答,关于无规则运算
输入一个算式(没有空格),遇等号'='说明输入结束。假设只进行“加、减、乘、除”运算,且运算数和结果都是整数,四种运算符的优先级别相同,从左到右的顺序计算。如,输入“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
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
收藏
得分:0 
回复 2楼 beyondyf
很好的方法啊,够简洁,输入一个数据再用switch语句判断符号进行运算,然后再跳出该语句,继续输入数据,嗯,看明白了,谢谢了啊,版主大人

老师说,2B是通向梦想的第一步
2012-02-22 15:38
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
收藏
得分:0 
回复 4楼 beyondyf
估计版主大人是被小姑娘吸引而来的吧嘿嘿

老师说,2B是通向梦想的第一步
2012-02-22 15:45
纯情小郎君
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
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
收藏
得分:0 
回复 8楼 beyondyf
变量比我的还多捏,我来试试稍微修改下先。。。谢谢斑竹大人了,你的一护头像我记得很牢啊,我问题很多的,下次开贴再大大的奖奖你哈

老师说,2B是通向梦想的第一步
2012-02-22 22:48
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
收藏
得分:0 
回复 10楼 beyondyf
这里count += c1 < 60 || c2 < 60 || c3 < 60 || c4 < 60是不是当有一个数小于60则自加啊?奇怪,怎么不是count ++呢

老师说,2B是通向梦想的第一步
2012-02-22 23:31
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
收藏
得分:0 
回复 13楼 laoyang103
这个^是什么意思?因为题目是规定自左向右运算的,混合运算的话应该也是遵循这个原则的吧

老师说,2B是通向梦想的第一步
2012-02-23 20:32
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
收藏
得分:0 
原来是这意思,嗯,那样好像复杂了点,我试试看先

老师说,2B是通向梦想的第一步
2012-02-23 21:32
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
收藏
得分:0 
回复 13楼 laoyang103
老杨大哥啊,小子不才啊,貌似可以用函数解决,不过我不会,我单纯的用普通方法在死神大哥的基础上加了下工好像可以解决一些输入,不过还是不靠谱呢请赐教
程序代码:
#include<stdio.h>
int main()

 {
     int n, a, b;
     char c;
     for(scanf("%d", &n); n--;)                               
     {
         scanf("%d", &a);                                    
         while((c = getchar()) != '=')                     
         {
             scanf("%d", &b);   
             if(c=='*'||c=='/')
             {
                 switch(c)
                 {
                 case '*': a *= b; break;
                 case '/': a /= b; break;
                 }
             }
             else if(c=='+'||c=='-')
             {
             switch(c)
             {
                 case '+': a += b; break;                  
                 case '-': a -= b; break;
         }
             }
         printf("%d\n", a); 
         }
     }
     return 0;

 }

老师说,2B是通向梦想的第一步
2012-02-23 22:15
快速回复:散分求解答,关于无规则运算
数据加载中...
 
   



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

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