数据结构day1

avatar
作者
筋斗云
阅读量:1

一、思维导图

二、课后习题

代码

#include<myhead.h> #define MAX_SIZE 100 //定义结构体类型 struct Stu { 	char name[20]; 				//学生名 	char id[10]; 				//学号 	char sex[10];				//性别 	double score; 				//成绩 };  //定义一个学生信息数组 	struct Stu student[MAX_SIZE]; 	int size = 0; 			//数组实际使用个数  //录入学生信息 void Enter_stu() {     //初始化数组 	memset(student,0,sizeof(student));  	printf("请输入学生个数:"); 	scanf("%d",&size); 	getchar();  	//循环输入学生数组信息 	for(int i=0;i<size;i++) 	{ 		printf("请输入第%d个学生的名称:",i+1); 		scanf("%s",student[i].name); 		getchar();  		printf("请输入第%d个学生的学号:",i+1); 		scanf("%s",student[i].id); 		getchar();  		printf("请输入第%d个学生的性别:",i+1); 		scanf("%s",student[i].sex); 		getchar(); 		 		printf("请输入第%d个学生的成绩:",i+1); 		scanf("%lf",&student[i].score);  		printf("\n"); 	} }  //输出学生信息 void Print_stu() { 	printf("**********学生信息如下*********\n"); 	printf("姓名\t学号\t性别\t成绩\n\n"); 	for(int i=0;i<size;i++) 	{ 		printf("%s\t%s\t%s\t%lf\n",\ 				student[i].name,student[i].id,student[i].sex,student[i].score); 	}     	printf("\n"); }  //求最值成绩学生信息 void Best_stu() { 	//求出成绩最高和最低学生信息 	struct Stu stu_maxscore; 			//存放最高成绩学生的信息 	struct Stu stu_minscore; 			//存放最低成绩学生的信息  	double max_score = 0; 		//存放最高成绩学生的成绩 	double min_score = 0; 		//存放最低成绩学生的成绩  	//将第一个学生当做最值 	stu_maxscore = student[0]; 	stu_minscore = student[0]; 	max_score = student[0].score; 	min_score = student[0].score;  	for(int i=0;i<size;i++) 	{ 		//跟任意一个学生的成绩进行比较 		if(student[i].score > max_score) 		{ 			//刷新最高成绩学生信息 			max_score = student[i].score; 			stu_maxscore = student[i]; 		} 		if(student[i].score < min_score) 		{ 			//刷新最低成绩学生信息 			min_score = student[i].score; 			stu_minscore = student[i]; 		}  	}     printf("************成绩最值学生信息************\n"); 	printf("成绩最高学生信息:\n"); 	printf("姓名\t学号\t性别\t成绩\n\n"); 	printf("%s\t%s\t%s\t%lf\n\n",\ 			stu_maxscore.name,stu_maxscore.id,stu_maxscore.sex,stu_maxscore.score);  	printf("成绩最低学生信息:\n"); 	printf("姓名\t学号\t性别\t成绩\n\n"); 	printf("%s\t%s\t%s\t%lf\n\n",\ 			stu_minscore.name,stu_minscore.id,stu_minscore.sex,stu_minscore.score); }  //学生总成绩和平均成绩 void Sum_stu() {     	//输出学生总成绩和平均成绩 	double sum = 0; 		//定义学生总成绩 	double avg = 0; 		//定义学生平均成绩 	for(int i=0;i<size;i++) 	{ 		sum += student[i].score; 	} 	//求平均值 	avg = sum/size;  	printf("*********学生成绩总和以及平均值**********\n"); 	printf("学生成绩总和:%lf\n",sum); 	printf("学生成绩总和均值:%lf\n\n",avg); }  //按学生成绩对学生信息进行排序 void  Sort_score(int flag) {     printf("************对学生成绩进行排序***********\n");           	//降序排序 	if(flag ==0)                //标志位判断升降序排序 	{ 		for(int i=1;i<size;i++) 		{ 			for(int j=0;j<size-i;j++) 			{ 				if(student[j].score < student[j+1].score) 				{ 					struct Stu temp = student[j]; 					student[j] = student[j+1]; 					student[j+1] = temp; 				} 			} 		} 		printf("学生信息按成绩降序排序成功\n\n"); 	}  	//升序排序 	else if(flag ==1) 	{ 		for(int i=1;i<size;i++) 		{ 			for(int j=0;j<size-i;j++) 			{ 				if(student[j].score > student[j+1].score) 				{ 					struct Stu temp = student[j]; 					student[j] = student[j+1]; 					student[j+1] = temp; 				} 			} 		} 		printf("学生信息按成绩升序排序成功\n\n"); 	} }  //查找学生姓名是否存在 Find_stu(char name[20]) {     printf("*********查找学生是否存在**********\n"); 	int i = 0; 	for(i=0;i<size;i++) 	{ 		if(strcmp(name,student[i].name) == 0) 		{ 			//查找成功,输出学生信息 			printf("姓名\t学号\t性别\t成绩\n\n"); 			printf("%s\t%s\t%s\t%lf\n",\ 					student[i].name,student[i].id,student[i].sex,student[i].score); 			break; 		} 	} 	if(i >= size) 	{ 		printf("未找到该学生\n"); 	} }  int main(int argc, const char *argv[]) { 	printf("\t\t************学生信息管理系统************\n"); 	printf("\t\t=======1、        录入           =======\n"); 	printf("\t\t=======2、    查看学生信息       =======\n"); 	printf("\t\t=======3、查看成绩最值学生信息   =======\n"); 	printf("\t\t=======4、学生成绩总和以及平均值 =======\n"); 	printf("\t\t=======5、按成绩对学生升序排序   =======\n");			 	printf("\t\t=======6、查找学生信息是否存在   =======\n");			 	printf("\t\t======= 0、      退出            =======\n");			 	//菜单 	int menu =0;     int flag = 0;                      //定义升降序标志位      char name[20]; 			//定义字符数组接收学生姓名 	do 	{ 		printf("请输入选项>>>"); 		scanf("%d",&menu); 		getchar();  		//多分支选择执行对应功能 		switch(menu) 		{ 		case 1://录入学生信息 				//调用信息录入函数 				Enter_stu(); 				break; 		case 2://查看学生信息 				Print_stu(); 				break; 		case 3://求成绩最高的学生信息 				Best_stu(); 				break; 		case 4://学生总成绩和平均值 				Sum_stu(); 				break; 		case 5://按成绩对学生升序排序 				printf("升序排序请输入1,降序排序请输入0:"); 				scanf("%d",&flag); 				Sort_score(flag); 				break; 		case 6://查找学生信息是否存在 				printf("请输入需要查找的学生姓名:"); 				scanf("%s",name); 				Find_stu(name); 				break; 		case 0://退出 				break; 		default: 				printf("输入错误,请重新输入\n"); 				break; 		}  	} while(menu !=0);  	return 0; } 

效果图

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!