| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 694 人关注过本帖
标题:小白求教各位大神,能帮我看看编码错在哪了嘛,简单的加减乘除
只看楼主 加入收藏
jty928928
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-5-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
小白求教各位大神,能帮我看看编码错在哪了嘛,简单的加减乘除
#include <stdio.h>
#include <stdlib.h>
char token;
int mid();
int high();
void match( char expectedToken ) /*对当前的标志进行匹配*/
{
if( token == expectedToken ) token = getchar(); /*匹配成功,获取下一个标志*/
else
{      
printf("cannot match\n");
exit(1); /*匹配不成功,退出程序*/
}
}
int low( void )/*用于计算表达式中级别最低的运算*/
{
int result = mid(); /*计算比加减运算优先级别高的部分*/
while(( token == '+' ) || ( token == '-' ))
if ( token == '+')
{
match('+');     /*进行加法运算*/
result += mid();
break;
}
else if ( token == '-')
{
match('-');    /*进行减法运算*/
result -= mid();
break;
}
return result;
}
int mid( void )/*用于计算表达式中级别较高的运算*/
{
int div();/*除数*/
       int result = high(); /*计算比乘除运算优先级别高的部分*/
       while(( token == '*' ) || ( token == '/' ))
if ( token == '*')
{
match('*');     /*进行乘法运算*/
result *= high();
break;
}
else if ( token == '/')
{
match('/');    /*进行除法运算*/
div=high();
if(div==0)/*需要判断除数是否为0*/
{
    printf("除数为0.\n");
    exit(1);
}
return /=div;
break;
}
return result;
}
int high( void )/*用于计算表达式中级别最高的运算,即带()的运算*/
{
int result;
if( token == '(' ) /*带有括号的运算*/
{
match( '(' );
result = low();/*递归计算表达式*/
match(')');
}
else if ( token>= '0'&&token<='9' ) /*实际的数字*/
{
ungetc( token, stdin ); /*将读入的字符退还给输入流,为读取整个数*/
scanf( "%d", &result ); /*读出数字*/
token = getchar();  /*读出当前的标志*/
}
else
{
printf("The input has unexpected char\n"); /*不是括号也不是数字*/
exit(1);
}
return result;
}
main()
{  
int result;  /*运算的结果*/                  
printf("*****************************************\n");
printf("**Welcome to use this simple calculator**\n");
printf("**Please input a multinomial like      **\n");
printf("**                    6-3*(5-1)/2+14/7 **\n");
printf("*****************************************\n");
token = getchar(); /*载入第一个符号*/

result = low(); /*进行计算*/
if( token == '\n' ) /* 是否一行结束 */
printf( "The answer is : %d\n", result );
else
{
printf( "Unexpected char!");
exit(1); /* 出现了例外的字符 */
}
scanf("%d",result);
return 0;
}
说是少了一个被除数,也不告诉我怎么加上去,求指教,能帮我看看还有什么问题嘛,谢谢各位了
搜索更多相关主题的帖子: include cannot result 表达式 
2015-05-21 10:41
jty928928
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-5-21
收藏
得分:0 
结果还是没人鸟我
2015-05-21 18:16
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:14 
你這種排版的代碼叫人怎麽看?讓你自己先看看,願意看麽?

授人以渔,不授人以鱼。
2015-05-21 18:19
jty928928
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-5-21
收藏
得分:0 
大神们,我错了,请原谅我不会排版,其实我就是想问下,怎么加一个被除数,不会导致后续出错
{
       int div();/*除数*/
       int result = high(); /*计算比乘除运算优先级别高的部分*/
       while(( token == '*' ) || ( token == '/' ))
if ( token == '*')
{
       match('*');     /*进行乘法运算*/
       result *= high();
       break;
}
else if ( token == '/')
{
      match('/');    /*进行除法运算*/
      div=high();
      if(div==0)/*需要判断除数是否为0*/
{
    printf("除数为0.\n");
    exit(1);
}
return /=div;
break;
}
2015-05-21 18:57
qq244998259
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-12-18
收藏
得分:0 
2015-09-06 13:46
快速回复:小白求教各位大神,能帮我看看编码错在哪了嘛,简单的加减乘除
数据加载中...
 
   



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

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