利用結構體求解此題
此題乍一看,很簡單。但是小編今天干這道題的時候,卻踩遍了所有的坑,特寫此文以記之。
此題思路如下:首先創建一個結構體,接下來對結構體賦值,求結構體成員分數的平均值,依據平均值對結構體排序,輸出結構體。整個過程就是這樣,但是小編每一個坑都踩了。
接下來一一記之:
#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
效果如下:
整個寫代碼的過程就是下面這個樣子。
翻車日記,謹以此文以記之。