| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 813 人关注过本帖
标题:命令行参数问题
取消只看楼主 加入收藏
iceberg0
Rank: 1
等 级:新手上路
帖 子:37
专家分:9
注 册:2012-3-2
结帖率:0
收藏
 问题点数:0 回复次数:2 
命令行参数问题
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<ctype.h>
#define MAXOP 100
#define NUMBER '0'
int getop(char []);
void push(double);
double pop(void);
void ungetch(char []);
main(int argc, char *argv[])
{
     double op2;
     char s[MAXOP];
     while(--argc > 0)
     {
                  ungetch(" ");
                  ungetch(*++argv);
     
                  switch(getop(s)){
                                     case NUMBER:
                                          push(atof(s));
                                          break;
                                     case '+':
                                          push(pop()+pop());
                                          break;
                                     case '*':
                                          push(pop()*pop());
                                          break;
                                     case '-':
                                          op2 = pop();
                                          push(pop()-op2);
                                          break;
                                     case '/':
                                          op2 = pop();
                                          if(op2 != 0.0)
                                                 push(pop()/op2);
                                          else
                                               printf("error: zero divisor\n");
                                          break;
                                     default:
                                             printf("error: unkown command %s\n",s);
                                             argc = 1;
                                             break;
                        }
     }
     printf("\t%.8g\n", pop());
     return 0;
}
#define MAXVAL 100
int sp = 0;
double val[MAXVAL];
void push(double f)
{
     if(sp < MAXVAL)
             val[sp++] = f;
     else
         printf("error: stack full, can't push %g\n", f);
}
double pop(void)
{
       if(sp > 0)
             return val[--sp];
       else {
            printf("error: stack empty\n");
            return 0.0;
            }
}

int getop(char s[])
{
    int i,c;
    while((s[0] = c = getch()) == ' '||c == '\t')
                ;
    s[1] = '\0';
    if(!isdigit(c) && c != '.' && c != '-')
        return c;
    i = 0;
    if(c == '-')
    {
         if(isdigit(c = getch())||c == '.')
                      s[++i] = c;
         else
         {
             if(c!=EOF)
                       ungetch(c);
              return '-';
         }
    }
    if(isdigit(c))
      while(isdigit(s[++i] = c = getch()))
          ;
    if(c == '.')
       while(isdigit(s[++i] = c = getch()))
                            ;
    s[i] = '\0';
    if(c!=EOF)
              ungetch(c);
    return NUMBER;
}
#define BUFSIZE 100
char buf[BUFSIZE];
int bufp = 0;
void ungetch(char a[])
{
     int i = 0;
     if(bufp >= BUFSIZE)
             printf("unget: too many charaters\n");
     else
             buf[bufp++] = a[i];
}
为什么我的程序没有输出结果?
搜索更多相关主题的帖子: include void double 
2012-08-11 23:35
iceberg0
Rank: 1
等 级:新手上路
帖 子:37
专家分:9
注 册:2012-3-2
收藏
得分:0 
我在命令行下  输入  程序名 2 3 4 + ×
却没有显示输出
2012-08-12 21:12
iceberg0
Rank: 1
等 级:新手上路
帖 子:37
专家分:9
注 册:2012-3-2
收藏
得分:0 
望指点!!!
2012-08-12 21:14
快速回复:命令行参数问题
数据加载中...
 
   



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

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