目录
一、有n个同学的信息(包括学号、姓名、成绩),要求按照成绩的高低顺序输出学生信息
三、建立一个简单的链表,他由3个学生的数据的结点组成,要求输出各节点中的数据
一、有n个同学的信息(包括学号、姓名、成绩),要求按照成绩的高低顺序输出学生信息
#include <stdio.h>
#include <string.h>
// 定义学生结构体
typedef struct {
int id;
char name[20];
float score;
} Student;
// 冒泡排序函数,按成绩降序排列
void bubbleSort(Student students[], int n) {
int i,j;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
if (students[j].score < students[j + 1].score) {
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
}
int main() {
int n,i;
printf("请输入学生人数:");
scanf("%d", &n);
Student students[n];
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的学号、姓名和成绩(用空格隔开):", i + 1);
scanf("%d %s %f", &students[i].id, students[i].name, &students[i].score);
}
// 对学生成绩进行排序
bubbleSort(students, n);
// 输出排序后的学生信息
printf("按成绩降序排列的学生信息如下:\n");
for (i = 0; i < n; i++) {
printf("学号:%d, 姓名:%s, 成绩:%.2f\n", students[i].id, students[i].name, students[i].score);
}
return 0;
}
运行结果如下:
二、通过指向结构体变量的指针变量,输出结构体变量中的信息
#include<stdio.h>
struct Student
{
int num;
char name[20];
char sex;
int age;
};
struct Student stu[3] = { {1001,"tom" , 'm',18},{1002,"tony" ,'m',19},{1003,"tia",'f',20} }; //定义结构体数组并初始化
int main()
{
struct Student* p; //定义指向struct Student结构体变量的指针变量
printf(" No.Name sex age\n");
for (p = stu; p < stu + 3; p++)
printf("%5d %-20s %2c %4d\n", p->num, p->name, p->sex, p->age);//输出结果
return 0;
}
三、建立一个简单的链表,他由3个学生的数据的结点组成,要求输出各节点中的数据
代码如下:
#include <stdio.h>
#include <stdlib.h>
//定义链表节点
typedef struct node{
int data;
//指向下一个链表节点
struct node *next;
}stu;
//初始化链表
stu *init_list(int data){
//分配链表节点
stu *node=(stu*)malloc(sizeof(stu)) ;
//初始化链表数值
node->data=data;
node->next=NULL;
//返回初始化完成的结点
return node;
}
//删除链表
void delete_list(stu *node)
{
stu *next=NULL;
//判断当前链表节点是否为空
if(node!=NULL)
{
//如果为空,暂存下一个节点
next=node->next;
//删除当前节点
free(node);
//递归删除下一个节点
delete_list(next);
}
}
void print_list(stu *node)
{
//判断当前节点是否为空
while(node!=NULL)
{
printf("%d\n",node->data);
node=node->next;
}
}
int main() {
stu *s1=init_list(80);
stu *s2=init_list(90);
stu *s3=init_list(88);
s1->next=s2;
s2->next=s3;
print_list(s1);
delete_list(s1);
return 0;
}