25级第一次测试题解
第一题:
代码:printf语句
#include<bits/stdc++.h>//万能头文件(vs要自己导入bits文件)
#define ll long long
int main(){printf("我爱吉首大学!");return 0;
}第二题:

代码:
选择或冒泡都可以
下面提供选择排序
#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>//万能头文件(vs要自己导入bits文件)
#define ll long long
int a[1000000];int main() {int n;scanf("%d", &n);for (int i = 0; i < n; i++) {scanf("%d", &a[i]);}for (int i = 0; i < n; i++) {int z = i;for (int j = i; j < n; j++) {if (a[z] > a[j]) {z = j;}}int u = a[z];a[z] = a[i], a[i] = u;}for (int i = 0; i < n; i++) {printf("%d ", a[i]);}return 0;
}第三题
代码
可以使用 快速排序或归并排序 时间复杂度为O(n log(n))
快排:
#define _CRT_SECURE_NO_WARNINGS//解决vs scanf不安全
#include<bits/stdc++.h>//万能头文件(vs要自己导入bits文件)
#define ll long long
int a[1000000];
void sqrt_port(int arr[], int start, int end) {//函数if (start >= end) {return;}//判断结束条件int min = start;int max = end;int q = arr[start];//赋初值while (min < max) {while (arr[max] >= q && min < max) {max--;}//大于q的数(且必须右边的先比较)while (arr[min] <= q && min < max) {min++;}//小于q的数int t = arr[min];arr[min] = arr[max];arr[max] = t;//交换大小值}//重复直到min和max相等,及确定arr[start]的位置arr[start] = arr[max];arr[max] = q;sqrt_port(arr, start, min - 1);sqrt_port(arr, max + 1, end);
}
int main() {int n;scanf("%d", &n);for (int i = 0; i < n; i++) {scanf("%d", &a[i]);}sqrt_port(a, 0, n - 1);for (int i = 0; i < n; i++) {printf("%d ", a[i]);}return 0;
}归并排序
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int n, a[100000],b[100000];
void kuai(int r, int l) {if (r >= l) {return;}int mid = r + (l - r) / 2;kuai(r, mid);kuai(mid + 1, l);int i = r, j = mid + 1,z=r;while (i <= mid && j <= l) {if (a[i] < a[j]) {b[z++] = a[i++];}else {b[z++] = a[j++];}}while (i <= mid) {b[z++] = a[i++];}while (j <= l) {b[z++] = a[j++];}for (z = r;z <= l;z++) {a[z] = b[z];}
}
int main() {scanf("%d", &n);for (int i = 0;i < n;i++) {scanf("%d", &a[i]);}kuai(0, n - 1);for (int i = 0;i < n;i++) {printf("%d ", a[i]);}printf("\n");return 0;
}第四题:

代码
可以三个if条件判断
也可以先排序在去中间的
以下提供排序的
#define _CRT_SECURE_NO_WARNINGS//解决vs scanf不安全
#include<bits/stdc++.h>//万能头文件(vs要自己导入bits文件)
#define ll long longint main() {int t;scanf("%d", &t);while (t--) {int a[3];for(int i=0;i<3;i++){scanf("%d", &a[i]);}for (int i = 0; i < 3; i++) {int u = i;for (int j = i; j < 3; j++) {if (a[u] > a[j]) {u = j;}}int w = a[u];a[u] = a[i], a[i] = w;}printf("%d\n", a[1]);}return 0;
}第五题:

可以三个if条件判断
也可以先排序(从小到大)在判断a[0]+a[1]是否=a[2]
以下提供排序的
#define _CRT_SECURE_NO_WARNINGS//解决vs scanf不安全
#include<bits/stdc++.h>//万能头文件(vs要自己导入bits文件)
#define ll long longint main() {int t;scanf("%d", &t);while (t--) {int a[3];for(int i=0;i<3;i++){scanf("%d", &a[i]);}for (int i = 0; i < 3; i++) {int u = i;for (int j = i; j < 3; j++) {if (a[u] > a[j]) {u = j;}}int w = a[u];a[u] = a[i], a[i] = w;}if (a[0] + a[1] == a[2]) {printf("YES\n");}else {printf("NO\n");}}return 0;
}第六题:
没学过字符串和c++的,使用while (scanf("%c", &q)!=EOF)判断结束,然后倒着输出
#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>//万能头文件(vs要自己导入bits文件)
#define ll long long
char a[10000000];int main() {char q;int i = 0;while (scanf("%c", &q)!=EOF) {if (q == '\n') {break;}a[i++] = q;}i--;for (; i >= 0; i--) {printf("%c", a[i]);}return 0;
}第七题:

