循环出现问题

时间:2019-08-08 11:57:29

标签: c

我只是一个开始学习C的业余爱好者。我的第一个项目是一个简单的计算器,没有gui或过于复杂的任务。我指示程序正确执行四个基本数学运算。我正在尝试创建一个循环提示,以便继续对之前的迭代获得的结果进行数学运算。该程序实际上会执行此操作,但是当循环cicle启动时,该程序的行为会异常。该程序设置为注册一个初始值(a),它是一个浮点数,然后是一个字符(c),它表示切换条件的情况,必须选择要执行的正确操作,然后是另一个值(b),即另一个花车。我循环了这个循环,以便将(a)的值存储为(a + b ord ab或a * b或a / b)的结果,并且只获得c,以选择要执行的新操作,而b作为与a一起使用的新值。当循环cicle启动时,程序要求我指定c char和b以及其符号以正确运行。这种行为不会在*或/上仅通过加法或减法来再现。请帮助我

#include <stdio.h>
#include <math.h>
#define ADD(a , b) (a+=b)
#define SOT(a , b) (a+=-b)
#define PER(a , b) (a*=b)
#define DIV(a , b) (a/=b)
#define POT(a , b) pow(a,b)
#define LOG(a , b) (log10(a)/log10(b))
#define RAD(a , b) pow(a,b)
int main ()
{
    float  a,b,d,e;
    char c,g;
    printf ("Calcola \n");
    scanf ("%g", &a);
    while (1)
    {
        scanf("%c", &c);
        scanf ("%g", &b);
        switch (c)
        {
            case '+':
            d=ADD (a,b);
            printf ("%g", d);
            break;  

            case '-':
            d=SOT (a,b);
            printf ("%g", d);
            break;

            case '*':
            d=PER (a,b);
            printf ("%g ", d);
            break;

            case '/':
            d=DIV (a,b);
            printf ("%g", d);
            break;

            case '^':
            d=POT (a,b);
            printf ("%g", d);
            break;

            case 'l':
            d=LOG (a,b);
            printf ("%g", d);
            break;

            case 'v':
            d=RAD (a,b);
            printf ("%g", d);
            break;
        }

    }
    return 0;
}

我只希望程序在循环中不要求我插入数字的符号。

0 个答案:

没有答案