
分文件编译
#ifndef __XS_H__
#define __XS_H__
#define MAX 20
struct Stu
{
int num;
char name[20];
float score;
};
struct Class
{
struct Stu s[MAX];
int len;
}class1;
void tianjia(struct Class * c,struct Stu k);
//添加函数
void input(struct Stu *p,int n);
//输入函数
void my_max(struct Stu *p,int n);
//排序函数
void output(struct Stu *p, int n);
//输出函数
void chaz(struct Stu *p,int n);
//查找函数
#endif
#include <stdio.h>
#include "xs.h"
#include <string.h>
void tianjia(struct Class * c,struct Stu k)
{
if(c->len>=MAX)
{
printf("添加失败\n");
return;
}
c->s[c->len]=k;
c->len++;
printf("添加成功\n");
}
void input(struct Stu *p,int n)
{ if(n>=MAX)
{
printf("人数太多\n");
return ;
}
for(int i =0;i<n;i++)
{
printf("请输入第%d学生的学号: ",i+1);
scanf("%d",&p[i].num);
printf("请输入第%d学生的姓名: ",i+1);
scanf("%s",p[i].name);
printf("请输入第%d学生的成绩: ",i+1);
scanf("%f",&p[i].score);
tianjia(&class1,p[i]);
printf("--------------------------------------\n");
}
}
void my_max(struct Stu *p,int n)
{
struct Stu t;
for(int i=1;i<n;i++)
{
for(int j=0;j<n-i;j++)
{
if(p[j].score>p[j+1].score)
{
t=p[j];
p[j]=p[j+1];
p[j+1]=t;
}
}
}
printf("成绩最高的学生信息\n,学号%d, 姓名%s, 成绩%f\n",p[n-1].num,p[n-1].name,p[n-1].score);
}
void output(struct Stu *p, int n)
{
printf("学号\t姓名\t\t成绩\n");
for(int i=0;i<n;i++)
{
printf("%d\t%s\t\t%f\n",p[i].num,p[i].name,p[i].score);
}
}
void chaz(struct Stu *p,int n)
{
char s1[10]="";
printf("请输入要查找学生的名字:");
scanf("%s",s1);
int a = 0;
for(int i=0;i<n;i++)
{
a = strcmp(p[i].name,s1);
if(a==0)
{
printf("该学生在班级\n");
return;
}
}
printf("查找失败\n");
}
#include <stdio.h>
#include "xs.h"
int main(int argc, const char *argv[])
{
int n;
struct Stu s[MAX];
printf("请输入学生个数:");
scanf("%d",&n);
class1.len = 0;
input(s,n);
my_max(s,n);
chaz(s,n);
output(s,n);
return 0;
}
这是一个使用C语言编写的简单学生信息管理系统。程序包括添加学生、输入学生数据、按成绩排序、查找学生以及输出所有学生信息的功能。用户可以输入学生个数,然后依次录入学号、姓名和成绩。系统会自动保存并处理这些信息。
2267

被折叠的 条评论
为什么被折叠?



