4、多分支判断 - 习题解析

解析部分:

多分支

1304. 冷饮的价格(2)

问题描述

根据小明购买冰棍的数量,计算应付的价格,其中价格根据购买数量有不同的单价。

解题思路

计算应付价格的步骤如下:

  1. 根据购买的冰棍数量,确定对应的单价。
  2. 使用确定的单价乘以购买数量,得到总价格。
  3. 输出总价格,保留1位小数。
代码实现
#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    int n; // 定义变量存储购买的冰棍数量
    cin >> n; // 从标准输入读取冰棍数量

    double price; // 定义变量存储总价格
    // 根据购买数量确定单价
    if (n >= 30) {
        price = n * 1.0;
    } else if (n >= 20) {
        price = n * 1.2;
    } else if (n >= 10) {
        price = n * 1.5;
    } else {
        price = n * 1.8;
    }

    // 输出应付金额,保留一位小数
    cout << fixed << setprecision(1) << price << endl;

    return 0; // 程序结束
}
代码解析
  • int n; 定义一个整型变量n来存储用户输入的购买冰棍的数量。
  • cin >> n; 使用cin从标准输入读取购买数量。
  • double price; 定义一个双精度浮点数变量price来计算应付的总价格。
  • 使用if-else结构根据购买的冰棍数量选择合适的单价进行计算。
  • cout << fixed << setprecision(1) << price << endl; 使用cout输出总价格,并通过fixedsetprecision(1)确保结果保留一位小数。

通过这种方法,可以根据小明购买冰棍的数量准确计算出应付的总价格,并按要求输出。

1044. 找出最经济型的包装箱型号

问题描述

根据货物的重量选择最合适的包装箱型号,以确保材料使用最经济。

解题思路

通过判断货物的重量落在哪个重量区间,选择相应的包装箱型号:

  • 小于10公斤使用A型。
  • 大于等于10公斤且小于20公斤使用B型。
  • 大于等于20公斤且小于40公斤使用C型。
  • 大于等于40公斤且小于50公斤使用D型。
  • 大于等于50公斤且小于80公斤使用E型。
代码实现
#include <iostream>
using namespace std;

int main() {
    int weight; // 定义变量存储货物的重量
    cin >> weight; // 从标准输入读取货物重量

    char type; // 定义变量存储包装箱型号
    // 判断货物重量选择包装箱型号
    if (weight < 10) {
        type = 'A';
    } else if (weight < 20) {
        type = 'B';
    } else if (weight < 40) {
        type = 'C';
    } else if (weight < 50) {
        type = 'D';
    } else if (weight < 80) {
        type = 'E';
    }

    // 输出最经济型的包装箱型号
    cout << type << endl;

    return 0; // 程序结束
}
代码解析
  • int weight; 定义一个整型变量weight来存储用户输入的货物重量。
  • cin >> weight; 使用cin从标准输入读取货物重量。
  • char type; 定义一个字符变量type来存储选择的包装箱型号。
  • 使用一系列if-else语句根据货物的重量判断并选择最合适的包装箱型号。
  • cout << type << endl; 使用cout输出选择的包装箱型号,并确保输出后有一个回车符号。

这样,可以根据货物的重量准确地选择最经济型的包装箱型号,并按要求输出。

1039. 求三个数的最大数

问题描述

给定三个不相等的整数,需要找出并输出这三个数中的最大数。

解题思路

要找出三个数中的最大数,我们可以使用多分支条件语句来实现:

  1. 如果第一个数大于第二个数和第三个数,则第一个数是最大的。
  2. 如果第二个数大于第一个数和第三个数,则第二个数是最大的。
  3. 如果前两个条件都不满足,则第三个数是最大的。
  4. 输出最大的数。
代码实现
#include <iostream>
using namespace std;
int main() {
    int a, b, c; // 定义变量存储三个整数
    cin >> a >> b >> c; // 从标准输入读取这三个整数
    int maxNumber; // 定义变量存储最大的数
    
    // 使用多分支条件语句找出最大的数
    if (a > b && a > c) {
        maxNumber = a;
    } else if (b > a && b > c) {
        maxNumber = b;
    } else {
        maxNumber = c;
    }
    
    // 输出最大的数
    cout << maxNumber << endl;
    
    return 0; // 程序结束
}
代码解析
  • int a, b, c; 定义三个整型变量abc来存储用户输入的三个整数。
  • cin >> a >> b >> c; 使用cin从标准输入读取这三个整数。
  • int maxNumber; 定义一个整型变量maxNumber来存储最大的数。
  • 使用多分支条件语句(if-else if-else)来找出最大的数:
    • 如果a > b && a > c,则a是最大的数,将a赋值给maxNumber
    • 否则,如果b > a && b > c,则b是最大的数,将b赋值给maxNumber
    • 否则,c是最大的数,将c赋值给maxNumber
  • cout << maxNumber << endl; 使用cout输出最大的数,并在输出后添加一个回车符号。
    通过使用多分支条件语句,可以清晰地判断出三个数中的最大数,并按要求输出。

