(篇十)用結構體數組處理學生成績、結構體類型函數求平均值


用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、參考結果:
平均值

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