牛客网编程初学者入门训练BC39争夺前五名

作为一个入门小白,每天的练习是必不可少的。最近一直在牛客网刷题,发布在博客上的都是我个人感觉的难点,和我一样的小白可以看看有没有共通之处。如果是大佬来访,有空帮我看看还有没有优化的空间,欢迎各位评论区留言,一起进步喽!


 

题目链接争夺前五名_牛客题霸_牛客网 (nowcoder.com)

题目如下:

1.我们要输入6和6个成绩,在这里我用到了for循环来解决:

确定学生成绩数在40以内,用int arr[40],scanf()输入a值为6

 定义i为循环次数,用a来限制次数,让循环进行6次,输入六个值:99 45 78 67 72 88

 2.之后就要进行成绩的排序和比较,这里先不着急,排序,咱们来分析一波:

这里是个冒泡排序,降序排列,分为大循环(换行)小循环(行内排序):

 3.********则我们接下来敲🐎:

 如此就可以完成上述冒泡降序排列。

4.接下来,就是输出:这里注意,不管输入几个值,我们排序后只打印前五个数:如🐎所示:

 将排好的前五个拿出来,只要前五噢!!!!

5.最终的代码如下:

#include <stdio.h>
int main()
{
	int a = 0;
	int i = 0;
	int arr[40];
	scanf("%d", &a);
	for (i = 0; i<a; i++)
	{
		scanf("%d", &arr[i]);          //循环输入成绩
	}
	for (i = 0; i<a - 1; i++)          //换行大循环 5次 
	{
		int j = 0;
		
		for (j = 0; j<a - 1 - i; j++)   //行内排序
		{
			int temp = 0;
			if (arr[j]<arr[j + 1])
			{
				temp = arr[j + 1];
				arr[j + 1] = arr[j];
				arr[j] = temp;
				
			}
		}

	}
	for (i = 0; i<5; i++)
	{
		printf("%d ", arr[i]); 
	}
	return 0;
}

这样看下来感觉也不太难嘛......可我整了两小时,中间问题百出,调试监控花了好长时间

 好无奈,代码肯定不完美,友友们看看能不能再简洁些,私信我或评论区留言,让我学习一下,感谢大家!

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

今年依旧去年春

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

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

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

打赏作者

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

抵扣说明:

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

余额充值