1035. 判断成绩等级

问题描述

根据输入的学生成绩,将其分为三个等级:86分以上(包括86分)为VERY GOOD,60到85分(包括60和85分)为GOOD,小于60分为BAD。

解题思路

根据成绩的不同范围,使用条件判断语句输出相应的成绩等级:

  1. 成绩大于等于86分输出VERY GOOD。
  2. 成绩在60到85分之间(包含边界值)输出GOOD。
  3. 成绩小于60分输出BAD。
代码实现
#include <iostream>
using namespace std;

int main() {
    int score; // 定义变量存储学生成绩
    cin >> score; // 从标准输入读取成绩

    // 判断成绩等级并输出结果
    if (score >= 86) {
        cout << "VERY GOOD" << endl;
    } else if (score >= 60) {
        cout << "GOOD" << endl;
    } else {
        cout << "BAD" << endl;
    }

    return 0; // 程序结束
}
代码解析
  • int score; 定义一个整型变量score来存储用户输入的学生成绩。
  • cin >> score; 使用cin从标准输入读取学生成绩。
  • 使用if-else语句根据成绩的具体值判断并输出相应的等级。
    • 如果成绩大于等于86分,则输出VERY GOOD。
    • 如果成绩在60到85分之间,则输出GOOD。
    • 如果成绩小于60分,则输出BAD。

通过这种方法,可以准确地根据学生成绩输出其等级,并满足题目的要求。

1300. 小明暑假的零花钱

问题描述

基于小明的考试成绩来计算他暑假的零花钱,成绩与零花钱之间有明确的对应关系。

解题思路

根据小明的考试成绩,使用条件判断来计算他应得的零花钱金额。不同的成绩区间对应不同的计算规则。

代码实现
#include <iostream>
using namespace std;

int main() {
    int score; // 定义变量存储小明的考试成绩
    cin >> score; // 从标准输入读取小明的考试成绩

    int pocketMoney; // 定义变量存储小明的零花钱金额

    // 根据考试成绩计算零花钱
    if (score >= 90) {
        pocketMoney = score * 3; // 90分以上,零花钱是成绩的3倍
    } else if (score >= 80) {
        pocketMoney = score * 2; // 80到89分,零花钱是成绩的2倍
    } else if (score >= 70) {
        pocketMoney = score; // 70到79分,零花钱等于成绩分数
    } else {
        pocketMoney = 50; // 69分以下,零花钱固定为50元
    }

    // 输出小明暑假的零花钱金额
    cout << pocketMoney << endl;

    return 0; // 程序结束
}
代码解析
  • 使用int score;定义一个整型变量score来存储小明的考试成绩。
  • 使用cin >> score;从标准输入读取小明的考试成绩。
  • 使用int pocketMoney;定义一个整型变量pocketMoney来存储计算出的零花钱金额。
  • 通过一系列的if-else条件判断结构,根据小明的考试成绩决定其零花钱的计算方式。
  • 使用cout << pocketMoney << endl;输出计算出的小明暑假的零花钱金额。

通过这种方式,可以根据小明的考试成绩准确地计算出他在不同成绩区间下应得的零花钱金额,并按要求输出。

1322. 求数的量级?

问题描述

给定一个大整数n(10000 <= n <= 9999999999),需判断该数的量级并输出对应的量级拼音。

解题思路

量级判断依据整数(n)的长度(位数):

  • 5位数为"万"(wan)。
  • 6位数为"十万"(shi wan)。
  • 7位数为"百万"(bai wan)。
  • 8位数为"千万"(qian wan)。
  • 9位数为"亿"(yi)。
  • 10位数为"十亿"(shi yi)。
代码实现
#include <iostream>
#include <string>
using namespace std;
int main() {
    long long n; // 使用long long类型以支持大整数
    cin >> n;
    int length = to_string(n).length(); // 将数字转换为字符串并获取长度
    
    if (length == 5) {
        cout << "wan";
    } else if (length == 6) {
        cout << "shi wan";
    } else if (length == 7) {
        cout << "bai wan"; 
    } else if (length == 8) {
        cout << "qian wan";
    } else if (length == 9) {
        cout << "yi";
    } else if (length == 10) {
        cout << "shi yi";
    }
    
    return 0;
}
代码解析
  • 将输入的整数(n)转换为字符串,这样便于获取其长度。
  • 根据字符串的长度,使用一系列if-else if语句判断并输出对应的量级拼音。
  • 由于题目中给定的数字范围为10000到9999999999,因此只需要判断长度为5到10的情况。
    使用多分支条件语句同样可以有效地根据给定的整数大小判断并输出其量级。相比switch语句,if-else if语句在这种情况下更加直观和易于理解。

