有以下程序
#include<stdio.h>
struct STU
{
char name[10];
int num;
int Score;
};
int main ( )
{
struct STU s[5] = { { "LiLi", 201123, 701 } , { "QianYing", 201150, 595 } ,
{ "wangYin", 20043, 680 } , { "WangWei", 201104, 620 } ,
{ "GaoXiang", 201119, 611 }
}, *p[5], *t;
int i, j;
for ( i = 0; i<5; i++ ) p[i] = &s[i];
for ( i = 0; i<4; i++ )
for ( j = i+1; j<5; j++ )
if ( p[i]->Score>p[j]->Score )
{
t = p[i];
p[i] = p[j];
p[j] = t;
}
printf ( "%d %d\n", s[1].Score, p[1]->Score ) ;
return 0;
}
if()语句括号内条件满足就执行{}里的内容
比如
#include <stdio.h>
int main(void){
int a = 1;
if(a == 1){
printf("a=1");
}
return 0;
}
程序运行结果:a=1
你这个是通过for循环和if比较STU结构中的score大小
见注释,供参考:
#include<stdio.h>
struct STU
{
char name[10];
int num;
int Score;
};
int main ( )
{
struct STU s[5] = {{ "LiLi", 201123, 701 } , { "QianYing", 201150, 595 } ,
{ "wangYin", 20043, 680 } , { "WangWei", 201104, 620 },
{ "GaoXiang", 201119, 611 }}, *p[5], *t;
int i, j;
for ( i = 0; i<5; i++ ) p[i] = &s[i];//指针数组 p[i] 指向数组 s[i]的一条记录
for ( i = 0; i<4; i++ )
for ( j = i+1; j<5; j++ )
if ( p[i]->Score>p[j]->Score )//将指针数组指向的记录按成绩升序排序
{
t = p[i]; //交换指针数组的指针
p[i] = p[j];
p[j] = t;
}
printf ( "%d %d\n", s[1].Score, p[1]->Score ) ;//经过对指针数组的操作,p[1]不再指向了 s[1]
return 0;
}