C语言:网购的代码优化

描述

KiKi非常喜欢网购,在一家店铺他看中了一件衣服,他了解到,如果今天是“双11”(11月11日)则这件衣服打7折,“双12” (12月12日)则这件衣服打8折,如果有优惠券可以额外减50元(优惠券只能在双11或双12使用),求KiKi最终所花的钱数。

数据范围:衣服价格满足 1 \le val \le 100000 \1≤val≤100000 

输入描述:

一行,四个数字,第一个数表示小明看中的衣服价格,第二和第三个整数分别表示当天的月份、当天的日期、第四个整数表示是否有优惠券(有优惠券用1表示,无优惠券用0表示)。 注:输入日期保证只有“双11”和“双12”。

输出描述:

一行,小明实际花的钱数(保留两位小数)。(提示:不要指望商家倒找你钱)

示例1

输入:

1000.0 11 11 1

输出:

650.00

复制

示例2

输入:

999.8 12 12 0

输出:

799.84

复制

示例3

输入:

66.6 11 11 1

输出:

0.00

我们对代码进行一遍一遍的优化:

#include

//描述
//KiKi非常喜欢网购,在一家店铺他看中了一件衣服,他了解到,如果今天是“双11”(11月11日)则这件衣服打7折,“双12” (12月12日)则这件衣服打8折,如果有优惠券可以额外减50元
//(优惠券只能在双11或双12使用),求KiKi最终所花的钱数。
//
//数据范围:衣服价格满足 1 \le val \le 100000 \1≤val≤100000
//输入描述:一行,四个数字,第一个数表示小明看中的衣服价格,第二和第三个整数分别表示当天的月份、当天的日期、第四个整数表示是否有优惠券(有优惠券用1表示,无优惠券用0表示)。
//注:输入日期保证只有“双11”和“双12”。
//
//输出描述:一行,小明实际花的钱数(保留两位小数)。(提示:不要指望商家倒找你钱)
//
//示例1
//输入:1000.0 11 11 1
//输出:650.00
//示例2
//输入:999.8 12 12 0
//输出:799.84
//示例3
//输入:66.6 11 11 1
//输出:0.00

// - 第一种解法(代码冗余性很大)
int main()
{
	double price = 0.0;// -价格
	int month = 0; // -月份
	int day = 0; // -日期
	int flag = 0; // -判断有没有优惠券(1=有  0=没有)
	double discount = 1.0;// -折扣
	double lastPrice = 0.0;
	// - 输入
	scanf("%lf %d %d %d", &price, &month, &day, &flag); 
	// - 进入判断
	if (month == 11 && day == 11) // -如果是爽11的话
	{
		discount = 0.7;
		if (flag == 1)	// -判断有没有优惠券
		{
			lastPrice = price * discount - 50.0;
		}
		else
		{
			lastPrice = price * discount;
		}
	}
	else if (month == 12 && day == 12)// =如果是双12的话
	{
		discount = 0.8;
		if (flag == 1)	// -判断有没有优惠券
		{
			lastPrice = price * discount - 50.0;
		}
		else
		{
			lastPrice = price * discount;
		}
	}
	if (lastPrice < 0.0)	// -判断结果会不会小于0.0 , 如果小于  那么价格就是0
	{	
		printf("%.2lf\n",0.0);
	}
	else
	{
		printf("%.2lf\n",lastPrice);
	}

	return 0;
}

// - 第二种解法(减少冗余代码)
int main()
{
	double price = 0.0;// -价格
	int month = 0; // -月份
	int day = 0; // -日期
	int flag = 0; // -判断有没有优惠券(1=有  0=没有)
	double discount = 1.0;// -折扣
	double lastPrice = 0.0;
	// - 输入
	scanf("%lf %d %d %d", &price, &month, &day, &flag);
	// - 进入判断
	if (month == 11 && day == 11) // -如果是爽11的话
	{
		lastPrice = price * 0.7;
		if (flag == 1)
		{
			lastPrice -= 50;
		}
	}
	else if (month == 12 && day == 12)// =如果是双12的话
	{
		lastPrice = price * 0.8;
		if (flag == 1)
		{
			lastPrice -= 50;
		}
	}

	if (lastPrice < 0.0)	// -判断结果会不会小于0.0 , 如果小于  那么价格就是0
	{
		printf("%.2lf\n", 0.0);
	}
	else
	{
		printf("%.2lf\n", lastPrice);
	}

	return 0;
}

// - 第三种解法(减少冗余代码)
int main()
{
	double price = 0.0;// -价格
	int month = 0; // -月份
	int day = 0; // -日期
	int flag = 0; // -判断有没有优惠券(1=有  0=没有)
	double discount = 1.0;// -折扣
	double lastPrice = 0.0;
	// - 输入
	scanf("%lf %d %d %d", &price, &month, &day, &flag); 
	// - 进入判断
	if (month == 11 && day == 11) // -如果是爽11的话
	{
		discount = 0.7;
	}
	else if (month == 12 && day == 12)// =如果是双12的话
	{
		discount = 0.8;
	}
	lastPrice = price * discount - flag * 50;  // - 如有flag=1  1*50 = 50  如果flag=0  0*50 = 0

	if (lastPrice < 0.0)	// -判断结果会不会小于0.0 , 如果小于  那么价格就是0
	{	
		printf("%.2lf\n",0.0);
	}
	else
	{
		printf("%.2lf\n",lastPrice);
	}

	return 0;
}

代码展示:

C语言:网购的代码优化_第1张图片

 测试结果:

C语言:网购的代码优化_第2张图片

牛客测试:

C语言:网购的代码优化_第3张图片 

 

你可能感兴趣的:(牛客刷题,成长日记,c语言,算法,c++)