这题主要是用if else if来判断输出语句就行,还挺简单的,代码可以参考这个

#include <iostream>
#include <iomanip>
using namespace std;
int main() {
    double price;
    cin >> price;
    double cost = 0.0;
    // write your code here.......
    double discount;
    if (price >= 100 && price < 500)
    {
        discount = 0.9;
        cost = price * discount;
    }
    else if (price >= 500 && price < 2000)
    {
        discount = 0.8;
        cost = price * discount;
    }
    else if (price >= 2000 && price < 5000)
    {
        discount = 0.7;
        cost = price * discount;
    }
    else if (price >= 5000)
    {
        discount = 0.6;
        cost = price * discount;
    }
    cout << setiosflags(ios::fixed) << setprecision(1) << cost << endl;
    return 0;
}

初学者刚开始看到

cout << setiosflags(ios::fixed) << setprecision(1) << cost << endl;

的时候可能会有些懵。

这段代码里的setiosflags(ios::fixed)意思是以定点格式显示浮点数值,而setprecision(1) 的意思是设置浮点数精度为1。

setiosflag的参数还有这些,大家可以看看了解一下,说不定以后会用到呢

setiosflags的参数是该流的格式标志值,这个值由如下位掩码(ios枚举器)指定,并可用位或OR(|)运算符进行组合:

 ios::skipws  在输人中跳过空白。

ios::left  左对齐值,用填充字符填充右边。

ios::right  右对齐值;用填充字符填充左边(缺省对齐方式)。

ios::internal  在指定任何引导标记或基之后增加填充字符。

ios::dec  以基10(十进制)格式化数值(缺省进制)。

ios::oct  以基8(八进制)格式化数值。

ios::hex  以基16(十六进制)格式化数值。

ios::showbase  以C++编译器能读的格式显示数值常量。

ios::showpoint  对浮点数值显示小数点和尾部的0。

ios::uppercase  对于十六进制数值显示大写字母A到F,对于科学格式显示大写字母E。

ios::showpos  对于正数显示正号(+)。

ios::scientific  以科学格式显示浮点数值。

ios::fixed  以定点格式显示浮点数值。

ios::unitbuf  导致在每次插入之后ostream::osfx刷新该流。缺省地,cerr是缓冲的单元。

ios::stdio  导致在每次插入之后ostream::osfx刷新该流的stdout和stderr。