前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学生信息排序、查找及修改

学生信息排序、查找及修改

作者头像
WindCoder
发布2018-09-20 16:06:24
8700
发布2018-09-20 16:06:24
举报
文章被收录于专栏:WindCoderWindCoder
代码语言:javascript
复制
/*
功能:学生信息排序、查找及修改
日期:2013-06-24
*/

#include<stdio.h>
#include<stdlib.h>
#include <string.h>
//结构体
typedef struct student
{
	char name[20];
	int score;
}STU;
//引用函数
void sort(STU *aStu,int n);
STU *find(STU *aStu,int n,char *aName);
int findAndEdit(STU *aStu,int n,char *aName,int aScors);
//主函数
int main(void)
{
	STU Stu[5];
	int i,x,Score;
	char Name[20];
	STU findName;
	//输入信息
    printf("请输入学生信息(5人)n姓名       成绩n");
	for (i = 0;i<5;i++)
	{
		scanf("%s %d",&Stu[i].name,&Stu[i].score);
	}
    sort(Stu,5);
	//查找信息
	printf("输入要查找的人的姓名:");
	scanf("%s",Name);
	findName = *find(Stu,5,Name);
	printf("%s %dn",findName.name,findName.score);
	//查找并修改
	printf("输入要修改的人的姓名及成绩:");
	scanf("%s %d",&Name,&Score);
	x = findAndEdit(Stu,5,Name,Score);
	printf("n");
	if (x==1)
	{
		printf("修改成功!n");
	}
	else
	{
		printf("修改失败!n");
	}
	//修改后的学生成绩
	printf("修改后的学生信息为:n");
	for (i = 0 ;i<5;i++)
	{
		printf("%s   %dn",Stu[i].name,Stu[i].score );
	}

	system("pause");
	return 0;
}

/************************************************************************
函数名:sort
功能:学生信息排序
参数:STU *aStu 数组的头指针
      int n  数组的长度
返回值:空
************************************************************************/
void sort(STU *aStu,int n)
{
	int i,j;
	STU tmp;

	for (i = 0; i < n;i++)
	{
		for (j = i;j<n;j++)
		{
			if (aStu[i].score < aStu[j].score)
			{
				tmp = aStu[i];
				aStu[i] = aStu[j];
				aStu[j] = tmp;
			}
		}
	}
	printf("n学生们的成绩由大到小依次为:n");
	for (i = 0 ;i<n;i++)
	{
		printf("%s   %dn",aStu[i].name,aStu[i].score );
	}
}
/************************************************************************
函数名:*find
功能:按姓名查找信息
参数:STU *aStu 数组的头指针
      int n  数组的长度
      char *aName 要查找的学生姓名
返回值:所查学生信息
************************************************************************/
STU *find(STU *aStu,int n,char *aName)
{
	int i;
	for (i = 0; i < n;i++ )
	{
		if (strcmp(aName,aStu[i].name)==0)
		{
			return aStu+i;
		}
	}
	if (i==n)
	{
		printf("没找到!n");
	}
}
/************************************************************************
函数名: findAndEdit
功能:
参数:STU *aStu 数组的头指针
      int n  数组的长度
      char *aName 要查找的学生姓名
	  int aScors 该学生的成绩
返回值:
************************************************************************/
int findAndEdit(STU *aStu,int n,char *aName,int aScors)
{
	int i;
	for (i = 0; i < n;i++ )
	{
		if (strcmp(aName,aStu[i].name)==0 && aScors == aStu[i].score)
		{
			printf("请输入要修改的姓名及分数:");
            scanf("%s %d",&aStu[i].name,&aStu[i].score);
			return 1;
		}
	}
	if (i==n)
	{
		return 0;
	}
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013-11-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档