作為一個入門小白,每天的練習是必不可少的,最近一直在牛客網刷題,發布在博客上的都是我個人感覺的難點,和我一樣的小白可以看看有沒有共通之處,如果是大佬來訪,有空幫我看看還有沒有優化的空間,歡迎各位評論區留言,一起進步嘍!
題目鏈接爭奪前五名_牛客題霸_牛客網 (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;
}
這樣看下來感覺也不太難嘛......可我整了兩小時,中間問題百出,除錯監控花了好長時間

好無奈,代碼肯定不完美,友友們看看能不能再簡潔些,私信我或評論區留言,讓我學習一下,感謝大家!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/325644.html
標籤:其他
上一篇:【演算法學習】1769. 移動所有球到每個盒子所需的最小運算元(java / c / c++ / python / go / rust)
