命令行窗口带参数的四则运算小程序


#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#include <string.h>


int main(int arg, char**arv)
{
        //arg = 4;
	//arv[0] = "D:\\工程\\main函数的参数\\Debug\\main函数的参数.exe";
	//arv[1] = "90";
	//arv[2] = "/";
	//arv[3] = "3";
        //第一个参数为程序路径,如果只有一个参数则提示用户并退出
         if (arg < 2)
	{
		puts("请输入如(main函数的参数 a + b)的格式");
		return -1;
	}

	int i = 1;
	char s[100] = { 0 };
	while (i<arg)
	{
		strcat(s, arv[i]);//将输入的多条参数拼接到一个字符串数组中待下一步操作
		++i;
	}

	char p[1] = {' '};
	i = 0;
	while (s[i])
	{
		if (s[i] == '+' || s[i] == '-' || s[i] == '*' || s[i] == '/')
		{
			p[0] = s[i];//在字符数组中获取运算符号
			break;
		}
		++i;
	}

        //在字符数组中获取运算符号前后的字符并转化成数字
	i = 0;
	char seps[] = "'+''-''*''/'";
	char *token;
	token = strtok(s, seps); 
	double j[2] = { 0 };							  
	while (token != NULL)
	{
		j[i++] = atof((const char*)token);
		token = strtok(NULL, seps); 		// Get next token: 
	}



	//进行相应的运算
	switch (char c = p[0])
	{
	case '+':
		printf("%0.3f", j[0] + j[1]);
		break;
	case '-':
		printf("%0.3f", j[0] - j[1]);
		break;
	case '*':
		printf("%0.3f", j[0] * j[1]);
		break;
	case '/':
		printf("%0.3f", j[0] / j[1]);
		break;
	}


	return 0;
}

吕鑫老师的写法大概是这样的:
double Calc(char*p)
{
	char *result = NULL;

	double left = atof(p);
	result = strpbrk(p, "+-*/");
	if (!result)
	{
		printf("请输入如(main函数的参数 a + b)的格式");
		return -1;
	}
	double right = atof(++result);
	switch (*(--result))
	{
	case '+':
		return left + right;
		break;
	case '-':
		return left - right;
		break;
	case '*':
		return left * right;
		break;
	case '/':
		return left / right;
		break;
	}
	return -1;
}

int main(int arg, char**arv)
{

	if (arg < 2)
	{
		puts("请输入如(main函数的参数 a + b)的格式");
		return -1;
	}
	char s[50] = { 0 };
	int i = 1;
	while (arv[i])
		strcat(s, arv[i++]);

	double result =  Calc(s);
	printf("%0.2lf", result);
	return 0;
}




  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值