qsl 发表于 2017-12-13 22:40:53

小白求助下 代码比较不短额

#include<stdio.h>
#include<stdlib.h>
struct Student//製作一個學生結構體
{
        char name;
        float w,h;
       
};
int cmpw(const void*p1,const void*p2)//比較體重
{
const Student*pf1=(const Student*)p1;
const Student*pf2=(const Student*)p2;
return (int)(pf1-> w - pf2->h);
}

int cmph(const void*p1,const void*p2)//比較身高
{
const Student*pf1= (const Student*) p1;
const Student*pf2= (const Student*) p2;
return (int)(pf1->h - pf2->h);
}
void inputStudent(Student* px)
{
        scanf("%s %f %f",px->name,px->w,px->h);//學生資料輸入函數
}
void printfstudent(const struct Student* px)
{
        printf("name:%s,w:%f\n,h:%f\n",px->name,px->w,px->h);//學生資料打印函數
}

int main()
{
        void printfstudent(const struct Student* px);
        void inputStudent( Student* px);
        int cmpw(const void* p1 ,const void* p2);
        int cmph(const void* p1 ,const void* p2);
        size_t n=0;
        int i=0;
        printf("n=");
        scanf("%u",&n);//動態的
        Student *p=(Student*) malloc(sizeof(Student)*n);//預配置空間
        for(i=0;i<n;++i)
        {
                inputStudent(p+i);
        }
        qsort(p,n,sizeof(Student),cmpw);
        for(i=0;i<n;++i)
        {
                printfstudent(p+i);
        }
        printf("\n");//稍微美觀下
        qsort(p,n,sizeof(Student),cmph);
        for(i=0;i<n;++i)
        {
                printfstudent(p+i);
        }

       
}

qsl 发表于 2017-12-13 23:16:09

蠢了蠢了 忘记加输入符号了 此贴终结
页: [1]
查看完整版本: 小白求助下 代码比较不短额