心得12
今天,又重新复习了结构体部分的知识。
结构体就像是我们大学生活中的各种社团组织,每个组织都有自己的成员和特点,而结构体也是用来组织不同类型的数据,让它们更有条理地存储和使用。比如,我们可以用结构体来表示一个学生的信息,包括姓名、学号、年龄等。通过结构体,我们可以很方便地对学生的信息进行管理和操作。
另外,结构体还可以嵌套使用,就像社团组织中的各种部门一样,可以有不同层次的组织结构。这样我们就可以更加灵活地组织和管理数据。
通过复习结构体相关的知识,我们可以更好地理解和运用它们,就像是在整理自己的社团活动一样,让我们的程序更有条理、更高效!希望大家都能在复习中有所收获,加油!
题目描述
输入n个学生的姓名和三科(编程,数学,英语)的成绩,按照三科的总分从高到低排序输出姓名和总分,如果总分相同,姓名按照字典序排序输出。
输入描述:
共n + 1行,
第一行,一个整数n(1 < n <100),
接下来的n行,每行输入一个字符串,长度小于100,表示姓名,接下来空一个格,输入三个整数,用空格隔开,表示三科成绩。
输出描述:
共n行,按照三科的总分从高到低排序输出姓名和总分,每行输出一个姓名和总分,用空格分隔。
#include <stdio.h>
#include <string.h>
struct student
{
char name[1000];
int f1, f2, f3;
};
int main()
{
int n;
scanf("%d", &n);
struct student kk[n];
for (int i = 0; i < n; i++)
{
scanf("%s%d%d%d", kk[i].name, &kk[i].f1, &kk[i].f2, &kk[i].f3);
}
int sum[10000] = {0};
for (int i = 0; i < n; i++)
{
sum[i] = kk[i].f1 + kk[i].f2 + kk[i].f3;
}
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - i - 1; j++)
{
if (sum[j] < sum[j + 1] || (sum[j] == sum[j + 1] && strcmp(kk[j].name, kk[j + 1].name) > 0))
{
int temp = sum[j];
sum[j] = sum[j + 1];
sum[j + 1] = temp;
char tempName[1000];
strcpy(tempName, kk[j].name);
strcpy(kk[j].name, kk[j + 1].name);
strcpy(kk[j + 1].name, tempName);
}
}
}
for (int i = 0; i < n; i++)
{
printf("%s %d\n", kk[i].name, sum[i]);
}
return 0;
}