用 double(双精度浮点型) 定义a,b;记住 %.10llf 可以保留小数点后几位
#define _CRT_SECURE_NO_WARNINGS//解决vs scanf不安全
#include<bits/stdc++.h>//万能头文件(vs要自己导入bits文件)
#define ll long longint main() {double a, b;while(scanf("%lf %lf", &a, &b) != EOF){ printf("%.10lf\n",a / b);}return 0;
}第八题

判断数组里面有没有比m大的数(for循环里面比较)
#define _CRT_SECURE_NO_WARNINGS//解决vs scanf不安全
#include<bits/stdc++.h>//万能头文件(vs要自己导入bits文件)
#define ll long long
int a[100000];
int main() {int n, m;scanf("%d %d", &n, &m);for (int i = 0; i < n; i++) {scanf("%d", &a[i]);}int i = 0;for (; i < n; i++) {if (m <= a[i]) {break;}}if (i < n) {printf("no");}else {printf("yes");}return 0;
}第九题

因为为数组不能在中间插,所有只能从后往前遍历,一旦a[i-1]比m小,就插入a[i]=m,否则a[i]=a[i-1],要考虑i=0的情况
#define _CRT_SECURE_NO_WARNINGS//解决vs scanf不安全
#include<bits/stdc++.h>//万能头文件(vs要自己导入bits文件)
#define ll long long
int a[100000];
int main() {int n, m;scanf("%d", &n);for (int i = 0; i < n; i++) {scanf("%d", &a[i]);}scanf("%d", &m);for (int i=n; i>=0; i--) {if (i - 1 >= 0 && a[i - 1] >= m) {a[i] = a[i - 1];}else {a[i] = m;break;}}for (int i = 0; i <= n; i++) {printf("%d ", a[i]);}return 0;
}第十题:

我可以发现:空格+※每行一共有2*n-1个,第i(i从1开始)行※有2*i-1个,所有左右空格各有((n * 2 - 1) - (i * 2 - 1))/2个,然后循环遍历打印空格※空格
#define _CRT_SECURE_NO_WARNINGS//解决vs scanf不安全
#include<bits/stdc++.h>//万能头文件(vs要自己导入bits文件)
#define ll long long
int a[100000];
int main() {int n;scanf("%d", &n);for (int i = 1; i <= n; i++) {for (int j = 1; j <= ((n * 2 - 1) - (i * 2 - 1))/2; j++) {printf(" ");}for (int j = 1; j <= i * 2 - 1; j++) {printf("*");}for (int j = 1; j <= ((n * 2 - 1) - (i * 2 - 1)) / 2; j++) {printf(" ");}printf("\n");}return 0;
}第十一题

for循环遍历,以为i首元素,判断i为首元素的单词是否为此单词;是的话ans+1;
#define _CRT_SECURE_NO_WARNINGS//解决vs scanf不安全
#include<bits/stdc++.h>//万能头文件(vs要自己导入bits文件)
#define ll long long
int a[100000];
int main() {char a[100010];scanf("%s", a);int n = 0;//求字符串长度for (int i = 0;; i++) {if (a[i] == '\0') {//字符串以\0结尾n = i;break;}}int ans = 0;for (int i = 0; i < n - 4; i++) {//防止数组越界if (a[i] == 'e' && a[i + 1] == 'd' && a[i + 2] == 'g' && a[i + 3] == 'n' && a[i + 4] == 'b') {ans++;}}printf("%d\n", ans);return 0;
}
