关键词:C语言, 刷题, 编程挑战, 平均身高, HTTP状态码, 数字三角形, 公务员面试, 序列插入, 筛选法, 图像相似度, 登录验证, 包含数字9, 奇偶统计, 统计成绩, 密码验证, 矩阵计算, 逆序输出
题目来源于牛客网
编程语言初学训练营_在线编程+题解_牛客题霸_牛客网
BC72 平均身高
BC74 HTTP状态码
BC75 数字三角形
BC76 公务员面试
BC77 有序序列插入一个数
BC78 筛选法求素数
BC79 图像相似度
BC80 登录验证
BC85 包含数字9的数
BC86 奇偶统计
BC87 统计成绩
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. 状态码比较多,且为整数,所以可以考虑用switch语句。
#include <stdio.h> int main() { int n = 0; while (scanf("%d", &n) != EOF) { int i = 0; //打印的行数 for (i = 1; i <= n; i++) { //打印一行的内容 int j = 0; for (j = 1; j <= i; j++) { printf("%d ", j); } printf("\n"); } } return 0; }
1. 多组输入
2. 分析清楚每行打印的内容就行了
#include <stdio.h> int main() { int i = 0; int sum = 0; int min = 100;//假设最小值是100 int max = 0;//假设最大值是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;//要插入的数据 //输入数据 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; } } //如果插入数字小于所有的数字 if (i == 0) { arr[i] = m; } //打印 for (i = 0; i < n + 1; i++) { printf("%d ", arr[i]); } return 0; }
1. 多组输入
2. 从往前比较并一定数字找到合适的位置,就可以插入数字了,但是如果插入的数字比所有的元素都小,那就插入到第一个位置上。
#include <stdio.h> //方法1:筛选法 int main() { int n = 0; while (scanf("%d", &n)!=EOF) { int arr[n + 1];//变长数组 int i = 0; //初始化数组的内容为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是否为素数 //i——i-1之间的数字 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; }
封装函数:
#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; //题目相当于打印n以内的素数 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; //输入数据 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]); } } //求相同元素的个数 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. 输入二维数组
2. 求两个二维数组的相同元素个数
3. 求百分比要注意*100.0,小数点后保留2位
此题目要用到字符串函数,刚好,小雅兰最近才写完这些知识点
字符函数和字符串函数(上)——“C”_认真学习的小雅兰.的博客-CSDN博客
字符函数和字符串函数(下)——“C”_认真学习的小雅兰.的博客-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函数,比较的是两个字符串中对应字符的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. 要判断一个数字是否包含9就看一下这个数字的某一位是否为9即可,只要某一位为9就停下里来。
#include <stdio.h> int main() { int n = 0; scanf("%d", &n); int i = 0; int odd = 0;//奇数的个数 int even = 0;//偶数的个数 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;//奇数的个数 if (n % 2 == 0) odd = n / 2;//如果n是偶数,则奇数和偶数一样多 else odd = n / 2 + 1;//如果n是奇数,则奇数比偶数多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;//假设的最小值 double max = 0.0;//假设的最大值 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. 输入的同时就最大值最小值和求和,然后计算想要的结果。
#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. 密码是字符串,字符串的比较函数使用strcmp函数。
#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的数求和。
#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; }
如果这个题不仅仅是逆序输出,而是要把数组中的数据逆序存放,又如何处理呢?
好啦,小雅兰今天的内容就到这里啦,继续加油呀,最近收到了许多uu们的私信,都是在鼓励我,支持我,我不会辜负你们的期望的,坚持写博客!!!文章来源:https://www.toymoban.com/news/detail-400800.html
文章来源地址https://www.toymoban.com/news/detail-400800.html
到了这里,关于如何解决C语言编程挑战中的问题?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!