通过c语言高校最低录取分数查询
时间: 2023-12-15 21:05:16 浏览: 52
你可以通过以下 C 语言代码实现高校最低录取分数查询:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LINE_LENGTH 1024
#define MAX_COLLEGE_NUM 100
typedef struct {
char name[50];
int score;
} College;
int read_colleges(const char *filename, College *colleges, int max_college_num) {
FILE *fp = fopen(filename, "r");
if (fp == NULL) {
printf("无法打开文件 %s\n", filename);
return 0;
}
int i = 0;
char line[MAX_LINE_LENGTH];
while (fgets(line, MAX_LINE_LENGTH, fp) != NULL) {
if (i >= max_college_num) {
printf("超过最大高校数量 %d\n", max_college_num);
break;
}
char *name = strtok(line, ",");
char *score_str = strtok(NULL, ",");
if (name == NULL || score_str == NULL) {
printf("文件格式错误\n");
break;
}
strcpy(colleges[i].name, name);
colleges[i].score = atoi(score_str);
i++;
}
fclose(fp);
return i;
}
College *find_college(const char *name, College *colleges, int num) {
for (int i = 0; i < num; i++) {
if (strcmp(name, colleges[i].name) == 0) {
return &colleges[i];
}
}
return NULL;
}
int main() {
College colleges[MAX_COLLEGE_NUM];
int num_colleges = read_colleges("colleges.txt", colleges, MAX_COLLEGE_NUM);
if (num_colleges == 0) {
return 1;
}
char name[50];
printf("请输入高校名称:");
scanf("%s", name);
College *college = find_college(name, colleges, num_colleges);
if (college == NULL) {
printf("未找到高校 %s 的录取分数线\n", name);
return 1;
}
printf("%s 的最低录取分数线为 %d\n", college->name, college->score);
return 0;
}
```
这里假设高校名称和最低录取分数线数据存储在一个以逗号分隔的文本文件 `colleges.txt` 中,每行代表一个高校,格式为 `高校名称,最低录取分数线`,例如:
```
清华大学,700
北京大学,680
复旦大学,650
浙江大学,640
南京大学,620
```
程序首先定义了一个结构体 `College`,用于存储高校名称和最低录取分数线。然后定义了两个函数 `read_colleges` 和 `find_college`,分别用于从文件中读取高校数据和查找指定高校的数据。
`read_colleges` 函数会打开指定文件,逐行读取数据,并将数据存储到数组中。该函数返回实际读取的高校数量。
`find_college` 函数会遍历数组,查找指定高校的数据。如果找到了,则返回该高校的数据的指针,否则返回 `NULL`。
在 `main` 函数中,程序先调用 `read_colleges` 函数从文件中读取高校数据。然后让用户输入要查询的高校名称,调用 `find_college` 函数查找该高校的数据,如果找到了,则输出该高校的最低录取分数线;否则输出未找到该高校的录取分数线的提示。
注意,这里没有对输入的高校名称进行检查,如果输入的名称不存在于文件中,则会返回空指针。如果你需要更严格的输入检查,可以在 `find_college` 函数中添加相应的逻辑。