利用结构体求解此题
此题乍一看,很简单。但是小编今天干这道题的时候,却踩遍了所有的坑,特写此文以记之。
此题思路如下:首先创建一个结构体,接下来对结构体赋值,求结构体成员分数的平均值,依据平均值对结构体排序,输出结构体。整个过程就是这样,但是小编每一个坑都踩了。
接下来一一记之:
#include <stdio.h>
int main()
{
struct stu
{
long int number;
char *name[80]; //1.此处使用的指针的形式一定记得下面输出的时候加 & 2.且如果这个
//数组的空间太小输出的时候会一直显示烫烫,数组太小没有\0,会引起烫烫
double score;
}team[5],lie[5];
int i = 0,j = 0;
double sum = 0.0;
/* 3.输入的时候记得格式一致,double采用%lf long int 采用%ld 字符串采用%s */
for(i = 0;i < 5;i++ )
{
scanf("%ld %s %lf",&team[i].number,&team[i].name,&team[i].score);
}
for(i = 0; i < 5; i++ )
{
sum += team[i].score;
}
printf("The Average=%-5.1f\n",sum/5.0);
/* 冒泡排序法依据输入的成绩进行排序 */
for(i = 0; i < 4; i++ )
{
for(j = 0; j < 5 - 1 - i ;j++)
{
/* 4.寻找中间变量替换的时候记得格式一致
结构体采用结构体的格式 */
if(team[j].score<team[j+1].score)
{
lie[j] = team[j];
team[j] = team[j+1];
team[j+1] = lie[j];
}
}
}
for(i = 0;i < 5;i++ )
{
/* 5.输出姓名的时候我们采用的指针变量,记得使用 & */
printf("%-9d%-10s%-5.1lf\n",team[i].number,&team[i].name,team[i].score);
}
}
输入相应同学的信息:
201701 zhao 85.4
201702 qian 96.5
201703 sun 65.4
201704 li 86.3
201705 zhou 65.9
效果如下:
整个写代码的过程就是下面这个样子。
翻车日记,谨以此文以记之。