1

我已经编写了程序,扫描输入的学生和有关他们的信息,并从中构建结构。我需要按出生年份和姓氏来安排这些入学的学生。我不知道从哪里开始也许你可以给我一些建议。

#include <stdio.h>
#include <string.h>
#include <conio.h>
struct mon 
{
 char name[15];           /* vārds*/
    char lname[15];          /* uzvārds*/
 int day,month,year;      /* datums*/
 char gender[15];         /* dzimums*/
};
int main(void) 
{
 struct mon mm[5];
 int n;                   /* elementu skaits masīvā*/
 int i, j;
 for (n=0; n<2; n++)
 {
  printf("%d. Enter: name, gender, date, gender >", n+1);
  scanf("%s",mm[n].name);
      if (!strcmp(mm[n].name,"***")) break;
        scanf("%s",mm[n].lname);
  if (!strcmp(mm[n].lname," ,?!")) break;
  scanf("%d/%d/%d",  &mm[n].day, &mm[n].month, &mm[n].year);
        scanf("%s",mm[n].gender);
  if (!strcmp(mm[n].gender,"***")) break;
 }
 printf("-------------------------------------------------------------\n");
 printf("| Student  List |\n");
 printf("|-------------------------------------------------------------|\n");
 printf("|  Name  | Surname |    Date   | Gender |\n");
 printf("|---------|---------|-------------|---------|\n");
 for (i=0; i<n; i++)
 printf("| %7s | %7s | %d-%d-%d  | %7s |\n", mm[i].name,mm[i].lname,mm[i].day, mm[i].month, mm[i].year,mm[i].gender);
 getch();
 return 0;
}
4

1 回答 1

0

最佳选择,阅读qsort()并使用它。

第二种选择:排序

int sorted;
do {
  sorted = 1;
  for (i=1; i<n; i++) {
    if (mm[i-1].year > mm[i].year) {
      struct mon temp;
      temp = mm[i-1];
      mm[i-1] = mm[i];
      mm[i] = temp;
      sorted = 0;
    }
  }
} while (!sorted);

这仅按年份排序,留下姓氏部分供 OP 添加。

于 2013-11-13T23:19:23.007 回答