广西大学2020级计算机系题库代码解析与参考答案
文章目录
前言
提示:代码分为极简版本和标准化版本,并不是说极简会好背或者标准化版本就繁琐,各有各的优势,贴两副代码仅供各位参考学习,预祝各位程设考出好成绩
一、判断升序
主要思路是前者与后者相比大小,符合条件即输出YES^NO;
极简版
#include<stdio.h>
int x[200005] = {
},i=1,flag=1;
int main()
{
scanf("%d", &x[0]);
while (scanf("%d", &x[i]) != EOF) (x[i - 1] <= x[i])?i++:(flag=0);
flag?printf("YES"):printf("NO");
}//极简版本
#include<stdio.h>
int x,n=1,f=1;
int main(){
for(f=1,scanf("%d",&x);~scanf("%d",&n);x=n) f&=x<=n;
puts(f?"YES":"NO");
}
标准版
#include<stdio.h>
int main(void)
{
long long a[50004] = {
};
int i = 1;
int flag = 0;
a[0] = -0x3f3f3f3f;//最小值
while (scanf("%d", &a[i])!=EOF) {
if (a[i] >= a[i - 1]){
//这一步是用来和前一项比较
i++;
}
else flag = 1;
}
if(flag)
printf("NO\n");
else printf("YES\n");
return 0;
}//工业化代码
二、小西的排序
主要思路是利用结构体去捆绑排序,排序的有效手段是快速排序和冒泡排序;
极简版(快速排序)
代码如下(示例):
#include<stdio.h>
#include<stdlib.h>
typedef struct node {
char x[20];double y;}T;
T x[2005] = {
};
//快速排序的重载函数,用于比较大小
int cmp(const void* a, const void* b)
{
return (*(T*)a).y > (*(T*)b).y ;
}
int main()
{
int n;
while (scanf("%d", &n) != EOF) {
for (int i = 0; i < n; i++) scanf("%s %lf", &x[i].x, &x[i].y);
qsort(x, n, sizeof(T), cmp);//快速排序,直接重载装上就排好了
for (int i = 0; i < n; i++) printf("%s ", x[i].x);
printf("\n");
}
}
标准版(冒泡排序)
代码如下(示例):
#include<stdio.h>
int n;
struct {
char s[21];double hi;}bd[100],t;
int main(){
while(~scanf("%d",&n)){
for(int i=0;i<n;i++) scanf("%s %lf",&bd[i].s,&bd[i].hi);
for(int i=0;i<n;i++) for(int j=1;j<n;j++)
if(bd[j].hi<bd[j-1].hi) t=bd[j-1],bd[j-1]=bd[j],bd[j]=t;
for(int i


740

被折叠的 条评论
为什么被折叠?