1049. 汉译英

问题描述

给定一个整数(n),如果这个整数在1到9的范围内,需要输出与之对应的英文单词;如果不在这个范围内,输出out

解题思路

可以通过判断语句来实现,对于每一个在1到9之间的数字,输出相应的英文单词。

代码实现
#include <iostream>
using namespace std;
int main() {
    int n; // 定义变量存储输入的整数
    cin >> n; // 从标准输入读取整数
    
    // 根据输入的整数输出对应的英文单词或out
    if (n == 1) {
        cout << "one";
    } else if (n == 2) {
        cout << "two";
    } else if (n == 3) {
        cout << "three";
    } else if (n == 4) {
        cout << "four";
    } else if (n == 5) {  
        cout << "five";
    } else if (n == 6) {
        cout << "six";
    } else if (n == 7) {
        cout << "seven"; 
    } else if (n == 8) {
        cout << "eight";
    } else if (n == 9) {
        cout << "nine";
    } else {
        cout << "out";
    }
    
    return 0; // 程序结束
}
代码解析
  • int n; 定义一个整型变量n来存储用户输入的整数。
  • cin >> n; 使用cin从标准输入读取这个整数。
  • 使用一系列if-else if语句根据输入的整数n选择输出对应的英文单词。
    • 如果n等于1,则输出"one"
    • 如果n等于2,则输出"two"
    • 以此类推,直到n等于9,输出"nine"
    • 如果n不在1到9的范围内,则执行else分支,输出"out"
      这种方法使用多分支条件语句,可以清晰地根据输入的整数在1到9之间输出对应的英文单词,或者输出out以表示输入的整数不在这个范围内。相比switch语句,if-else if语句在这种情况下更加直观和易于理解。

1391. 公交卡充值问题

问题描述

根据小明充值的金额,按照公交充值中心的优惠活动计算实际到账的金额。

解题思路

根据充值金额的不同区间,决定赠送的额度,最后将充值金额与赠送金额相加得到实际到账金额。

代码实现
#include <iostream>
using namespace std;

int main() {
    int n; // 定义变量存储小明的充值金额
    cin >> n; // 从标准输入读取充值金额

    int gift = 0; // 定义变量存储赠送的金额
    if (n >= 500) {
        gift = 200; // 充值500元及以上,赠送200元
    } else if (n >= 300) {
        gift = 100; // 充值300元∼499元,赠送100元
    } else if (n >= 200) {
        gift = 50;  // 充值200元∼299元,赠送50元
    } // 充值200元以下没有赠送活动,gift保持为0

    int total = n + gift; // 计算实际到账的金额

    cout << total << endl; // 输出实际到账的金额

    return 0; // 程序结束
}
代码解析
  • int n; 定义一个整型变量n来存储用户输入的充值金额。
  • cin >> n; 使用cin从标准输入读取充值金额。
  • 根据充值金额的区间,使用if-else语句分支来确定赠送金额gift
  • 计算实际到账金额total为充值金额n加上赠送金额gift
  • cout << total << endl; 输出实际到账金额。

这种方法能够根据充值金额准确计算并输出实际到账的金额。

1668. 运动会成绩统计

问题描述

根据运动会跳水比赛的成绩,判断选手获得的奖牌类别。

解题思路

选手的成绩需要与金牌、银牌和铜牌的分数线进行比较,以确定获得的奖项类别。

代码实现
#include <iostream>
using namespace std;

int main() {
    double score; // 定义变量存储选手的分数
    cin >> score; // 从标准输入读取选手的分数

    // 根据分数判断获奖情况
    if (score >= 92.8) {
        cout << "jin" << endl; // 金牌
    } else if (score >= 85.6) {
        cout << "yin" << endl; // 银牌
    } else if (score >= 82.1) {
        cout << "tong" << endl; // 铜牌
    } else {
        cout << "sorry" << endl; // 未获奖
    }

    return 0; // 程序结束
}
代码解析
  • double score; 定义一个双精度浮点数变量score来存储选手的成绩。
  • cin >> score; 使用cin从标准输入读取选手的成绩。
  • 使用一系列if-else语句根据选手的成绩与奖牌的分数线进行比较,并输出相应的奖项类别。
  • 根据成绩输出jinyintongsorry,分别表示金牌、银牌、铜牌和未获奖。

