(篇十)用结构体数组处理学生成绩、结构体类型函数求平均值


用C语言学好结构化编程逻辑!本篇主要分析结构体数组和结构体类型的函数,对于二级C语言来说,主要是考处理学生多个成绩上和求平均值上。两个实例的参考代码里面都有相应的注释,就不在外面分析了

一、结构体变量

C语言结构体(Struct)从本质上讲是一种自定义的数据类型,只不过这种数据类型比较复杂,是由 int、char、float 等基本类型组成的。你可以认为结构体是一种聚合类型。
在实际开发中,我们可以将一组类型不同的、但是用来描述同一件事物的变量放到结构体中。例如,在校学生有姓名、年龄、身高、成绩等属性,学了结构体后,我们就不需要再定义多个变量了,将它们都放到结构体中即可。
结构体

二、用结构体数组处理学生成绩

1、参考代码:

#include <stdio.h>
#define N 5
int main()
{
	struct student{
		char number[7];
		char name[7];
		int age;
		float score[3];
	};
	int i;
	struct student s[N]= {		{"130101","Lily",20,78,86,66},
				{"130105","Poul",18,85,92,66},
				{"134522","Dev",16,83,83,66},
				{"103247","Jaun",21,75,94,66},
				{"130105","Chen",23,96,72,66}	};
	printf(" 学号    姓名  年龄  数学  语文  英语\n");
	for(i=0; i<N; i++)
	{
		printf("%6s %6s %4d %6.1f %5.1f %5.1f\n",s[i].number, s[i].name, s[i].age, s[i].score[0], s[i].score[1], s[i].score[2]);
	}
	getchar();
}

2、参考结果:
结构体学生成绩

三、结构体类型函数求平均值

1、参考代码:

#include <stdio.h>
#define N 5
struct student{
	char number[7];
	char name[7];
	int age;
	float score[3];
}; 
struct score average(struct student *p, int n);		//申明结构体类型函数 

struct score{
	float sx;		//数学,语文,英语 
	float yw;
	float yy;
};

main()
{
	struct student s[N]= {		{"130101","Lily",20,78,86,66},
								{"130105","Poul",18,85,92,66},
								{"134522","Dev",16,83,83,66},
								{"103247","Jaun",21,75,94,66},
								{"130105","Chen",23,96,72,66}	};
	struct score as;
	as=average(s,5);		//传入结构体数组和学生个数
	printf("数学平均成绩:%4.1f\n",as.sx);
	printf("语文平均成绩:%4.1f\n",as.yw); 
	printf("英语平均成绩:%4.1f\n",as.yy); 
	getchar();
}

struct score average(struct student * p, int n)		//结构体类型函数,接受结构体类型数组和学生个数 ,用于返回结构日类型数组s 
{
	struct score s= {0,0,0};			//结构体类型数组赋初值	
	int i;
	for(i=0; i<n; i++)
	{
		s.sx+= (p+i)->score[0];		//利用线性链表,指针每向右移动 i 个,将其内的score数组内的语数英成绩加到对应的s.sx, s.yw, s.yy上 
		s.yw+= (p+i)->score[1];
		s.yy+= (p+i)->score[2];
	}
	s.sx /= 5;		//将总分除5求得平均值 
	s.yw /= 5;
	s.yy /= 5;
	return s;		//返回结构体数组  struct student s 
}

2、参考结果:
平均值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章