typedef struct
{
char name[20];
int age;
float score;
}Stu;
#import <Foundation/Foundation.h>
//姓名升序
void sortByName(Stu *p , int count )
{
for (int i = 0 ; i < count -1; i ++) {
for (int j= 0 ; j < count -1-i; j ++) {
if (strcmp((p + j)->name, (p + j + 1)->name) > 0 ) {
Stu temp = *(p + j);
*(p + j) = *(p + j + 1);
*(p + j + 1) = temp;
}
}
}
}
//年龄
void sortByAge( Stu *p , int count )
{
for (int i = 0 ; i < count -1; i ++) {
for (int j= 0 ; j < count -1-i; j ++) {
if ((p + j)->age > (p + j + 1)->age) {
Stu temp = *(p + j);
*(p + j) = *(p + j + 1);
*(p + j + 1) = temp;
}
}
}
}
//成绩
void sortByScore(Stu *p , int count )
{
for (int i = 0 ; i < count -1; i ++) {
for (int j= 0 ; j < count -1-i; j ++) {
if ((p + j)->score > (p + j+ 1)->score ) {
Stu temp = *(p + j);
*(p + j) = *(p + j + 1);
*(p + j + 1) = temp;
}
}
}
}
void outPut(Stu *p , int count )
{
for (int i = 0 ; i < count ; i ++) {
printf("name = %s , age = %d , score = %.2f\n" , (p + i)->name,(p + i)->age , (p + i)->score);
}
}
typedef void (*FUN) (Stu *p , int count);
void student (FUN func ,Stu *p , int count )
{
func(p , count);
}
int main(int argc, const char * argv[])
{
Stu stu[5] = {
{"zhang",20,80},
{"wang", 22,82},
{"li",23,86},
{"zhao",22,83},
{"liu",20,89}
};
Stu *p = NULL;
p = stu;
student(outPut,p,5);
student(sortByName,p, 5);
student(outPut,p,5);
// outPut(p, 5);
// sortByName(p, 5);
// outPut(p, 5);
return 0;
}
转载于:https://blog.51cto.com/qccccc/1532839