🌟菜鸟主页:@晨非辰的主页
👀学习专栏:《C语言刷题合集》
💪学习阶段:C语言方向初学者
⏳名言欣赏:"代码行数决定你的下限,算法思维决定你的上限。"
前言:在学习编程语言的同时,千万别忘了刷刷题来巩固一下学到的知识,对于牛客网_编程入门系列,小子会持续更新分享刷题过程,其中包括一些基础板块的题目,本次将呈现6道题。
~~注意部分标题括号内代表对题目涉及到的知识进行说明!
目录
1. 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 小乐乐算多少人被请家长
#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 水仙花数
#include <stdio.h>
int main()
{
int a, b;
int flag = 0;//定义标志——>no
int 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 变种水仙花
#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 公务员面试
#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 反向输出一个四位数
#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语言——刷题攻略:牛客编程入门训练(十):攻克 循环控制(二),轻松拿捏!
结语:本篇文章就到此结束了,本文主要是练习部分循环控制题目,后续的题目练习难度会慢慢上来,但总体来说不会太难,喜欢的朋友们,一起来学习吧!欢迎三连~