0

私は C 言語のレッスン、特に関数を始めています。私の仕事は、配列の構造を数値でソートすることです。この場合、その値は変数「年齢」です。

適切な引数を取るためにプロトタイプを作成する方法と、そこからどこへ行くべきかがわかりません。いくつかのガイダンスをいただければ幸いです。前もって感謝します。

#include <stdio.h>
#include <stdlib.h>

#define STUDENTS 5          //Maximum number of students to be saved. 
#define LENGTH 20               //Maximum length of names. 

struct person   {                       //Setting up template for 'person'
    char first[LENGTH];  
    char last[LENGTH];
    int age;
}; 

void bubblesort(int, int);                  //Prototyping function for sorting structures. 

int main(void) {

    struct person student[STUDENTS] = {     //Array of person structures. 
        {"Person", "One", 21},
        {"Person", "Two", 18},
        {"Person", "Three",20},
        {"Person", "Four", 17},
        {"Person", "Five", 16}
    };

    int i;      //For loop counter. 
    int n=5;    //For loop variable. N is equal to the # of entries in the struct. 

    printf("Here is an unsorted list of students: \n");
    for( i=0; i<n; i++) {
        printf("%s %s is %d years old. \n", student[i].first,  student[i].last,  student[i].age);
    }

    //Sort students by age. 
    //Print sorted list.

    return 0;
}
4

1 に答える 1

0

フィールド age に基づいて構造データを並べ替えたい場合は、次のコードを使用できます。

struct person temp;

for(i=0; i<STUDENTS; i++)
{
  for(j=i; j<STUDENTS; j++)
  {
     if(stud[i].age < stud[j].age)
     {
         temp = stud[i];
         stud[i] = stud[j];
         stud[j] = temp;
     }
  }
}

これを実現するために、次のように参照によって構造体を渡すことができます。

void bubble(struct person * stud);

関数のプロトタイプはvoid bubble(struct person *);

于 2013-05-16T01:30:16.507 に答える