方法一:通过普通方法:
#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; }