🌟菜鳥主頁:@晨非辰的主頁
👀學習專欄:《C語言刷題合集》
💪學習階段:C語言方向初學者
?名言欣賞:"代碼行數決定你的下限,算法思維決定你的上限。"
前言:在學習編程語言的同時,千萬別忘了刷刷題來鞏固一下學到的知識,對于牛客網_編程入門系列,小子會持續更新分享刷題過程,其中包括一些基礎板塊的題目,本次將呈現6道題。
~~注意部分標題括號內代表對題目涉及到的知識進行說明!
目錄
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語言——刷題攻略:牛客編程入門訓練(十):攻克 循環控制(二),輕松拿捏!
結語:本篇文章就到此結束了,本文主要是練習部分循環控制題目,后續的題目練習難度會慢慢上來,但總體來說不會太難,喜歡的朋友們,一起來學習吧!歡迎三連~?