各位CSDN的uu们你们好呀,今天,又到小雅兰的复习时间啦,那么,开始进入我们的正题吧
题目来源于牛客网
编程语言初学训练营_在线编程+题解_牛客题霸_牛客网
BC72 平均身高
BC74 HTTP状态码
BC75 数字三角形
BC76 公务员面试
BC77 有序序列插入一个数
BC78 筛选法求素数
BC79 图像相似度
BC80 登录验证
BC85 包含数字9的数
BC86 奇偶统计
BC87 统计成绩
BC89 密码验证
BC90 矩阵计算
BC92 逆序输出
#include 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 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 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 int main(){int i = 0;int sum = 0;int min = 100;//假设最小值是100int max = 0;//假设最大值是0int score = 0;for (i = 0; i max)max = score;//求最大值if (score < min)min = score;//求最小值}printf("%.2f\n", (sum - min - max) / 5.0);return 0;}
1. 多组输入
2. 一边输入,一边求和,一边求最大值最小值
3. 再算平均值
#include int main(){int n = 0;int arr[50] = { 0 };int m = 0;//要插入的数据//输入数据scanf("%d", &n);int i = 0;for (i = 0; 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 //方法1:筛选法int main(){int n = 0;while (scanf("%d", &n)!=EOF){int arr[n + 1];//变长数组int i = 0;//初始化数组的内容为0-nfor (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]);elsecount++;}printf("\n%d\n", count);}return 0;}
另一种方法:
#include //方法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 //方法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 int main(){int m = 0;int n = 0;int a[100][100] = { 0 };intb[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++;}}}//求相速度注意乘以100printf("%.2f\n", 100.0 * count / (m * n));return 0;}
1. 输入二维数组
2. 求两个二维数组的相同元素个数
3. 求百分比要注意*100.0,小数点后保留2位
此题目要用到字符串函数,刚好,小雅兰最近才写完这些知识点
字符函数和字符串函数(上)——“C”_认真学习的小雅兰.的博客-CSDN博客
字符函数和字符串函数(下)——“C”_认真学习的小雅兰.的博客-CSDN博客
#include #includeint 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 int main(){int i = 0;int count = 0;for (i = 1; i <= 2019; i++){//判断i是否包含9int t = i;while (t){if (t % 10 == 9){count++;break;}t = t / 10;}}printf("%d\n", count);return 0;}
1. 要判断一个数字是否包含9就看一下这个数字的某一位是否为9即可,只要某一位为9就停下里来。
#include 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 int main(){int n = 0;scanf("%d", &n);int i = 0;int odd = 0;//奇数的个数if (n % 2 == 0)odd = n / 2;//如果n是偶数,则奇数和偶数一样多elseodd = n / 2 + 1;//如果n是奇数,则奇数比偶数多1printf("%d %d\n", odd, n - odd);return 0;}
#include 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 max)max = score;if (score < min)min = score;}avg = sum / n;printf("%.2lf %.2lf %.2lf\n", max, min, avg);return 0;}
1. 输入的同时就最大值最小值和求和,然后计算想要的结果。
#include #include int main(){char password1[100] = { 0 };char password2[100] = { 0 };scanf("%s %s", password1, password2);if (strcmp(password1, password2) == 0)printf("same\n");elseprintf("different\n");return 0;}
1. 密码是字符串,字符串的比较函数使用strcmp函数。
#include 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 0)sum += tmp;}}printf("%d", sum);return 0;}
1. 在输入的同时,将大于0的数求和。
#include int main(){int arr[10] = { 0 };int i = 0;for (i = 0; i = 0; i--){printf("%d ", arr[i]);}return 0;}
如果这个题不仅仅是逆序输出,而是要把数组中的数据逆序存放,又如何处理呢?
好啦,小雅兰今天的内容就到这里啦,继续加油呀,最近收到了许多uu们的私信,都是在鼓励我,支持我,我不会辜负你们的期望的,坚持写博客!!!