#C语言——刷题攻略:牛客编程入门训练(八):分支控制(二)
🌟菜鸟主页:@晨非辰的主页
👀学习专栏:《C语言刷题合集》
💪学习阶段:C语言方向初学者
⏳名言欣赏:"代码行数决定你的下限,算法思维决定你的上限。"
目录
1. BC58 健康评估
2. BC59 小乐乐找最大数
3. 牛牛的二三七整除
4. 统计数据正负个数
5. BC63 网购
6. BC64 牛牛的快递
7. BC65 计算商品打折结算金额
前言:在学习编程语言的同时,千万别忘了刷刷题来巩固一下学到的知识,对于牛客网_编程入门系列,小子会持续更新分享刷题过程,其中包括一些基础板块的题目,本次将呈现的分支控制章节,共7道题。题目大部分较简单,单独几个需要一点小思考,大家开开胃~~
~~注意部分标题括号内代表对题目涉及到的知识进行说明!
1. BC58 健康评估
题目链接:牛客网_BC58 健康评估_简单
#include <stdio.h>int main()
{float height = 0, weight = 0;scanf("%f%f", &weight, &height);float BMI = weight / (height * height);if(BMI >= 18.5 && BMI <= 23.9 ){printf("Normal\n");}else {printf("Abnormal\n");}return 0;
}
解题思路——
--本题情况也十分简单,只需要将数值按要求进行处理,在根据分支条件进行判断即可。
2. BC59 小乐乐找最大数
题目链接:牛客网_BC59 小乐乐找最大数_入门
#include <stdio.h>int main()
{int arr[4] = {0};//循环输入int i;for(i = 0; i < 4; i++){scanf("%d", &arr[i]);}//假定第一元素最大int max = arr[0];//循环比较,当后一位比前一位大,就替换int count;//循环次数for(count = 1; count < 4; count++)//只需比较3回{if(arr[count] > max){max = arr[count];}}printf("%d", max);return 0;
}
解题思路——
--本题在之前的练习有过涉猎,思路都是一样的,小子嘴遁~~
3. 牛牛的二三七整除
题目链接:牛客网_BC61 牛牛的二三七整除_中等
#include <stdio.h>int main()
{int a;scanf("%d", &a);int num[3] = {2, 3, 7};int flag = 0;//0代表一个都不行for(int i = 0; i < 3; i++){if(a % num[i] == 0){printf("%d ", num[i]);flag = 1;//代表至少有一个}}if(flag == 0){printf("n ");}return 0;
}
解题思路——
--本题的难点在于如何在循环判断外,进行对所有数都不能满足条件情况的的判断;这个时候,我们就可以先树立一个旗帜 flag 变量,比如 flag = 1 代表至少有一个数满足条件,相反, flag = 0 代表所有数都不能满条件;虽然这种变量的利用比较类似于布尔类型,但是这样兼容性好,也更容易想到。
4. 统计数据正负个数
题目链接:牛客网_BC62 统计数据正负个数_简单
int main()
{int num[10] = { 0 };int i = 0;for (i = 0; i < 10; i++){scanf("%d", &num[i]);}int positive = 0;//定义正数int negative = 0;//定义负数i = 0;while (i < 10){if (num[i] > 0){positive++;i++;}else if (num[i] < 0){negative++;i++;}else{i++;}}printf("positive:%d\nnegative:%d", positive, negative);return 0;
}
解题思路——
--本题代码结构简单,只需要分出大于0、小于0以及等于0的情况即可。
5. BC63 网购
题目链接:牛客网_BC63 网购_简单
int main()
{float price = 0.0;int m = 0;int d = 0;int n = 0;scanf("%f %d %d %d", &price, &m, &d, &n);if ((m == 11 && d == 11)){//有优惠卷if (n == 1){price = price * 0.7 - 50;}else{price = price * 0.7;}}else{if (n == 1){price = price * 0.8 - 50;}else{price = price * 0.8;}}printf("%.2f\n", price);return 0;
}
解题思路——
--本题分支情况清晰,但是有一点要注意,输出描述已经给出:不要希望商家倒贴钱,也就是打折加优惠,价钱为负数时按0算。
6. BC64 牛牛的快递
题目链接:牛客网_BC64 牛牛的快递_中等
int main()
{float kg = 0.0;char Urgent = 0;//加急与否int pay = 0;scanf("%f %c", &kg, &Urgent);//当重量不足1kgif (kg <= 1.0){if (Urgent == 'y'){pay = 25;}else{pay = 20;}}//超过1kgelse{float beyond = kg - 1.0;//求出超过kg数,包括小数//判断是否有小数部分,小数部分按1kg算if (beyond < 1.0 || (int)beyond != beyond){beyond += 1;}if (Urgent == 'y'){pay = 25 + beyond * 1;}else{pay = 20 + beyond * 1;}}printf("%d\n", pay);return 0;
}
解题思路——
--本题难点在于如何判断输入的kg数(>1kg)是否有小数部分,这时就可以使用强制转换成int 型:当是整数的时候,int、float 的主要数值相同,反之 int 型 < float 型。
7. BC65 计算商品打折结算金额
题目链接:牛客网_BC65 计算商品打折结算金额_简单
#include <stdio.h>int main()
{int price = 0;//实际价格scanf("%d", &price);float pay = 0;//实付价格if(price >= 5000){pay = price * 0.6;}else if(price >= 2000){pay = price * 0.7;}else if(price >= 500){pay = price * 0.8;}else {pay = price * 0.9;}printf("%.1f\n", pay);return 0;
}
解题思路——
--本题分支结构比较清晰,为了书写简便,从后往前进行判断。
相关刷题系列回顾 :
#C语言——刷题攻略:牛客编程入门训练(六):运算(三)-- 涉及 辗转相除法求最大公约数
#C语言——刷题攻略:牛客编程入门训练(七):分支控制(一)-- 涉及 %c前加空格:忽略起首的空白字符
结语:本篇文章就到此结束了,本文主要是练习有关分支控制的题目,后续的题目练习难度会慢慢上来,但总体来说不会太难,喜欢的朋友们,一起来学习吧!欢迎三连~