引言
? ? ? ? 針對初學者,每日練習幾個題,快速上手C語言。第四天。(連續更新中)
? ? ? ? 采用在線OJ的形式
什么是在線OJ?
? ? ? ? 在線判題系統(英語:Online Judge,縮寫OJ)是一種在編程競賽中用來測試參賽程序的在線系統,也可以用于平時的練習。
????????詳細內容可以看一下這篇博客:關于C/C++語言的初學者在哪刷題,怎么刷題-CSDN博客https://blog.csdn.net/2401_88433210/article/details/146056171?spm=1011.2415.3001.10575&sharefrom=mp_manage_link
1.?時間轉換
????????點進去直接做題:
時間轉換_牛客題霸_牛客網 (nowcoder.com)https://www.nowcoder.com/practice/c4ae7bcac7f9491b8be82ee516a94899?tpId=107&&tqId=33304&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking參考代碼:
#include<stdio.h>
int main()
{int seconds, h, m, s;scanf ("%d",&seconds);h=seconds/3600;m=(seconds%3600)/60;s=(seconds%3600)%60;printf("%d %d %d",h,m,s);
}
解析:非常簡單的一道找規律的題,注意格式的要求
2.總成績和平均分計算
????????點進去直接做題:
總成績和平均分計算_牛客題霸_牛客網 (nowcoder.com)https://www.nowcoder.com/practice/0fa5132c156b434da4347ad051c4be22?tpId=107&&tqId=33305&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking參考代碼:
#include<stdio.h>
int main() {//三科成績double score[3] = {0};//輸入scanf("%lf %lf %lf", &score[0], &score[1], &score[2]);//計算double sum = score[0] + score[1] + score[2] ;double avg = sum / 3.0;//輸出printf("%.2lf %.2lf", sum, avg);return 0;
}
解析:非常簡單的一道題,不會說明前幾天的題,你沒有好好做。
? ? ? ? 這個題也可以用for循環邊讀邊計算,自己可以嘗試嘗試,不懂的評論區里留言
3.KiKi和酸奶
????????點進去直接做題:KiKi和酸奶_牛客題霸_牛客網 (nowcoder.com)https://www.nowcoder.com/practice/c7721f3a1b1a47a783974453e82cadbb?tpId=107&&tqId=33311&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking
參考代碼:
#include <stdio.h>int main(){int n = 0;int h = 0;int m = 0;while(scanf("%d %d %d", &n, &h, &m) != EOF){if(m%h>0)printf("%d\n", n-m/h-1);elseprintf("%d\n", n-m/h);}return 0;}
解析:
1. 注意多組輸入
2. 如果h分鐘喝一瓶酸奶,那么m分鐘喝汽水的瓶數就是h/m瓶,但是如果m%h有余數,就說明又打 開了一瓶,只是沒來得及喝完,那么位打開的就少一瓶。
4.發布信息
????????點進去直接做題
發布信息_牛客題霸_牛客網 (nowcoder.com)https://www.nowcoder.com/practice/20e59d0f388448c68f581b9d3ca66049?tpId=107&&tqId=33312&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking參考代碼:
#include<stdio.h>
int main()
{puts("I lost my cellphone!");return 0;
}
解析:不會的話.......回家把孩子 (開個玩笑)。
5.?輸出學生信息
? ? ? ? 點進去直接做題:
輸出學生信息_牛客題霸_牛客網 (nowcoder.com)https://www.nowcoder.com/practice/8e94458049eb4e838f711bbd1be0045e?tpId=107&&tqId=33313&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking參考代碼:
#include <stdio.h>int main(){printf("Name Age Gender\n");//注意四個空格 和換行printf("---------------------\n");printf("Jack 18 man\n");//注意五個空格 對齊return 0;
}
?解析:和上面題一樣,主要是鍛煉大家的速度和細節(得多寫)。
6.進制A+B
????????點進去直接做題
進制A+B_牛客題霸_牛客網 (nowcoder.com)https://www.nowcoder.com/practice/6187581174ac48278ca3bccf8d534897?tpId=107&&tqId=33315&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking參考代碼:
#include<stdio.h>
int main(void)
{int a,b,result;scanf("%x %o",&a,&b);//注意怎么輸入十六進制和八進制result=a+b;printf("%d",result);return 0;
}
?解析:
????????1. 首先要理解十進制、十六進制、八進制只是一種數據的表示形式,不是數據的存儲形式。
????????2. 不同格式的數據的輸出在C語言中有不同的格式指定,比如:%x是十六進制格式,%o就是八進制格式。
????????3. 不同進制的數據存放都整形變量中都是整形值,直接計算就行,計算交給計算機。
7.網購
????????點進去直接做題:
網購_牛客題霸_牛客網 (nowcoder.com)https://www.nowcoder.com/practice/5d7dfd405e5f4e4fbfdff6862c46b751?tpId=107&&tqId=33318&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking參考代碼:
代碼一:
#include<stdio.h>int main(){//獲取輸入double price;int m,d,c; //month,day,couponscanf("%lf%d%d%d",&price,&m,&d,&c);//計算價格并輸出if(m == 11 && d == 11){ //雙十一//打七折后再計算是否有優惠券price = (price * 0.7) - (50 * c); // c為0則50*0=0,c為1則50*1=1} else if(m == 12 && d == 12){ //雙十二//打八折后與上面同理price = (price * 0.8) - (50 * c);}//輸出最后價格printf("%.2lf\n",(price > 0 ? price : 0.0));return 0;
}代碼二:
#include<stdio.h>int main()
{double price = 0.0;int month = 0;int day = 0;int flag = 0;scanf("%lf %d %d %d", &price, &month, &day, &flag);if (month == 11 && day == 11){price = price * 0.7 - 50.0*flag;}else if (month == 12 && day == 12){price = price * 0.8 - 50*flag;}if (price < 0){printf("0.00\n");}else{printf("%.2lf\n", price);}return 0;
}
解析:
? ? ? ? 把題目意思搞懂,很簡單的一道題,注意細節
8.爭奪前五名
????????直接點進去做題
爭奪前五名_牛客題霸_牛客網 (nowcoder.com)https://www.nowcoder.com/practice/cd052308a1c44a88ad00255f312c3e14?tpId=107&&tqId=33320&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking參考代碼:
//代碼一:自己親自實現排序 int main() {int n, temp;scanf("%d", &n);int m[n];for (int i = 0; i < n; i++) {scanf("%d ", &m[i]);}//冒泡排序for (int j = 0; j < n; j++) {for (int k = 0; k < n; k++) {if (m[j] > m[k]) {temp = m[j];m[j] = m[k];m[k] = temp;}}}printf("%d %d %d %d %d", m[0], m[1], m[2], m[3], m[4]);return 0; }//代碼二:使用庫函數qsoort#include <stdio.h>int cmp_int(const void* e1, const void*e2)//比較函數{return *(int*)e1 - *(int*)e2;}int main(){int n = 0;int score[40] = {0};scanf("%d", &n);int i = 0;for(i=0; i<n; i++){scanf("%d", &score[i]);}//對所有數字排序int j = 0;//使用庫函數排序qsort(score, n, 4, cmp_int);for(i=0; i<5; i++){printf("%d ", score[--n]);}return 0;}
解析:
????????1. 要學會使用C語言庫函數提供qsort函數。
void qort(void* arr[], int len, int n, int cmp); //解釋:要排列數組的起始地址,數組的長度,一個元素對應的字節,一個比較函數
????????2. 或者自己實現一個簡單的整形數組排序代碼。
冒泡排序的動圖:(看著代碼想,在腦子里模擬一下)
9.?競選社長
? ? ? ? 點進去直接做題:
競選社長_牛客題霸_牛客網 (nowcoder.com)https://www.nowcoder.com/practice/45a30e3ef51040ed8a7674984d6d1553?tpId=107&&tqId=33321&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking參考代碼:
#include<stdio.h> int main(void) {char s;int coutA=0,coutB=0;while((s=getchar())!='0')//關鍵是要看輸入符號結束的設定{if(s=='A')coutA++;elsecoutB++;}if(coutA>coutB)printf("A");else if(coutA<coutB)printf("B");elseprintf("E");return 0; }
解析:
????????本題的解法很多,但本質都是一樣的就是代碼寫的不一樣,可以擴展自己的思維多寫寫。