| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 585 人关注过本帖
标题:求高手帮忙,看看哪里错了
只看楼主 加入收藏
scottwind
Rank: 1
等 级:新手上路
帖 子:10
专家分:3
注 册:2011-11-20
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
求高手帮忙,看看哪里错了
学C不到一个月第一次编程序,各位高手帮忙看一下吧,先谢过啦~~这是个求混合运算的计算器的程序~~


#include <stdio.h>
void main()
{
  int  a[20],sum=0;
  char b[20],c[20],d[20];
  int i;
  printf("输入您的算式:");
  scanf("%s",&d[]);
    for(i=0,d[i]!='\n',i++)
      switch(d[i])
   {
       case 0: a[i]=d[i]; break;
       case 1: a[i]=d[i]; break;
       case 2: a[i]=d[i]; break;
       case 3: a[i]=d[i]; break;
       case 4: a[i]=d[i]; break;
       case 5: a[i]=d[i]; break;
       case 6: a[i]=d[i]; break;
       case 7: a[i]=d[i]; break;
       case 8: a[i]=d[i]; break;
       case 9: a[i]=d[i]; break;
       case *: b[i]=d[i]; break;
       case /: b[i]=d[i]; break;
       case +: c[i]=d[i]; break;
       case -: c[i]=d[i]; break;
  }
    for(i=0,b[i]!='\n',i++)
 {     switch(b[i])
  {
       case *: a[i+1]=a[i-1]*a[i+1], a[i-1]=a[i+1] ; break;
       case /: a[i+1]=a[i-1]/a[i+1], a[i-1]=a[i+1] ; break;
       case 0:                                     ; break;
  }
 }
    for(i=0,c[i]!='\n',i++)
 {     switch(b[i])
  {
       case +: a[i+1]=a[i-1]+a[i+1], sum=a[i+1] ; break;
       case -: a[i+1]=a[i-1]-a[i+1], sum=a[i+1] ; break;
       case 0:                                  ; break;
  }
 }   
    printf("运算结果是:%f",sum);

}

[ 本帖最后由 scottwind 于 2011-11-23 01:52 编辑 ]
搜索更多相关主题的帖子: 计算器 include 
2011-11-23 01:21
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:5 
把你遇到的问题详细描述。。。

我们都在路上。。。。。
2011-11-23 12:14
scottwind
Rank: 1
等 级:新手上路
帖 子:10
专家分:3
注 册:2011-11-20
收藏
得分:0 
回复 2楼 hellovfp
应该是字符型数组赋值给整数数组有问题吧?我是直接就a[]=d[]了。。。但是不知道该怎么实现这两种类型数组的直接赋值。。。求帮忙,谢谢~
2011-11-23 13:35
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
好多的错误哦,认真读读书吧。

#include <stdio.h>
int main()
{
    int  a[20],sum=0;
    char b[20],c[20],d[20];
    int i;
    printf("输入您的算式:");
    scanf("%s",d);      
    for(i=0;d[i]!='\n';i++)  《---该打分号的地方你打逗号
        switch(d[i])
        {
        case 0:
            a[i]=d[i];
            break;
        case 1:
            a[i]=d[i];
            break;
        case 2:
            a[i]=d[i];
            break;
        case 3:
            a[i]=d[i];
            break;
        case 4:
            a[i]=d[i];
            break;
        case 5:
            a[i]=d[i];
            break;
        case 6:
            a[i]=d[i];
            break;
        case 7:
            a[i]=d[i];
            break;
        case 8:
            a[i]=d[i];
            break;
        case 9:
            a[i]=d[i];
            break;
        case '*':     《---该是字符的地方不打单引号,下面同。
            b[i]=d[i];
            break;
        case '/':
            b[i]=d[i];
            break;
        case '+':
            c[i]=d[i];
            break;
        case '-':
            c[i]=d[i];
            break;
        }
    for(i=0;b[i]!='\n';i++)
    {
        switch(b[i])
        {
        case '*':
            a[i+1]=a[i-1]*a[i+1], a[i-1]=a[i+1] ;
            break;
        case '/':
            a[i+1]=a[i-1]/a[i+1], a[i-1]=a[i+1] ;
            break;
        case 0:
            ;
            break;
        }
    }
    for(i=0;c[i]!='\n';i++)
    {
        switch(b[i])
        {
        case '+':
            a[i+1]=a[i-1]+a[i+1], sum=a[i+1] ;
            break;
        case '-':
            a[i+1]=a[i-1]-a[i+1], sum=a[i+1] ;
            break;
        case 0:
            break;
        }
    }
    printf("运算结果是:%d", sum); 《---你打成中文的逗号了。
    return 0;
}
程序逻辑没有改,自己改吧。

我们都在路上。。。。。
2011-11-23 14:20
scottwind
Rank: 1
等 级:新手上路
帖 子:10
专家分:3
注 册:2011-11-20
收藏
得分:0 
回复 4楼 hellovfp
恩,太谢谢啦,我把这些都改了,但是还有一个错误,就是运行的时候出现内存不能是written的对话框,这是怎么回事呀?求指教。
2011-11-23 15:41
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:5 
混合运算如果不考虑大数运算是要用逆波兰的

                                         
===========深入<----------------->浅出============
2011-11-23 16:37
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:5 
内存问题说明你输入的数据超过你定义的数组了,把数组弄大点。

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-11-23 17:00
scottwind
Rank: 1
等 级:新手上路
帖 子:10
专家分:3
注 册:2011-11-20
收藏
得分:0 
回复 7楼 waterstar
我把数组从20改到100还是一样。。。
2011-11-23 17:39
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
好吧,我承认之前我没仔细看。像这种算数运算如果你是要简单地话,可以人为的加上一些约束条件,比如说:没有括号,只有加减乘除运算,而且没出现小数,再有就是输入表达式中的数字是在一定范围内的,比如说都是两位数之类的,再者就是表达式不能太长,这样才能用普通的思维方式去写程序。否则,最好用逆波兰式编程,关于逆波兰式的东西,百度百科里有。

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-11-23 20:08
快速回复:求高手帮忙,看看哪里错了
数据加载中...
 
   



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

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