#include<stdio.h>
//结构体:学生信息 (类型)
struct student
{
char name[100];
char sex;
int score;
};
int FindKey(const struct student e[100],int left,int right,const int key)
{
printf("左%d 右%d %d\n",left,right,key);
int mid;
mid=(left+right)/2;
if(left>right)
return -1;
if(e[mid].score==key)
return mid;
else if (key>e[mid].score)
FindKey(e,mid+1,right,key);
else if (key<e[mid].score)
FindKey(e,left,mid-1,key);
}
void main ()
{
//定义数组: 类型 数组名[长度];
struct student e[44]={{"lm",'m',99},{"tzw",'m',88},{"cs",'m',77},\
{"op",'w',66},{"szd",'m',55}};
//分配空间:
//printf("%d\n",sizeof(e));//长度=44*108
//引用数组的元素:下标法a
int i;
printf("---打印所有学生信息---\n");
for(i=0;i<5;i++)
printf("姓名:%s 性别:%c 成绩:%d\n",e[i].name,e[i].sex,e[i].score);
printf("\n");
printf("---打印大于90分的学生信息---\n");
for(i=0;i<5;i++)
if(e[i].score>90)
printf("姓名:%s 性别:%c 成绩:%d\n",e[i].name,e[i].sex,e[i].score);
printf("\n");
printf("---打印最高分学生信息---\n");
int listen;
listen=0;
for(i=0;i<5;i++)
if(e[listen].score<e[i].score)
listen=i;
printf("姓名:%s 性别:%c 成绩:%d\n",e[listen].name,e[listen].sex,e[listen].score);
printf("\n");
printf("---查找人名字---\n");
for(i=0;i<5;i++)
if(strcmp(e[i].name,"lm")==0)
printf("姓名:%s 性别:%c 成绩:%d\n",e[i].name,e[i].sex,e[i].score);
printf("\n");
printf("---成绩由高到低排序---\n");
int j;
struct student temp;
for(i=1;i<5;i++)
{
j=i;
temp=e[i];
while(j>0 && temp.score>e[j-1].score)
{
e[j]=e[j-1];
j--;
}
if(j!=i)
{
e[j]=temp;
}
}
for(i=0;i<5;i++)
printf("姓名:%s 性别:%c 成绩:%d\n",e[i].name,e[i].sex,e[i].score);
printf("\n");
printf("---高于平均分的学生成绩---\n");
int agv=0,zf=0;
for(i=0;i<5;i++)
zf+=e[i].score;
agv=zf/5;
printf("平均分:%d\n",agv);
for(i=0;i<5;i++)
if(e[i].score>agv)
printf("姓名:%s 性别:%c 成绩:%d\n",e[i].name,e[i].sex,e[i].score);
printf("\n");
printf("---查找某个分数---\n");
int Q;
Q=FindKey(e,0,4,88);
if(Q<0)
printf("没有查到\n");
else
printf("姓名:%s 性别:%c 成绩:%d\n",e[Q].name,e[Q].sex,e[Q].score);
}
结构体(例题详解)
猜你喜欢
转载自blog.csdn.net/cs13797778767/article/details/81121745
今日推荐
周排行