这样,程序能够根据选手的成绩准确判断并输出选手应获得的奖项类别。

1669. 上什么课

问题描述

根据输入的星期数,确定晶晶今天应该上的课程。

解题思路

根据提供的信息,可以使用switch语句或if-else语句来判断今天是星期几,并根据星期几输出晶晶应该上的课程。

代码实现
#include <iostream>
using namespace std;
int main() {
    int day; // 定义变量存储星期数
    cin >> day; // 从标准输入读取星期数

    // 根据星期数判断应该上的课程
    if (day == 1) {
        cout << "swim" << endl; // 周一游泳
    } else if (day == 3) {
        cout << "program" << endl; // 周三编程
    } else if (day == 5) {
        cout << "read" << endl; // 周五阅读
    } else if (day == 6) {
        cout << "math" << endl; // 周六数学
    } else {
        cout << "rest" << endl; // 其余时间没课
    }

    return 0; // 程序结束
}
代码解析
  • int day; 定义一个整型变量day来存储今天是星期几。
  • cin >> day; 使用cin从标准输入读取今天是星期几。
  • 使用一系列if-else if语句根据输入的星期数day判断晶晶今天应该上的课程。
    • 如果day等于1,则输出"swim",表示周一上游泳课。
    • 如果day等于3,则输出"program",表示周三上编程课。
    • 如果day等于5,则输出"read",表示周五上阅读课。
    • 如果day等于6,则输出"math",表示周六上数学课。
    • 如果day不等于以上任何值,则执行else分支,输出"rest",表示没有课程安排,可以休息。
      使用多分支条件语句同样可以准确地根据输入的星期数判断晶晶今天应该上的课程,并按要求输出。相比switch语句,if-else if语句在这种情况下更加直观和易于理解。

1670. 象棋大赛

问题描述

根据选手的年龄,将其分配到相应的组别:青年组(15至30岁)、少年组(11至14岁)和儿童组(8至10岁)。

解题思路

通过判断选手的年龄所在的范围,可以确定选手的分组。

代码实现
#include <iostream>
using namespace std;

int main() {
    int age; // 定义变量存储选手的年龄
    cin >> age; // 从标准输入读取选手的年龄

    // 根据年龄判断分组
    if (age >= 15 && age <= 30) {
        cout << "qingnianzu" << endl; // 青年组
    } else if (age >= 11 && age <= 14) {
        cout << "shaonianzu" << endl; // 少年组
    } else if (age >= 8 && age <= 10) {
        cout << "ertongzu" << endl; // 儿童组
    }

    return 0; // 程序结束
}
代码解析
  • int age; 定义一个整型变量age来存储选手的年龄。
  • cin >> age; 使用cin从标准输入读取选手的年龄。
  • 通过if-else语句根据选手的年龄范围判断其所属的分组,并输出相应的组别名称。

这种方法可以根据选手的年龄准确地分配到相应的组别,并按要求输出组别名称。

1667. 最大数和最小数的差

问题描述

给定一个三位正整数,求出其个位、十位、百位数字中最大数和最小数的差值。

解题思路
  1. 将三位数分解为个位、十位、百位。
  2. 找出这三个数字中的最大值和最小值。
  3. 计算最大值和最小值的差。
代码实现
#include <iostream>
using namespace std;

int main() {
    int n; // 存储输入的三位数
    cin >> n;

    int hundred = n / 100; // 百位
    int ten = (n / 10) % 10; // 十位
    int one = n % 10; // 个位

    // 找最大值和最小值
    int maxDigit = max(hundred, max(ten, one));
    int minDigit = min(hundred, min(ten, one));

    // 计算差值
    int difference = maxDigit - minDigit;

    cout << difference << endl; // 输出差值

    return 0; // 程序结束
}
代码解析
  • 将输入的三位数n分解为个位、十位和百位。
  • 使用max函数和min函数找出三个数字中的最大值和最小值。
  • 计算这两个值的差,即为所求的最大数和最小数的差值。
  • 输出这个差值。

1305. 求四个数的最大数

问题描述

给定四个不相等的整数,需要找到并输出这些数中的最大值。

解题思路
  1. 读入数据:首先,我们需要从标准输入读入四个整数。
  2. 比较大小:然后,通过比较这四个数,找出其中的最大值。
  3. 输出结果:最后,输出这四个数中的最大值。
代码实现
#include <iostream>
using namespace std;

