구조 실습 (2) 구조 배열

지난번에 구조 배열의 개념을 공부 한 후, 구조 배열에 대한 코드 실제 ​​연산을 수행 할 수 있으며, 배열과 구조의 조합이 코드를보다 기능적이고 능률적으로 만들 수 있다는 것을 느낄 수 있습니다.
이 공유는 코드 표시 및 코드 분석을위한 것입니다.
코드 표시 :
예 :

#include<stdio.h>
struct stu
{
    
    
	int number;
	char name[20];
	int score[5];
}st[10]={
    
    
	{
    
    1001,"zhao",85,64,82,63},
	{
    
    1002,"Qian",92,60,96,67},
	{
    
    1003,"you",99,90,87,90},
	{
    
    1004,"ruan",90,98,87,86},
	{
    
    1005,"zhang",90,87,77,88}
},temp;
int main()
{
    
    
	int i,j;
	int num;
    num=5;

	for(i=0;i<num;i++)
	{
    
    
		st[i].score[4]=0;
		for(j=0;j<4;j++)
		{
    
    
			st[i].score[4]+=st[i].score[j];
		}
	}

	for(i=0;i<num;i++)
	{
    
    
		for(j=0;j<num-i;j++)
		{
    
    
			if(st[j].score[4]<st[j+1].score[4])
			{
    
    
			temp=st[j];
			st[j]=st[j+1];
			st[j+1]=temp;
			}
		}
	}

   printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t成绩4\t总成绩\n");
   for(i=0;i<num;i++)
	  {
    
    
	   printf("%d\t%s\t%d\t%d\t%d\t%d\t%d\n",st[i].number,st[i].name,st[i].score[0],
		   st[i].score[1],st[i].score[2],st[i].score[3],st[i].score[4]);
   }
}

예제는 교과서에서 수정 된 코드를보고 있습니다.

코드 분석 :

st [10] = { {1001, "zhao", 85,64,82,63}, {1002, "Qian", 92,60,96,67}, {1003, "you", 99,90,87 , 90}, {1004, "ruan", 90,98,87,86}, {1005, "zhang", 90,87,77,88} }, temp; 이 부분은 stu, textbook 구조로 정의 된 변수입니다. 사실, 주요 기능이 다시 정의되었지만 한꺼번에 정의하고 싶습니다. temp는 교환을위한 임시 변수입니다. 총 점수의 후속 거품 정렬과 관련이 있습니다. 이 부분은 네 과목의 총점입니다. for (i = 0; i <num; i ++) { st [i] .score [4] = 0; for (j = 0; j <4; j ++) { st [i ] .score [4] + = st [i] .score [j]; } } 루프 본문에서 score [4]는 score [5]가 정의 될 때 총 점수를 위해 예약 된 메모리의 일부입니다 ( 바닥 글 은 4 개의 점수에서 순서는 0, 1, 2, 3) 여기에서 구조 배열 사용의 간단한 코드 효과를 경험할 수 있으며이 부분을 저장하기 위해 배열을 정의 할 필요가 없습니다. 다음은 버블 정렬입니다. for (i = 0; i <num; i ++) { for (j = 0; j <num-i; j ++) { if (st [j] .score [4] <st [j + 1] .score [4])
























{ temp = st [j]; st [j] = st [j + 1]; st [j + 1] = temp; } } } 이것은 1 차원 배열의 이전 버블 정렬보다 이해하기 더 어렵습니다. 주의 깊게 읽으면 여전히 이해할 수 있습니다. 전체 코드는 비교적 쉽습니다.







추천

출처blog.csdn.net/yooppa/article/details/112642379