我只是一个开始学习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;
}
我只希望程序在循环中不要求我插入数字的符号。