int main() {
    int a, b, c, d; // 定义四个整型变量 a, b, c, d 来存储用户输入的四个数
    cin >> a >> b >> c >> d; // 通过标准输入读取这四个数

    int max = a; // 假设 a 是最大的数
    if (b > max) max = b; // 如果 b 大于当前的最大值,更新最大值为 b
    if (c > max) max = c; // 如果 c 大于当前的最大值,更新最大值为 c
    if (d > max) max = d; // 如果 d 大于当前的最大值,更新最大值为 d

    cout << max << endl; // 输出最大值

    return 0; // 程序正常结束
}
代码解析
  1. 定义四个整型变量a, b, c, d来存储用户输入的四个整数。
  2. 使用cin从标准输入读取这四个整数。
  3. 通过一系列的比较操作,找到这四个数中的最大值,并将其存储在变量max中。
  4. 使用cout输出找到的最大值。

1310. 至少要买几瓶止咳糖浆?

问题描述

花花生病需要服用止咳糖浆,根据年龄和服用规格,计算至少需要购买的止咳糖浆瓶数。

解题思路
  1. 读入数据:首先,从标准输入读取花花的年龄。
  2. 计算每日所需糖浆量:根据花花的年龄判断每日所需的止咳糖浆量。
  3. 计算总所需糖浆量:花花痊愈需要5天,计算5天总共需要的糖浆量。
  4. 计算瓶数:每瓶糖浆120毫升,计算至少需要的瓶数。
  5. 输出结果:输出最少需要购买的止咳糖浆瓶数。
代码实现
#include <iostream>
using namespace std;

int main() {
    int age; // 存储花花的年龄
    cin >> age; // 读取花花的年龄

    int dose; // 每次服用的剂量
    if (age > 10) {
        dose = 25;
    } else if (age >= 7) {
        dose = 15;
    } else if (age >= 3) {
        dose = 5;
    } else {
        // 年龄低于3岁的情况
        dose = 0;
    }

    int totalDose = dose * 3 * 5; // 计算5天总共需要的糖浆量
    int bottles = (totalDose + 119) / 120; // 计算所需的瓶数,向上取整

    cout << bottles << endl; // 输出最少需要的止咳糖浆瓶数

    return 0;
}
代码解析
  • 根据花花的年龄确定每次服用的剂量。
  • 计算5天内总共需要服用的糖浆量。
  • 由于每瓶糖浆是120毫升,通过计算确定至少需要的止咳糖浆瓶数,并向上取整。
  • 输出所需的止咳糖浆瓶数。

1464. 晶晶的补习班

问题描述

晶晶每天需要上补习班,她想知道下周每天平均要上多少小时的补习班,以及一周中最长和最短的补习班各需要上多少小时。

解题思路
  1. 读入数据:首先,需要从输入中读取7个整数,这7个整数代表晶晶下周每天需要上的补习班小时数。
  2. 计算平均小时数:将所有天的补习班小时数相加,然后除以7,得到平均每天需要上的补习班小时数。
  3. 确定最长和最短的补习班小时数:在读入小时数的过程中,同时记录下遇到的最大和最小的小时数。
  4. 输出结果:输出平均小时数(保留1位小数),最长的补习班小时数和最短的补习班小时数。
代码实现
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
	int sum = 0;
	int day;
	cin >> day;
	int max = day;
	int min = day;
	sum += day;
	for(int i = 1; i < 7; i++)
	{
		cin >> day;
		sum += day;
		if(day > max)
		{
			max = day;
		}
		if(day < min)
		{
			min = day;
		}
	} 
	
	double pj = sum / 7.0;
	cout << fixed << setprecision(1) << pj << " ";
	cout << setprecision(0);
	cout << max << " " << min;
	return 0;
}
代码解析
  • 定义变量sum用于存储一周总的补习时间,初始化为0。
  • 定义变量day用于存储每天的补习时间。
  • 读入第一天的补习时间,将其赋值给day,同时将其赋值给maxmin,作为初始的最大值和最小值。将第一天的补习时间加到总时间sum中。
  • 使用for循环读入剩余6天的补习时间,每读入一个数据,将其加到总时间sum中,并与当前的maxmin进行比较,如果大于max则更新max,如果小于min则更新min
  • 计算平均每天的补习时间,将总时间sum除以7,得到pj
  • 使用fixedsetprecision(1)控制输出格式,将平均时间pj输出,保留1位小数。
  • 使用setprecision(0)控制输出格式,将最大值max和最小值min输出,不保留小数。
    这种方法能够正确计算并输出晶晶下周每天平均要上多少小时的补习班,以及一周中最长和最短的补习班各需要上多少小时。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天秀信奥编程培训

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值