2235 机票打折

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2235 机票打折相关的知识,希望对你有一定的参考价值。

题目描述 Description

.输入机票原价(3到4位的正整数,单位:元),再输入机票打折率(小数点后最多一位数字)。编程计算打折后机票的实际价格(单位:元。计算结果要将个位数四舍五入到十位数“元”)。输入只有一行两个数(两数间用一个空格分隔),第一个为整数,表示机票原价,第二个整数或实数(如是实数,小数点后最多1位数字)表示打折率。

输入样例1:

888  7

输出样例1:

620

输入样例2:

1255  7 

输出样例2:

 880

输入描述 Input Description

输入只有一行两个数(两数间用一个空格分隔),第一个为整数,表示机票原价,第二个整数或实数(如是实数,小数点后最多1位数字)表示打折率。

输出描述 Output Description

输出只有一行一个正整数,表示打折后的机票价格。

样例输入 Sample Input

888 7

样例输出 Sample Output

620

数据范围及提示 Data Size & Hint

原机票价格大于100小于9999,打折率大于1小于9.9。

思路:因为从个位开始进行四舍五入,所以小数部分就不需要考虑了。用int 型变量接收乘积的整数部分。

然后就是四舍五入的问题,个位数大于等于5时,向十位数进1,这时需要判断十位数是否需要进行四舍五入。这里定义一个标记flag,初始位0,表示不需要进行四舍五入。

只有在个位数大于等于5的情况下才需要进行对每个位上的数进行考虑。在需要进行四舍五入的时候,flag置为1,表示它的前一位数需要加1,同时再判断是否需要进位。

代码:

#include<stdio.h>
int main()
{
double price,discount;
int result,len=0,i;
int s[10];
scanf("%lf %lf",&price,&discount);
result=(int)(price*discount/10);
while(result)
{
s[len++]=result%10;
result/=10;
}
int flag=0;
for(i=0;i<len;i++)
{
if(i==0)
{
if(s[i]>=5)
{
flag=1;
}
s[i]=0;
}
else
{
if(flag==1)
{
s[i]+=flag;
if(s[i]>9)
{
s[i]-=10;
}
else
{
flag=0;
}
}
}
}
for(i=len-1;i>0;i--)
{
printf("%d",s[i]);
}
printf("%d\n",s[i]);
return 0;
}

以上是关于2235 机票打折的主要内容,如果未能解决你的问题,请参考以下文章

机票打折问题

hihocoder 1299 打折机票 线段树

Java小白入门200例52之实现淡旺季飞机票打折

中国航信IBE机票代理人Shoppping查询指令

机票状态显示 : CPN NOTE 啥意思?

算法leetcode每日一练2235. 两整数相加