| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2704 人关注过本帖
标题:C语言A+B+C 一个题目运算有些不懂的地方求解答
只看楼主 加入收藏
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:10 
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

#define MAXINT  10
#define INTEGER '0'

int getint(char []);
void push(int);
int  pop(void);

int main(void)
{
    int type, sum;
    int count = 0;
    char s[MAXINT];

    while ((type = getint(s)) != EOF) {
        ++count;
        switch (type) {
            case INTEGER:
                push(atoi(s));
                break;
            case '\n':
                sum = 0;
                while (--count)
                    sum += pop();
                printf("\tsum = %d\n", sum);
                break;
            default:
                printf("error: unknown input\n");
                break;
        }
    }
    return 0;
}

#define LEVEL 100

int sp = 0;
int stack[LEVEL];

void push(int val)
{
    if (sp < LEVEL)
        stack[sp++] = val;
    else
        printf("error: stack full, can't push %d\n", val);
}

int pop(void)
{
    if (sp > 0)
        return stack[--sp];
    else {
        printf("error: stack empty\n");
        return 0;
    }
}

int getch(void);
void ungetch(int);

int getint(char s[])
{
    int c, i;

    while ((s[0] = c = getch()) == ' ' || c == '\t')
        ;
    s[1] = '\0';
    if (!isdigit(c) && c != '-' && c != '+')
        return c;
    i = 0;
    while (isdigit(s[++i] = c = getch()))
        ;
    s[i] = '\0';
    if (c != EOF)
        ungetch(c);
    return INTEGER;
}

#define BUFSIZE 10

int bufp = 0;
int buf[BUFSIZE];

int getch(void)
{
    return (bufp > 0) ? buf[--bufp] : getchar();
}

void ungetch(int c)
{
    if (bufp < BUFSIZE)
        buf[bufp++] = c;
    else
        printf("error: too many characters\n");
}

[ 本帖最后由 ditg 于 2014-8-28 19:47 编辑 ]

梦想拥有一台龙芯3A-4000
2014-08-27 22:01
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:0 
输入没有限制在三个,可以多试几个,呵呵

梦想拥有一台龙芯3A-4000
2014-08-27 22:03
快速回复:C语言A+B+C 一个题目运算有些不懂的地方求解答
数据加载中...
 
   



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

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