创建一个结构体数组,数组名为student,成员包含学号,姓名,成绩(数据类型自己设定)。写一个程序,要求可以循环的从终端输入学生信息,当输入一行‘#’时表示完成输入。完成输入后自动打印出所输入的学生信息,打印结果按学生成绩从低到高打印
时间: 2023-02-19 08:23:43 浏览: 508
exit’时结束循环,并输出学生信息。
答案:
#include<stdio.h>
struct student{
int num;
char name[20];
float score;
};
int main(){
struct student stu[100];
int i=0;
char temp[20];
while(1){
printf("请输入学号:");
scanf("%d", &stu[i].num);
printf("请输入姓名:");
scanf("%s", stu[i].name);
printf("请输入成绩:");
scanf("%f", &stu[i].score);
printf("输入exit退出:");
scanf("%s", temp);
if(strcmp(temp,"exit")==0){
break;
}
i++;
}
for(int j=0; j<=i; j++){
printf("学号:%d\t姓名:%s\t成绩:%.2f\n", stu[j].num, stu[j].name, stu[j].score);
}
return 0;
}
相关问题
用C语言编写以下题目:创建一个结构体数组,数组名为student,成员包含学号,姓名,成绩(数据类型自己设定)。写一个程序,要求可以循环的从终端输入学生信息,当输入一行‘#’ 时表示完成输入。完成输入后自动打印出所输入的学生信息,打印结果按学生成绩从低到高打印。
这是一个使用C语言编写的程序,可以创建一个结构体数组来存储学生信息,并按照学生成绩从低到高的顺序打印出所输入的学生信息。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 100
// 定义学生结构体
struct Student {
int studentID;
char name[50];
float score;
};
int compare(const void *a, const void *b) {
const struct Student *s1 = (const struct Student *)a;
const struct Student *s2 = (const struct Student *)b;
return (s1->score - s2->score);
}
int main() {
struct Student students[MAX_STUDENTS];
int count = 0;
// 循环输入学生信息
while (1) {
printf("请输入学生信息(学号 姓名 成绩):");
char input[100];
fgets(input, sizeof(input), stdin);
// 判断是否输入结束
if (input[0] == '#') {
break;
}
// 解析学生信息
struct Student student;
sscanf(input, "%d %s %f", &student.studentID, student.name, &student.score);
// 将学生信息添加到数组中
students[count] = student;
count++;
}
// 按学生成绩从低到高排序
qsort(students, count, sizeof(struct Student), compare);
// 打印学生信息
for (int i = 0; i < count; i++) {
printf("学号:%d,姓名:%s,成绩:%.2f\n", students[i].studentID, students[i].name, students[i].score);
}
return 0;
}
```
这个程序会循环从终端输入学生信息,当输入一行`#`时表示完成输入。完成输入后,会按学生成绩从低到高的顺序打印出所输入的学生信息。请注意,程序中使用了`qsort`函数来进行排序,需要包含头文件`stdlib.h`。
C语言定义一个包含学生信息(学号,姓名,成绩)的的顺序表
在C语言中,我们可以使用结构体(struct)来定义一个包含学生信息的数据结构,然后使用数组或者链表来创建这种顺序表。下面是一个简单的例子,定义了一个名为`Student`的结构体,并创建了一个顺序表`StudentList`:
```c
// 定义学生信息的结构体
typedef struct {
int student_id; // 学号
char name[50]; // 姓名
float score; // 成绩
} Student;
// 定义顺序表的结构,这里假设每个元素是Student类型的
typedef struct {
Student* data; // 指向学生数据的指针
int size; // 序列中的元素个数
int capacity; // 序列的最大容量
} StudentList;
// 初始化顺序表
void init(StudentList* list) {
list->data = NULL;
list->size = 0;
list->capacity = 10; // 初始容量可以设定为10(实际应用中可以根据需求调整)
}
// 添加学生到列表
void addStudent(StudentList* list, const Student* new_student) {
if (list->size == list->capacity) { // 如果已满,需要扩容
list->capacity *= 2; // 扩容一倍
list->data = realloc(list->data, sizeof(Student*) * list->capacity);
}
list->data[list->size++] = (Student*)malloc(sizeof(Student)); // 动态分配内存
memcpy(list->data[list->size - 1], new_student, sizeof(Student));
}
// 删除学生
void removeStudent(StudentList* list, int index) {
if (index < 0 || index >= list->size) return;
free(list->data[index]);
memmove(list->data + index, list->data + index + 1, sizeof(Student*) * (list->size - index - 1));
list->size--;
}
// 示例相关问题:
1. 如何从顺序表中获取学生的某个信息?
2. 怎么遍历这个顺序表?
3. 这种顺序表支持动态扩容吗?如果支持,何时会触发扩容操作?
阅读全文