天天看點

簡單結構體的應用(商品排序C語言)

#include"stdio.h"

#include"stdlib.h"

#include"malloc.h"

#include"string.h"

typedef struct

{

 char dm[4];

 char  mc[10];

 int dj;

 int sl;

 long int je;

}product;

product *sortDat(product *pd,int num);

product *inPut(int num);

int main()

{    int num,i;

     product *pro,*sort;

     printf("請輸入産品數量:\n");

     scanf("%d",&num);

     pro=inPut(num);

     sort=sortDat(pro,num);

     for(i=0;i<num;i++)

     {

         printf("%s--%s--%d--%d--%ld",sort[i].dm,sort[i].mc,sort[i].dj,sort[i].sl,sort[i].je);

         printf("\n");

         }

    system("pause");

    return 0;

}

product *inPut(int num)

{

     int i;  

     product *p;

     p=(product *)malloc (num*sizeof(product));

     if(p==NULL)

    { 

        printf("記憶體配置設定失敗!\n");

        exit(0); 

      }

      for(i=0;i<num;i++)

      {

         printf("輸入%d産品代碼dm:\n",i+1);

         scanf("%s",p[i].dm);

         fflush(stdin);

         printf("請輸入%d産品名稱mc:\n",i+1);

         scanf("%s",p[i].mc);

         fflush(stdin);

         printf("請輸入%d單價dj:\n",i+1);

         scanf("%d",&p[i].dj);

         printf("請輸入%d産品的數量sl;\n",i+1);

         scanf("%d",&p[i].sl);

         printf("%d産品的金額je:\n",i+1);

         p[i].je=p[i].dj*p[i].sl;

         printf("%ld\n",p[i].je);

       }

       return p;          

}

product *sortDat(product *pd,int num)

{   

    product temp;

    int i,j,k;

    for(i=0;i<num;i++)

    { k=i;

        for(j=i+1;j<num;j++) 

      {

            if(strcmp(pd[k].dm,pd[j].dm)>0)

             {

             temp=pd[k];

             pd[k]=pd[j];

             pd[j]=temp;

             }

            else if(strcmp(pd[k].dm,pd[j].dm)==0)

              {

              if(pd[k].je>pd[j].je)

                   {

                    temp=pd[k];

                    pd[k]=pd[j];

                    pd[j]=temp;

                    }

              }

      }

    }

    return pd;

}

繼續閱讀