用C语言设计计算器:实现加减乘除

方法一:通过普通方法:

#include<stdio.h>
#include<windows.h>
int add(int x, int y)
{
	return x + y;
}
int sub(int x, int y)
{
	return x - y;
}
int nul(int x, int y)
{
	return x*y;
}
int drv(int x, int y)
{
	return x / y;
}
int main(){
	int x, y;
	int input = 1;
	int ret = 0;
	while (input){
		printf("***********************\n");
		printf("  1:add        2:sub   \n");
		printf("  3:nul        4:div   \n");
		printf("***********************\n");
		printf("请选择:");
		scanf_s("%d", &input);
		switch (input){
		case 1:
		{
				  printf("输入的数:");
				  scanf_s("%d%d", &x, &y);
				  ret = add(x, y);
		}; break;
		case 2:
		{
				  printf("输入的数:");
				  scanf_s("%d%d", &x, &y);
				  ret = sub(x, y);
		}; break;
		case 3:
		{
				  printf("输入的数:");
				  scanf_s("%d%d", &x, &y);
				  ret = nul(x, y);
		}; break;
		case 4:
		{
				  printf("输入的数:");
				  scanf_s("%d%d", &x, &y);
				  ret = drv(x, y);
		}; break;
		default:
			printf("输入错误,请重新输入!\n");
		}
		printf("%d\n", ret);
	}
	system("pause");
	return 0;
}

方法二:通过函数指针数组实现

#include<stdio.h>
#include<windows.h>
int add(int x, int y)
{
	return x + y;
}
int sub(int x, int y)
{
	return x - y;
}
int nul(int x, int y)
{
	return x*y;
}
int drv(int x, int y)
{
	return x / y;
}
int main(){
	int x, y;
	int input = 1;
	int ret = 0;
	int(*p[5])(int x, int y) = { 0, add, sub, nul, drv };//转移表
	while (input){
		printf("***********************\n");
		printf("  1:add        2:sub   \n");
		printf("  3:nul        4:div   \n");
		printf("***********************\n");
		printf("请选择:");
		scanf_s("%d", &input);
		if ((input<=4 && input>=1))
		{
			printf("输入操作数:");
			scanf_s("%d %d", &x, &y);
			ret = (*p[input])(x, y);
		}
		else
			printf("输入错误\n");
		printf("%d\n", ret);
	}
	system("pause");
	return 0;
}
方法三:使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
例如:命令行参数输入:test.exe -a 1 2
执行1+2输出3

main有三个参数:int argc,表示命令行参数加上程序路径的个数,最小为1。char * argv[],表示main函数的命令行参数。char * env[],表示环境变量

#include <stdio.h>
int main(int argc, char *argv[])
{
	int ret = 0;
	if (argc != 4)//判断参数个数
	{
		printf("error!\n");
	}
	if (argv[1][0] == '-')//第二个参数(字符串)判断  
	{
	
		switch (argv[1][1])
		{
		case 'a':   ret = atoi(argv[2]) + atoi(argv[3]); break;//此处利用atoi函数将指针数组类型转换为整型。
		case 's':   ret = atoi(argv[2]) - atoi(argv[3]); break;
		case 'm':   ret = atoi(argv[2]) * atoi(argv[3]); break;
		case 'd':   ret = atoi(argv[2]) / atoi(argv[3]); break;
		default:printf("error!\n"); break;
		}
	}
	printf("运算结果为: %d\n", ret);
	return 0;

}


猜你喜欢

转载自blog.csdn.net/qq_41889292/article/details/80373143