關(guān)鍵詞:C語言, 刷題, 編程挑戰(zhàn), 平均身高, HTTP狀態(tài)碼, 數(shù)字三角形, 公務(wù)員面試, 序列插入, 篩選法, 圖像相似度, 登錄驗證, 包含數(shù)字9, 奇偶統(tǒng)計, 統(tǒng)計成績, 密碼驗證, 矩陣計算, 逆序輸出
題目來源于牛客網(wǎng)
編程語言初學(xué)訓(xùn)練營_在線編程+題解_??皖}霸_牛客網(wǎng)
BC72 平均身高
BC74 HTTP狀態(tài)碼
BC75 數(shù)字三角形
BC76 公務(wù)員面試
BC77 有序序列插入一個數(shù)
BC78 篩選法求素數(shù)
BC79 圖像相似度
BC80 登錄驗證
BC85 包含數(shù)字9的數(shù)
BC86 奇偶統(tǒng)計
BC87 統(tǒng)計成績
BC89 密碼驗證
BC90 矩陣計算
BC92 逆序輸出
#include <stdio.h> int main() { int i = 0; double score = 0.0; double sum = 0.0; for (i = 0; i < 5; i++) { scanf("%lf", &score); sum += score; } printf("%.2lf\n", sum / 5); return 0; }
#include <stdio.h> int main() { int s = 0; while (scanf("%d", &s) != EOF) { switch (s) { case 200: printf("OK\n"); break; case 202: printf("Accepted\n"); break; case 400: printf("Bad Request\n"); break; case 403: printf("Forbidden\n"); break; case 404: printf("Not Found\n"); break; case 500: printf("Internal Server Error\n"); break; case 502: printf("Bad Gateway\n"); break; } } return 0; }
1. 多組輸入
2. 狀態(tài)碼比較多,且為整數(shù),所以可以考慮用switch語句。
#include <stdio.h> int main() { int n = 0; while (scanf("%d", &n) != EOF) { int i = 0; //打印的行數(shù) for (i = 1; i <= n; i++) { //打印一行的內(nèi)容 int j = 0; for (j = 1; j <= i; j++) { printf("%d ", j); } printf("\n"); } } return 0; }
1. 多組輸入
2. 分析清楚每行打印的內(nèi)容就行了
#include <stdio.h> int main() { int i = 0; int sum = 0; int min = 100;//假設(shè)最小值是100 int max = 0;//假設(shè)最大值是0 int score = 0; for (i = 0; i < 7; i++) { scanf("%d ", &score);//輸入 sum += score;//求和 if (score > max) max = score;//求最大值 if (score < min) min = score;//求最小值 } printf("%.2f\n", (sum - min - max) / 5.0); return 0; }
1. 多組輸入
2. 一邊輸入,一邊求和,一邊求最大值最小值
3. 再算平均值
#include <stdio.h> int main() { int n = 0; int arr[50] = { 0 }; int m = 0;//要插入的數(shù)據(jù) //輸入數(shù)據(jù) scanf("%d", &n); int i = 0; for (i = 0; i < n; i++) { scanf("%d", &arr[i]); } scanf("%d", &m); //處理 for (i = n; i > 0; i--) { if (arr[i - 1 ] > m) { arr[i] = arr[i - 1]; } else { arr[i] = m; break; } } //如果插入數(shù)字小于所有的數(shù)字 if (i == 0) { arr[i] = m; } //打印 for (i = 0; i < n + 1; i++) { printf("%d ", arr[i]); } return 0; }
1. 多組輸入
2. 從往前比較并一定數(shù)字找到合適的位置,就可以插入數(shù)字了,但是如果插入的數(shù)字比所有的元素都小,那就插入到第一個位置上。
#include <stdio.h> //方法1:篩選法 int main() { int n = 0; while (scanf("%d", &n)!=EOF) { int arr[n + 1];//變長數(shù)組 int i = 0; //初始化數(shù)組的內(nèi)容為0-n for (i = 0; i <= n; i++) { arr[i] = i; } for (i = 2; i <= n; i++) { int j = 0; for (j = i + 1; j <= n; j++) { if (arr[j] % i == 0) { arr[j] = 0; } } } int count = 0; for (i = 2; i <= n; i++) { if (arr[i] != 0) printf("%d ", arr[i]); else count++; } printf("\n%d\n", count); } return 0; }
另一種方法:
#include <stdio.h> //方法2:試除法 int main() { int n = 0; while (scanf("%d", &n) != EOF) { int i = 0; int count = 0; for (i = 2; i <= n; i++) { //判斷i是否為素數(shù) //i——i-1之間的數(shù)字 int j = 0; for (j = 2; j < i; j++) { if (i % j == 0) { count++; break; } } if (j == i) { printf("%d ", j); } } printf("\n%d\n", count); } return 0; }
封裝函數(shù):
#include <stdio.h> //方法2:試除法 int is_prime(int n) { int i = 0; for (i = 2; i < n; i++) { if (n % i == 0) return 0; } return 1; } int main() { int n = 0; //題目相當(dāng)于打印n以內(nèi)的素數(shù) while (scanf("%d", &n) != EOF) { int i = 0; int count = 0; for (i = 2; i <= n; i++) { if (is_prime(i) == 1) { printf("%d ", i); } else { count++; } } printf("\n%d\n", count); } return 0; }
#include <stdio.h> int main() { int m = 0; int n = 0; int a[100][100] = { 0 }; int b[100][100] = { 0 }; scanf("%d %d", &m, &n); int i = 0; int j = 0; int count = 0.0; //輸入數(shù)據(jù) for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { scanf("%d", &a[i][j]); } } for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { scanf("%d", &b[i][j]); } } //求相同元素的個數(shù) for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { if (a[i][j] == b[i][j]) { count++; } } } //求相速度注意乘以100 printf("%.2f\n", 100.0 * count / (m * n)); return 0; }
1. 輸入二維數(shù)組
2. 求兩個二維數(shù)組的相同元素個數(shù)
3. 求百分比要注意*100.0,小數(shù)點后保留2位
此題目要用到字符串函數(shù),剛好,小雅蘭最近才寫完這些知識點
字符函數(shù)和字符串函數(shù)(上)——“C”_認(rèn)真學(xué)習(xí)的小雅蘭.的博客-CSDN博客
字符函數(shù)和字符串函數(shù)(下)——“C”_認(rèn)真學(xué)習(xí)的小雅蘭.的博客-CSDN博客
#include <stdio.h> #include<string.h> int main() { char name[20] = { 0 }; char password[20] = { 0 }; while (scanf("%s %s", name, password) != EOF) { if (strcmp(name, "admin") == 0 && strcmp(password, "admin") == 0) { printf("Login Success!\n"); } else { printf("Login Fail!\n"); } } return 0; }
1. 多組輸入
2. 兩個字符串比較大小不能使用==,得使用strcmp函數(shù),比較的是兩個字符串中對應(yīng)字符的ASCII碼值。
#include <stdio.h> int main() { int i = 0; int count = 0; for (i = 1; i <= 2019; i++) { //判斷i是否包含9 int t = i; while (t) { if (t % 10 == 9) { count++; break; } t = t / 10; } } printf("%d\n", count); return 0; }
1. 要判斷一個數(shù)字是否包含9就看一下這個數(shù)字的某一位是否為9即可,只要某一位為9就停下里來。
#include <stdio.h> int main() { int n = 0; scanf("%d", &n); int i = 0; int odd = 0;//奇數(shù)的個數(shù) int even = 0;//偶數(shù)的個數(shù) for (i = 1; i <= n; i++) { if (i % 2 == 1) { odd++; } if (i % 2 == 0) { even++; } } printf("%d %d\n", odd, even); return 0; }
另一種寫法:
#include <stdio.h> int main() { int n = 0; scanf("%d", &n); int i = 0; int odd = 0;//奇數(shù)的個數(shù) if (n % 2 == 0) odd = n / 2;//如果n是偶數(shù),則奇數(shù)和偶數(shù)一樣多 else odd = n / 2 + 1;//如果n是奇數(shù),則奇數(shù)比偶數(shù)多1 printf("%d %d\n", odd, n - odd); return 0; }
#include <stdio.h> int main() { int n = 0; double sum = 0.0; double avg = 0.0; double min = 100.0;//假設(shè)的最小值 double max = 0.0;//假設(shè)的最大值 double score = 0.0; int i = 0; scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%lf", &score); sum += score; if (score > max) max = score; if (score < min) min = score; } avg = sum / n; printf("%.2lf %.2lf %.2lf\n", max, min, avg); return 0; }
1. 輸入的同時就最大值最小值和求和,然后計算想要的結(jié)果。
#include <stdio.h> #include <string.h> int main() { char password1[100] = { 0 }; char password2[100] = { 0 }; scanf("%s %s", password1, password2); if (strcmp(password1, password2) == 0) printf("same\n"); else printf("different\n"); return 0; }
1. 密碼是字符串,字符串的比較函數(shù)使用strcmp函數(shù)。
#include <stdio.h> int main() { int m = 0; int n = 0; scanf("%d %d", &m, &n); int i = 0; int j = 0; int tmp = 0; int sum = 0; for (i = 0; i < n; i++) { for (j = 0; j < m; j++) { scanf("%d", &tmp); if (tmp > 0) sum += tmp; } } printf("%d", sum); return 0; }
1. 在輸入的同時,將大于0的數(shù)求和。
#include <stdio.h> int main() { int arr[10] = { 0 }; int i = 0; for (i = 0; i < 10; i++) { scanf("%d", &arr[i]); } for (i = 9; i >= 0; i--) { printf("%d ", arr[i]); } return 0; }
如果這個題不僅僅是逆序輸出,而是要把數(shù)組中的數(shù)據(jù)逆序存放,又如何處理呢?
好啦,小雅蘭今天的內(nèi)容就到這里啦,繼續(xù)加油呀,最近收到了許多uu們的私信,都是在鼓勵我,支持我,我不會辜負(fù)你們的期望的,堅持寫博客?。?!文章來源:http://www.zghlxwxcb.cn/news/detail-400800.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-400800.html
到了這里,關(guān)于如何解決C語言編程挑戰(zhàn)中的問題?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!