#C语言——刷题攻略:牛客编程入门训练(十一):攻克 循环控制(三),轻松拿捏!
🌟菜鸟主页:@晨非辰的主页
👀学习专栏:《C语言刷题合集》
💪学习阶段:C语言方向初学者
⏳名言欣赏:"代码行数决定你的下限,算法思维决定你的上限。"
目录
1. BC89 包含数字9的数
2. BC90 小乐乐算多少人被请家长
3. BC91 水仙花数
4. BC92 变种水仙花
5. BC93 公务员面试
6. BC94 反向输出一个四位数
1. BC89 包含数字9的数
链接:牛客网_BC89 包含数字9的数_简单
#include <stdio.h>
int main()
{int count = 0;for(int i = 1; i <= 2019; i++){int j = i;//接收i值,防止i值混乱while(j){if(j % 10 == 9){count++;break;}j /= 10;}}printf("%d\n", count);return 0;
}
思路——
--本题有一个易混点,注意看清题目要求:统计含9的数值个数,而不是数值中9的个数;对于其他就很常规了。
2. BC90 小乐乐算多少人被请家长
链接:牛客网_BC90 小乐乐算多少人被请家长_简单
#include <stdio.h>
int main()
{int n = 0;int C = 0, M = 0, E = 0;int count = 0;scanf("%d", &n);while((scanf("%d %d %d", &C, &M, &E) == 3)){if((C + M + E) / 3 < 60){count++;}}printf("%d\n", count);return 0;
}
思路——
--本题的思路非常简单,对于数据的输入直接使用多组输入,不用管输入几行。
3. BC91 水仙花数
链接:牛客网_BC91 水仙花数_简单
#include <stdio.h>
int main()
{int a, b;int flag = 0;//定义标志——>noint sum = 0;while (scanf("%d %d", &a, &b) != EOF){//循环生成中间数for (int i = a; i <= b; i++){int i1 = i;sum = 0;//重置do{//i2变量接收余数,便于后续操作int i2 = i1 % 10;sum = sum + (i2 * i2 * i2);//if (sum == i)//{//printf("%d ", i);//flag = 1;//至少一个符合//}} while (i1 /= 10);if (sum == i){printf("%d ", i);flag = 1;//至少一个符合}}if (flag == 0){printf("no\n");}}return 0;
}
思路——
--本题虽然网站表示难度为简单,其实还是需要一些思路的;
--在示例测试时,遇到729即使数值不符合,也会打印;因为9*9*9=729,这个逻辑是因为if语句在do-while循环内部造成的将if语句拿到循环外就行.
4. BC92 变种水仙花
链接:牛客网_BC92 变种水仙花_简单
#include <stdio.h>
int main()
{int sum = 0;for(int i = 10000; i < 100000; i++){//循环进行获取两部分for(int j = 10; j <= 10000; j *= 10){sum += (i / j) * (i % j);}if(sum == i){printf("%d ", sum);}sum = 0;}return 0;
}
思路——
--本题思路较为简单,主体结构为两层for循环嵌套,逻辑比较简单,内层循环的设计比较好;当然也可以一层循环后直接进行创建多个变量来赋值'/'、'%'。
5. BC93 公务员面试
链接:牛客网_BC93 公务员面试_简单
#include <stdio.h>
int main()
{int a[7];//直接存放在数组while(scanf("%d %d %d %d %d %d %d", &a[0], &a[1], &a[2], &a[3], &a[4], &a[5], &a[6]) == 7){int max = a[0];int min = a[0];double sum = 0.0;for(int i = 0; i < 7; i++) { //先算总和sum += a[i];//获取最大数if(a[i] >= max){max = a[i];}//获取最小数if(a[i] < min){min = a[i];}}sum = sum - (max + min); printf("%.2lf\n", sum / 5.0);} return 0;
}
思路——
--本题主要是多组输入处理有点麻烦,直接将数据存储在数组中,后续对于最大值、最小值的获取和其他操作,通过数组下标操作即可。
6. BC94 反向输出一个四位数
链接:牛客网_BC94 反向输出一个四位数_简单
#include <stdio.h>
int main()
{int a = 0;scanf("%d", &a);for(int i = 0; i <= 3; i++){int j = a % 10;a /= 10;//得到一个余数就打印printf("%d", j);}return 0;
}
思路——
--本题要求逆序打印四位数,直接进行循环取余操作,得到一位就打印一位——>好处就是不用担心0在高位的输出。
刷题系列回顾:
#C语言——刷题攻略:牛客编程入门训练(九):攻克 分支控制(三)、循环控制(一),轻松拿捏!
#C语言——刷题攻略:牛客编程入门训练(十):攻克 循环控制(二),轻松拿捏!
结语:本篇文章就到此结束了,本文主要是练习部分循环控制题目,后续的题目练习难度会慢慢上来,但总体来说不会太难,喜欢的朋友们,一起来学习吧!欢迎三连~