这题坑人,弄了很久,原来是%g输出!!!!!

%g:使用一般浮点数或者科学计数法中长度较短的格式来输出

题目:
促销计算
1000(ms)
65535(kb)
2976 / 9688
Tags: 卓越班选拔
某百货公司为了促销,采用购物打折的优惠方法,每位顾客一次购物:在1000元以上者,按9.5折优惠;在2000以上者,按9折优惠;在3000以上者,按8.5折优惠;在5000以上者,按8折优惠;编写程序,购物款数,计算并输出优惠价。

输入
输出
样例输入
850
1230
5000
3560
样例输出
discount=1,pay=850
discount=0.95,pay=1168.5
discount=0.8,pay=4000
discount=0.85,pay=3026

代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
  double n;
  while (scanf("%lf", &n) != EOF)
  {
    if (n >= 0 && n < 1000)
    {
      if ((n - (int)n) > 0.0)
      {
        printf("discount=1,pay=%g\n", n);
      }
      else
        printf("discount=1,pay=%g\n", n);
    }
    else     if (n >= 1000 && n < 2000)
    {
        n = n * 0.95;
        printf("discount=0.95,pay=%g\n", n);
    }
    else   if (n >= 2000 && n < 3000)
    {
      n *= 0.9;
        printf("discount=0.9,pay=%g\n", n);
    }
    else    if (n >= 3000 && n < 5000)
    {
      n = n * 0.85;
        printf("discount=0.85,pay=%g\n", n);
    }
    else  if (n >= 5000)
    {
      n = n * 0.8;
        printf("discount=0.8,pay=%g\n", n);
    }
  }
  system("pause");
  return 0;
}
最后修改:2019 年 02 月 27 日
如果觉得我的文章对你有用,请随意赞赏