编程题

资金往来账目管理中需要记录每笔收支的日期 date、项目简记 outline 和项 目金额 amount(结构定义如下)。按要求完成下列 3 个函数的设计。

typedef struct { long date; char outline[20]; float amount;}ACCOUNT;

(1)void input(ACCOUNT *s,int n)录入 n 笔收支信息到数组 s 中。

(2)void sort(ACCOUNT *s,int n)按照收支日期排序(如果收支日期相同, 按照项目金额高低排序)。

(3)void show(ACCOUNT *s,int n)显示 s 中存放的 n 笔收支信息。

【正确答案】

(1) void input(ACCOUNT *s,int n)
      { int i; for(i=0;i<n;i++)  scanf("%1d%s%1f", &s[i]. date,s[i].outline,&s[i].amount;) }
(2)void sort(ACCOUNT *s,int n)
    {     int i,j;     struct ACCITEM t;
          for(i=0;i<n-1;i++)
             for(j=0;j<n-i-1;j++)
             { if(s[j].date>s[j+1].date||(s[j].date==s[j+1].date&&s[j].amount)
                 { t=s[j]; s[j]=s[j+1]; s[j+1]=t; }
              }
    }
(3)void show(ACCOUNT *s,int n)
    { int i; for(i=0;i<n;i++)  printf("%ld %s %lf\n", s[i].date,s[i].outline,s[i],amount);}

【答案解析】