📄 test.cpp
字号:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <ctype.h>
#define LINSIZ 40
char *getline(char*);
main ()
{
double reg = 0.0;
char line[LINSIZ];
while (getline(line) != NULL)
{
char *op;
double val;
val = strtod(line,&op);
while (isspace(*op))
++op;
strupr(op);
if (*op == '+')
reg += val;
else if (*op == '-')
reg -= val;
else if (*op == '*')
reg *= val;
else if (*op == '/')
{
if (val != 0)
reg /= val;
else
{
puts("ERROR > invalid divisor <");
continue;
}
}
else if (*op == '=')
reg = val;
else if (*op == '^')
{
if (val < 0.0)
{
puts("ERROR > invalid exponet <");
continue;
}
else if (val == 0.0)
reg = 1.0;
else if (val == 0.5)
reg = sqrt(reg);
else
reg = pow(reg,val);
}
else if (strncmp(op,"NEGATE",1) == 0)
reg = -reg;
else if (strncmp(op,"MOD",1) == 0)
{
if (val == 0.0)
{
puts("ERROR > invalid modulus <");
continue;
}
else
reg = fmod(reg,val);
}
else if (strncmp(op,"CEIL",1) == 0)
reg = ceil(reg);
else if (strncmp(op,"FLOOR",1) == 0)
reg = floor(reg);
else if (strncmp(op,"ROUND",1) == 0)
reg = (reg < 0.0) ? ceil(reg - 0.5) : floor(reg + 0.5);
else if (strncmp(op,"SQRT",1) == 0)
reg = sqrt(reg);
else if (*op != '\0')
{
puts("ERROR > invalid operation <");
continue;
}
printf("\t%s = %g\n",line,reg);
}
return 0;
}
char *getline(char *buf)
{
fputs("Calc>",stdout);
fflush(stdout);
return gets(buf);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -