⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.cpp

📁 利息计算
💻 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 + -