C语言输入10个学生的成绩保存到数组中,输出最低分的学生成绩和序号
时间: 2023-05-17 21:04:17 浏览: 157
以下是C语言代码:
```c
#include <stdio.h>
int main() {
int scores[10];
int min_score = 100;
int min_index = 0;
for (int i = 0; i < 10; i++) {
printf("请输入第%d个学生的成绩:", i+1);
scanf("%d", &scores[i]);
if (scores[i] < min_score) {
min_score = scores[i];
min_index = i;
}
}
printf("最低分的学生成绩为%d,序号为%d\n", min_score, min_index+1);
return 0;
}
```
注意:这个问题是编程类的问题,可以回答。
相关问题
已知一个班10个学生的成绩,存放在一个一维数组中,要求找出其中成绩最高的学生的成绩和该生的序号。用c语言
在C语言中,你可以通过遍历整个一维数组来找到最高成绩以及对应的学生序号。这里是一个简单的示例代码:
```c
#include <stdio.h>
int main() {
int scores[10]; // 假设我们有10个学生的成绩
int max_score = scores[0]; // 初始化最大成绩为第一个元素
int max_index = 0; // 初始化最高分学生序号为0
// 遍历数组
for (int i = 1; i < 10; i++) { // 从第二个元素开始比较,因为已知第一个是初始值
if (scores[i] > max_score) { // 如果当前成绩大于已知的最大成绩
max_score = scores[i]; // 更新最大成绩
max_index = i; // 更新最高分学生序号
}
}
printf("成绩最高的学生是第%d位,成绩为%d。\n", max_index + 1, max_score); // +1是因为数组索引从0开始
return 0;
}
```
在这个程序中,我们首先假设数组的第一个元素就是最低的,然后逐个检查剩余元素,如果发现更大的分数,就更新`max_score`和`max_index`。最后输出结果。
用c语言写一学籍体统,主要功能: 欢迎及菜单页面 通过文本文件读入学生信息 新增学生(学号不可重复) 录入成绩 删除学生 展示所有学生信息 计算最高最低平均成绩 统计ABCD每个分段的人数 按成绩从高到低排序 按学号排序 退出前将所有学生信息回写进文本文档个学籍系统
好的,以下是用C语言实现学籍系统的代码。请注意,由于本示例是基于文本文件读写,因此在使用时需要根据实际情况修改文件路径。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
typedef struct {
char id[20]; // 学号
char name[50]; // 姓名
int score[5]; // 成绩,包括语文、数学、英语、物理、化学
} student;
// 定义全局变量
student stu[100]; // 最多存储100个学生信息
int count = 0; // 学生数量
// 函数声明
void welcome(); // 欢迎页面
void menu(); // 菜单页面
void readFromFile(); // 从文件读入学生信息
void addStudent(); // 新增学生
void inputScore(int index); // 录入成绩
void deleteStudent(); // 删除学生
void showAll(); // 展示所有学生信息
void calculateScore(); // 计算最高最低平均成绩
void countScore(); // 统计ABCD每个分段的人数
void sortScore(); // 按成绩从高到低排序
void sortId(); // 按学号排序
void writeToFile(); // 将所有学生信息回写进文本文档
int getRank(int index); // 获取学生排名
int main() {
readFromFile(); // 从文件读入学生信息
welcome(); // 欢迎页面
menu(); // 菜单页面
writeToFile(); // 将所有学生信息回写进文本文档
return 0;
}
void welcome() {
printf("欢迎使用学籍系统!\n\n");
}
void menu() {
int choice;
printf("请选择要执行的操作:\n");
printf("1. 新增学生\n");
printf("2. 录入成绩\n");
printf("3. 删除学生\n");
printf("4. 展示所有学生信息\n");
printf("5. 计算最高最低平均成绩\n");
printf("6. 统计ABCD每个分段的人数\n");
printf("7. 按成绩从高到低排序\n");
printf("8. 按学号排序\n");
printf("9. 退出程序\n");
scanf("%d", &choice);
switch (choice) {
case 1:
addStudent();
break;
case 2: {
int index;
printf("请输入要录入成绩的学生的序号:\n");
scanf("%d", &index);
inputScore(index);
break;
}
case 3:
deleteStudent();
break;
case 4:
showAll();
break;
case 5:
calculateScore();
break;
case 6:
countScore();
break;
case 7:
sortScore();
break;
case 8:
sortId();
break;
case 9:
printf("感谢使用学籍系统!\n");
return;
default:
printf("输入的选项不正确,请重新输入!\n");
break;
}
menu();
}
void readFromFile() {
FILE *fp = fopen("students.txt", "r");
if (fp == NULL) {
printf("文件读取失败!\n");
return;
}
while (!feof(fp)) {
fscanf(fp, "%s %s %d %d %d %d %d\n", stu[count].id, stu[count].name,
&stu[count].score[0], &stu[count].score[1], &stu[count].score[2],
&stu[count].score[3], &stu[count].score[4]);
count++;
}
fclose(fp);
}
void addStudent() {
printf("请输入学生的学号、姓名:\n");
scanf("%s %s", stu[count].id, stu[count].name);
// 判断学号是否重复
for (int i = 0; i < count; i++) {
if (strcmp(stu[i].id, stu[count].id) == 0) {
printf("学号已存在,请重新输入!\n");
return;
}
}
count++;
printf("新增学生成功!\n");
}
void inputScore(int index) {
if (index < 1 || index > count) {
printf("输入的序号不正确,请重新输入!\n");
return;
}
printf("请输入语文、数学、英语、物理、化学成绩:\n");
scanf("%d %d %d %d %d", &stu[index-1].score[0], &stu[index-1].score[1],
&stu[index-1].score[2], &stu[index-1].score[3], &stu[index-1].score[4]);
printf("成绩录入成功!\n");
}
void deleteStudent() {
char id[20];
printf("请输入要删除的学生的学号:\n");
scanf("%s", id);
for (int i = 0; i < count; i++) {
if (strcmp(stu[i].id, id) == 0) {
// 将该学生信息从数组中删除
for (int j = i; j < count-1; j++) {
stu[j] = stu[j+1];
}
count--;
printf("删除成功!\n");
return;
}
}
printf("未找到该学生!\n");
}
void showAll() {
printf("序号\t学号\t姓名\t语文\t数学\t英语\t物理\t化学\t总分\t排名\n");
for (int i = 0; i < count; i++) {
int sum = 0;
for (int j = 0; j < 5; j++) {
sum += stu[i].score[j];
}
printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n", i+1, stu[i].id, stu[i].name,
stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].score[3], stu[i].score[4],
sum, getRank(i));
}
}
void calculateScore() {
int max[5] = {0}, min[5] = {100}, sum[5] = {0};
for (int i = 0; i < count; i++) {
for (int j = 0; j < 5; j++) {
if (stu[i].score[j] > max[j]) {
max[j] = stu[i].score[j];
}
if (stu[i].score[j] < min[j]) {
min[j] = stu[i].score[j];
}
sum[j] += stu[i].score[j];
}
}
printf("语文:最高分%d,最低分%d,平均分%.2f\n", max[0], min[0], sum[0]*1.0/count);
printf("数学:最高分%d,最低分%d,平均分%.2f\n", max[1], min[1], sum[1]*1.0/count);
printf("英语:最高分%d,最低分%d,平均分%.2f\n", max[2], min[2], sum[2]*1.0/count);
printf("物理:最高分%d,最低分%d,平均分%.2f\n", max[3], min[3], sum[3]*1.0/count);
printf("化学:最高分%d,最低分%d,平均分%.2f\n", max[4], min[4], sum[4]*1.0/count);
}
void countScore() {
int countA = 0, countB = 0, countC = 0, countD = 0;
for (int i = 0; i < count; i++) {
int sum = 0;
for (int j = 0; j < 5; j++) {
sum += stu[i].score[j];
}
double avg = sum * 1.0 / 5;
if (avg >= 90) {
countA++;
} else if (avg >= 80) {
countB++;
} else if (avg >= 70) {
countC++;
} else {
countD++;
}
}
printf("A段(90分及以上):%d人\n", countA);
printf("B段(80-89分):%d人\n", countB);
printf("C段(70-79分):%d人\n", countC);
printf("D段(70分以下):%d人\n", countD);
}
void sortScore() {
// 冒泡排序
for (int i = 0; i < count-1; i++) {
for (int j = 0; j < count-i-1; j++) {
int sum1 = 0, sum2 = 0;
for (int k = 0; k < 5; k++) {
sum1 += stu[j].score[k];
sum2 += stu[j+1].score[k];
}
if (sum1 < sum2) {
student temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
}
}
printf("按成绩从高到低排序成功!\n");
}
void sortId() {
// 冒泡排序
for (int i = 0; i < count-1; i++) {
for (int j = 0; j < count-i-1; j++) {
if (strcmp(stu[j].id, stu[j+1].id) > 0) {
student temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
}
}
printf("按学号排序成功!\n");
}
void writeToFile() {
FILE *fp = fopen("students.txt", "w");
if (fp == NULL) {
printf("文件写入失败!\n");
return;
}
for (int i = 0; i < count; i++) {
fprintf(fp, "%s %s %d %d %d %d %d\n", stu[i].id, stu[i].name,
stu[i].score[0], stu[i].score[1], stu[i].score[2],
stu[i].score[3], stu[i].score[4]);
}
fclose(fp);
}
int getRank(int index) {
int sum = 0;
for (int i = 0; i < 5; i++) {
sum += stu[index].score[i];
}
int rank = 1;
for (int i = 0; i < count; i++) {
if (i == index) {
continue;
}
int temp = 0;
for (int j = 0; j < 5; j++) {
temp += stu[i].score[j];
}
if (temp > sum) {
rank++;
}
}
return rank;
}
```
希望这份代码能够帮助到你。
阅读全文