结构体还掌握不熟悉,还搞不懂,麻烦看看怎么用结构体的方式编程解决呢?
可采纳
#include <stdio.h>
#include <string.h>
#define MAX_NAME_LEN 20
#define MAX_STUDENTS 100
//结构体存放学生姓名 和三门的成绩
typedef struct {
char name[MAX_NAME_LEN + 1];
int lang_grade;
int ds_grade;
int algo_grade;
} Student;
int main() {
//int n;
Student students[MAX_STUDENTS];
// 输入学生信息
//printf("请输入学生人数:");
//scanf("%d", &n);
//printf("输入学生信息:\n");
for (int i = 0; i < 4; i++) {
scanf("%s %d %d %d", students[i].name, &students[i].lang_grade, &students[i].ds_grade, &students[i].algo_grade);
}
// 找出总分最高的学生
int max_score = -1;
char max_name[MAX_NAME_LEN + 1];
for (int i = 0; i < 4; i++) {
int total_score = students[i].lang_grade + students[i].ds_grade + students[i].algo_grade;
if (total_score > max_score) {
max_score = total_score;
strcpy(max_name, students[i].name);
}
}
// 输出总分最高的学生姓名
printf("%s %d\n", max_name,max_score);
return 0;
}
基于百度GPT
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_NAME_LENGTH 20
#define MAX_STUDENTS 100
typedef struct {
char name[MAX_NAME_LENGTH];
int language;
int data_structure;
int algorithm;
int total;
} Student;
int compare_students(const void *a, const void *b) {
Student *student_a = (Student *)a;
Student *student_b = (Student *)b;
if (student_a->total < student_b->total) {
return 1;
} else if (student_a->total > student_b->total) {
return -1;
} else {
return 0;
}
}
int main() {
Student students[MAX_STUDENTS];
int n, i, max_total = 0;
char max_name[MAX_NAME_LENGTH];
printf("输入学生人数:");
scanf("%d", &n);
printf("输入学生信息:\\n");
for (i = 0; i < n; i++) {
printf("%d. ", i+1);
scanf("%s %d %d %d", students[i].name, &students[i].language, &students[i].data_structure, &students[i].algorithm);
students[i].total = students[i].language + students[i].data_structure + students[i].algorithm;
}
qsort(students, n, sizeof(Student), compare_students);
printf("总分第一名的学生姓名:%s %d\\n", students[0].name, students[0].total);
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:位选,选位置。我要选择哪一位数码管亮。
段选,选一段。我要选择哪一段LED亮.
我可以回答这个问题。
结构体是一种自定义类型,能够封装多个数据类型来表示不同的数据结果,能够在一个类型中保存多种数据类型。我们可以通过结构体的方式来编程解决问题。如下:
//定义两个结构体变量,用来分别表示一段 LED struct LED { //存储的是一段8位LED的GPIO端口控制信息 uint8_t GPIO_INFO;
//存储的是该段LED是否点亮标志位
uint8_t LED_FLAG;
};
//定义一个结构体变量,用来存储一个数码管 struct NUMTUBE { //存储这个数码管上的所有段的数据信息,未编码,即ABCDEFGH LED Tube_A; LED Tube_B; LED Tuve_C; LED Tube_D; LED Tube_E; LED Tube_F; LED Tube_G; };
//创建一个NUMTUBE的实例,用来表示一个数码管 struct NUMTURE Numture_1;
Numture_1.Tube_A.GPIO_INFO = 1; Numture_1.Tube_A.LED_FLAG = 0;
Numture_1.Tube_B.GPIO_INFO = 2; Numture_1.Tube_B.LED_FLAG = 1;
Numture_1.Tube_C.GPIO_INFO = 3; Numture_1.Tube_C.LED_FLAG = 1; //以下类比,这里只是解释了如何使用结构体来存储。