Add function problems
This commit is contained in:
parent
66238736d8
commit
4d49180857
37
semester1/pset14/1-1-swap.c
Normal file
37
semester1/pset14/1-1-swap.c
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char id[16]; //学生账号
|
||||||
|
int total; //综合成绩
|
||||||
|
int ce; //机试成绩
|
||||||
|
int ws; //加权成绩
|
||||||
|
} STUDENT;
|
||||||
|
|
||||||
|
void Sort(STUDENT a[], int size);
|
||||||
|
void Swap(STUDENT *s1, STUDENT *s2);
|
||||||
|
int Comp(STUDENT *s1, STUDENT *s2);
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
STUDENT stu[100];
|
||||||
|
int i, n;
|
||||||
|
|
||||||
|
scanf("%d", &n);
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
|
scanf("%s%d%d", stu[i].id, &stu[i].ce, &stu[i].ws);
|
||||||
|
stu[i].total = stu[i].ce + stu[i].ws;
|
||||||
|
}
|
||||||
|
|
||||||
|
Sort(stu, n);
|
||||||
|
for (i = 0; i < n; i++)
|
||||||
|
printf("%s %d %d %d\n", stu[i].id, stu[i].total, stu[i].ce, stu[i].ws);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 请在这里填写答案 */
|
||||||
|
void Swap(STUDENT *s1, STUDENT *s2) {
|
||||||
|
STUDENT tmp = *s1;
|
||||||
|
*s1 = *s2;
|
||||||
|
*s2 = tmp;
|
||||||
|
return;
|
||||||
|
}
|
43
semester1/pset14/1-2-comp.c
Normal file
43
semester1/pset14/1-2-comp.c
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char id[16]; //学生账号
|
||||||
|
int total; //综合成绩
|
||||||
|
int ce; //机试成绩
|
||||||
|
int ws; //加权成绩
|
||||||
|
} STUDENT;
|
||||||
|
|
||||||
|
void Sort(STUDENT a[], int size);
|
||||||
|
void Swap(STUDENT *s1, STUDENT *s2);
|
||||||
|
int Comp(STUDENT *s1, STUDENT *s2);
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
STUDENT stu[100];
|
||||||
|
int i, n;
|
||||||
|
|
||||||
|
scanf("%d", &n);
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
|
scanf("%s%d%d", stu[i].id, &stu[i].ce, &stu[i].ws);
|
||||||
|
stu[i].total = stu[i].ce + stu[i].ws;
|
||||||
|
}
|
||||||
|
|
||||||
|
Sort(stu, n);
|
||||||
|
for (i = 0; i < n; i++)
|
||||||
|
printf("%s %d %d %d\n", stu[i].id, stu[i].total, stu[i].ce, stu[i].ws);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 请在这里填写答案 */
|
||||||
|
int Comp(STUDENT *s1, STUDENT *s2) {
|
||||||
|
if (s1->total > s2->total) {
|
||||||
|
return 1;
|
||||||
|
} else if (s1->total == s2->total) {
|
||||||
|
if (s1->ce > s2->ce) {
|
||||||
|
return 1;
|
||||||
|
} else
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
40
semester1/pset14/1-3-sort.c
Normal file
40
semester1/pset14/1-3-sort.c
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char id[16]; //学生账号
|
||||||
|
int total; //综合成绩
|
||||||
|
int ce; //机试成绩
|
||||||
|
int ws; //加权成绩
|
||||||
|
} STUDENT;
|
||||||
|
|
||||||
|
void Sort(STUDENT a[], int size);
|
||||||
|
void Swap(STUDENT *s1, STUDENT *s2);
|
||||||
|
int Comp(STUDENT *s1, STUDENT *s2);
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
STUDENT stu[100];
|
||||||
|
int i, n;
|
||||||
|
|
||||||
|
scanf("%d", &n);
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
|
scanf("%s%d%d", stu[i].id, &stu[i].ce, &stu[i].ws);
|
||||||
|
stu[i].total = stu[i].ce + stu[i].ws;
|
||||||
|
}
|
||||||
|
|
||||||
|
Sort(stu, n);
|
||||||
|
for (i = 0; i < n; i++)
|
||||||
|
printf("%s %d %d %d\n", stu[i].id, stu[i].total, stu[i].ce, stu[i].ws);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 请在这里填写答案 */
|
||||||
|
void Sort(STUDENT a[], int size) {
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
for (int j = 0; j < size - 1; j++) {
|
||||||
|
if (!Comp(&a[j], &a[j + 1])) {
|
||||||
|
Swap(&a[j], &a[j + 1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
64
semester1/pset14/1-4-ArraySort.c
Normal file
64
semester1/pset14/1-4-ArraySort.c
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#define MAX 101
|
||||||
|
|
||||||
|
char **create1(int n);
|
||||||
|
char *create2(int n);
|
||||||
|
void sort(char **strArray, int size);
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
char **strArray;
|
||||||
|
int n, i;
|
||||||
|
|
||||||
|
scanf("%d", &n);
|
||||||
|
strArray = create1(n);
|
||||||
|
if (strArray != NULL) {
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
|
strArray[i] = create2(MAX);
|
||||||
|
if (strArray[i] == NULL)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
return -1; //这里两个 return -1 都是无法获得内存时直接结束程序
|
||||||
|
|
||||||
|
getchar(); //吃掉前边输入的回车符
|
||||||
|
|
||||||
|
for (i = 0; i < n; i++)
|
||||||
|
fgets(strArray[i], MAX, stdin); //读入字符串
|
||||||
|
|
||||||
|
sort(strArray, n); //排序
|
||||||
|
|
||||||
|
for (i = 0; i < n; i++)
|
||||||
|
printf("%s\n", strArray[i]); //输出
|
||||||
|
|
||||||
|
for (i = 0; i < n; i++)
|
||||||
|
free(strArray[i]);
|
||||||
|
free(strArray);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 请在这里填写答案 */
|
||||||
|
char **create1(int n) {
|
||||||
|
char **tmp = malloc(sizeof(char *) * n);
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *create2(int n) {
|
||||||
|
char *tmp = malloc(sizeof(char) * n);
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sort(char **strArray, int size) {
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
for (int j = 0; j < size - 1; j++) {
|
||||||
|
if (strcmp(strArray[j], strArray[j + 1]) > 0) {
|
||||||
|
char *tmp = strArray[j];
|
||||||
|
strArray[j] = strArray[j + 1];
|
||||||
|
strArray[j + 1] = tmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue