C语言程序设计(第7章结构体与共用体)2
7.2结构数组的定义和引用
个别结构类型变量在解决实际问题时作用不大,一般以结构类型数组的形式出现。结构数组的定义形式为:
struct stu /*定义学生结构类型*/
{
char name[20];/*学生姓名*/
char性别;/*性别*/
long num;/*学号*/
浮动分数【例7-1】某组4人,填写下面的登记表,除了姓名和学号外还有三科成绩。程序算表,算出每个人的三科平均分,再算出四个学生的单科平均分,按平均分从高到低输出。1Liping789876。
2Wanglin669086。
3Jiangbo897076。
4杨明9010067。;/*三科考试成绩*/
};
struct stu stud[20];/*定义结构类型数组stud,*/
/ *这个数组有2个0结构类型元素*/
数组元素每个成员的引用形式是:
stud[0]。名称,stud[0]。性,STUD [0]。得分,得分。姓名、螺柱[1]。性、学习[1]。得分[I];
。。。
。。。
螺柱[19]。姓名、螺柱[19]。性、学习[19]。得分[I];
[3]
题目问题很多。采用模块化编程将问题分解如下:
1)结构类型数组的输入。
2)求解每个学生三门科目的平均分。
3)按照学生的平均成绩排序。
4)根据表单要求输出。
5)求解组内学生单科平均分并输出。
6)定义m a i n()函数,调用各个子程序。
第一步,根据具体情况定义结构类型。
struct stu
{
char name[20];/* name */
长数字;/*学号*/
浮动分数[4];/*数组存储英语、数学、物理、平均*/
};
由于该结构类型将为每个子程序提供并共享,因此被定义为外部结构类型,放在程序的前面。
第二步是定义结构类型数组的输入模块。
void input(arr,n) /* input结构类型数组arr */
struct stu arr[];
int n;
{
int i,j;
char temp[30];
for(I = 0;I {
printf(" \ n输入姓名,数字,英语,数学,物理\ n ");/*打印提示信息*/
gets(arr[i]。姓名);/*输入name */
gets(temp);/*输入学号*/
arr [i]。number = atol(temp);
for(j = 0;j < 3;j++)
{
gets(temp);/*输入三科成绩*/
arr [i]。score[j]= atoi(temp);
}
}
}
第三步,求解每个学生的三科平均分。
结构类型数组中第I个元素arr[i]的成员score的前三个元素已知,需要计算第四个平均值。
void aver(arr,n)
struct stu arr[];
int n;
{
int i,j;
for(I = 0;我{
arr[i]。分数[3]= 0;
for(j = 0;j arr[i]。score[3]=arr[i]。分数[3]+排列[i]。score[j];/* sum */
arr [i]。score [3] = arr [i]。分数[3]/3;/*平均分*/
}
}
第四步,按平均分排序,排序算法采用冒泡法。
void order(arr,n)
struct stu arr[];
int n;
{
struct stu temp;
int i,j,x,y;
for(I = 0;I < n-1;i++)
for(j = 0;j < n-1-I;j++)
0条评论