结构体知识小结

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STUDENTstu[40];//声明了一个STUDENT类型的数组,可存放40名学生的数据
STUDENT*pStu;//声明了一个STUDENT类型的指针变量,可指向STUDENT型的变量
结构体变量引用:1、结构体成员运算符“.”;2、结构体指针变量访问其所指向结构体成员运算符“->”(即:两个符号构成:减号和大于号,中间无空格)
{
printf("%-5d %-20s %-8d %-8d %-8d %-.2f\n",(pStu+i)->num, (pStu+i)->name,
(pStu+i)->math, (pStu+i)->english,
(pStu+i)->computer, (pStu+i)->average);
}
例3:按平均成绩由高到低排序
结构体
1.知识点:
结构体类型定义:
例1:
struct singer
{
int no;
int score[6];
float aver;
};
其中结构体类型名为:struct singer
例2:
typedef struct
{
int num;
char name[20];
int math;
inБайду номын сангаас english;
排序交换的是某歌手的所有数据(即结构体变量),而非仅仅交换平均分成员。
c)学生成绩,结构体排序(补充程序源程序,题目要求)
注意问题:
此题结构体类型名和结构体类型定义的成员名程序已经限定。
结构体成员运算符“.”,结构体指针变量访问其所指向结构体成员运算符“->”(即:两个符号构成:减号和大于号,中间无空格)。
参考程序:使用指针变量方式引用结构体变量及其结构体变量成员(参考源程序)
d)结构体与文件结合
二进制文件(文件读写函数fread和fwrite)312、805
文本文件(文件读写函数fscanf和fprintf)314、802、809
例1:从键盘读入N个学生的数据,分别存入对应单元,其中平均分通过计算获得
printf("Please input info of students:No Name Math English Computer\n");
for (i = 0; i < N; i++)
{
printf("%d:", i+1);
for (i = 0; i < N -1; i++)
{
for (j = 0; j < N - 1 - i; j++)
{
/*如果下标为j的学生的平均分小于下标为j+1的学生的平均分,
则交换两个学生的所有数据*/
if (myclass[j].average < myclass[j+1].average)
{
temp = myclass[j];//结构体变量可以整体赋值
myclass[j] = myclass[j+1];
myclass[j+1] = temp;
}
}
}
2.程序:
a)学生成绩,求最高分(补充程序一题三做:源程序1、源程序2、源程序3)
b)歌手成绩,结构体排序(源程序)
注意问题:
结构体三部曲:结构体类型定义;结构体变量定义;结构体变量引用。
int computer;
float average;
} STUDENT;
其中结构体类型名为:STUDENT
结构体变量定义:同int型变量定义,只是类型名不同。
struct singerliu;//声明了一个struct singer类型变量liu,可存一名歌手数据
struct singergeshou[10];//声明了一个struct singer类型数组可存放10名歌手的数据
myClass[i].score2 + myClass[i].score3) / 3.0);
}
例2:按照指定格式输出
printf("\nResult of sort:\n");
printf("Num Name Math English Computer Average\n");
for (i=0; i<N; i++)
scanf("%d%s%f%f%f", &myClass[i].num,myClass[i].name,
&myClass[i].score1, &myClass[i].score2, &myClass[i].score3);
myClass[i].aver = (float)((myClass[i].score1 +
相关文档
最新文档