#include <stdio.h> #include <stdlib.h> struct student//定义一个结构体 { int score;//分数 char *name;//名字 }; int main() { int i; struct student stus[3];//定义一个结构体,3个学生,也可以改成其他数字 struct student maxstu; struct student minstu; for(i=0;i<sizeof(stus)/sizeof(stus[0]);i++)//根据内存空间确定相除的结果是3 { printf("请输入第%d个学生的姓名:\n",i+1);//i+1是以为输出的是第一个学生,而不是第0个 stus[i].name=(char *)malloc(128);//开辟字符串128个内存空间,使其不成为野指针 memset(stus[i].name,'\0',128);//初始化指针空间,成\0 scanf("%s",stus[i].name);//输入学生姓名 printf("请输入%d个学生的分数:\n",i+1);//输出 scanf("%d",&stus[i].score);//输入学生成绩 } for(i=0;i<sizeof(stus)/sizeof(stus[0]);i++) { printf("第%d个学生的名字和分数:\n",i+1); printf("%s:%d\n",stus[i].name,stus[i].score); } maxstu=minstu=stus[0];//将虽大最小值给stus[0] for(i=0;i<sizeof(stus)/sizeof(stus[0]);i++) { if(maxstu.score < stus[i].score)//如果最大值小于输入里面的值 { maxstu=stus[i];//将里面的值给最大值 } if(minstu.score > stus[i].score) { minstu=stus[i]; } } printf("考最高分的是:%s:%d\n",maxstu.name,maxstu.score); printf("考最高分的是:%s:%d\n",minstu.name,minstu.score); system("pause"); return 0; }