定义一个学生结构体,含学号(字符型)、姓名、成绩(整型)。从键盘输入数字n(n<20),并输入n个学生的信息,输出最高分和最低分同学的信息。
时间: 2023-05-31 08:20:20 浏览: 209
### 回答1:
题目:定义一个学生结构体,包含学号(字符型)、姓名、成绩(整型)。从键盘输入数字n(n<20),并输入n个学生的信息,输出最高分和最低分同学的信息。
解答:首先需要定义学生结构体:
struct Student {
char id[10];
char name[20];
int score;
};
然后从键盘输入n,再从键盘输入n个学生的信息,并用一个循环来查找最高分和最低分同学的信息:
int n;
struct Student students[20];
int maxIndex = 0, minIndex = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%s%s%d", students[i].id, students[i].name, &students[i].score);
if (students[i].score > students[maxIndex].score) {
maxIndex = i;
}
if (students[i].score < students[minIndex].score) {
minIndex = i;
}
}
最后输出最高分和最低分同学的信息:
printf("最高分学生信息:\n");
printf("%s %s %d\n", students[maxIndex].id, students[maxIndex].name, students[maxIndex].score);
printf("最低分学生信息:\n");
printf("%s %s %d\n", students[minIndex].id, students[minIndex].name, students[minIndex].score);
### 回答2:
对于这个问题,我们需要定义一个学生结构体(student),其中包含学号(ID)、姓名(name)、成绩(score)三个属性,具体的结构体定义如下:
struct student {
char ID[10]; //学号
char name[20]; //姓名
int score; //成绩
};
然后我们需要从键盘输入数字n,表示需要输入n个学生的信息,可以通过scanf函数实现,具体代码如下:
int n;
printf("请输入学生数量n:");
scanf("%d", &n);
接下来,我们可以定义一个数组students,用于存储n个学生的信息,数组大小为n,具体代码如下:
student students[n];
接着,我们可以通过循环语句从键盘输入n个学生的信息,具体代码如下:
for(int i=0; i<n; i++) {
printf("请输入第%d个学生的信息:\n", i+1);
printf("学号:");
scanf("%s", students[i].ID);
printf("姓名:");
scanf("%s", students[i].name);
printf("成绩:");
scanf("%d", &students[i].score);
}
最后,我们需要输出最高分和最低分的学生信息,可以通过依次遍历数组,找到最高分和最低分的学生,具体代码如下:
student max_student, min_student;
max_student=students[0];
min_student=students[0];
for(int i=1; i<n; i++) {
if(students[i].score > max_student.score) {
max_student=students[i];
}
if(students[i].score < min_student.score) {
min_student=students[i];
}
}
printf("最高分学生信息:\n");
printf("学号:%s\n", max_student.ID);
printf("姓名:%s\n", max_student.name);
printf("成绩:%d\n", max_student.score);
printf("最低分学生信息:\n");
printf("学号:%s\n", min_student.ID);
printf("姓名:%s\n", min_student.name);
printf("成绩:%d\n", min_student.score);
这样就完成了题目所要求的功能,输入n个学生信息,并输出最高分和最低分的学生信息。
### 回答3:
学生结构体是一种数据类型,通常用于记录和存储学生的个人信息。一个典型的学生结构体通常包含学号、姓名和成绩这三个基本的信息。
以此为基础,定义一个学生结构体,包含三个属性:学号、姓名和成绩,其对应的数据类型分别为字符型、字符串型和整型。在程序中,我们需要从键盘输入数字n,然后输入n个学生的信息,并且根据这些信息找出最高分和最低分同学的信息。
首先声明学生结构体变量,然后使用scanf函数从键盘输入学号、姓名和成绩,并把它们存储到结构体变量中。如下所示:
```
struct student{
char number[10];
char name[20];
int score;
};
int main()
{
int n, i, max = 0, min = 100; // 定义变量,其中max和min分别代表最高分和最低分
struct student stu[20]; // 声明学生结构体变量数组
printf("请输入学生个数(不超过20):\n");
scanf("%d", &n);
for(i = 0; i < n; i++) // 循环输入学生信息
{
printf("请输入第%d个学生的学号、姓名和成绩:\n", i + 1);
scanf("%s %s %d", stu[i].number, stu[i].name, &stu[i].score);
// 寻找最高分和最低分
if(stu[i].score > max){
max = stu[i].score;
}
if(stu[i].score < min){
min = stu[i].score;
}
}
// 输出最高分和最低分同学的信息
printf("最高分同学信息:\n");
for(i = 0; i < n; i++){
if(stu[i].score == max){
printf("学号:%s,姓名:%s,成绩:%d\n", stu[i].number, stu[i].name, stu[i].score);
}
}
printf("最低分同学信息:\n");
for(i = 0; i < n; i++){
if(stu[i].score == min){
printf("学号:%s,姓名:%s,成绩:%d\n", stu[i].number, stu[i].name, stu[i].score);
}
}
return 0;
}
```
在上面的代码中,我们使用了一个名为max和min的变量来分别存储最高分和最低分,循环输入学生信息的同时,我们逐一比较每个学生的成绩,更新这两个变量的值。
最后,我们使用两个for循环分别遍历输出最高分和最低分同学的信息。如果某个学生的成绩与最高分或最低分相等,我们就输出该学生的全部信息,包括学号、姓名和成绩。
阅读全文