/*功能:学生信息排序、查找及修改日期: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; }}学生信息排序、查找及修改

最后更新于 2022-12-25
部分内容可能已过时,请注意信息时效。
本文采用 CC BY-NC-SA 4.0 许可,转载请注明出处与作者。
支持一下
如果这篇文章对你有帮助,欢迎打赏或分享。
评论