一个C语言的题目!关于结构体的!

编写一个程序,输入N个学生的学号,姓名,3门课程的成绩,求出总分最高的学生并输出该学生的所有信息,

第一个程序:
/*(1)选项菜单集成各功能函数模块
(2)录入学生成绩(姓名、学号、语文、数学成绩,总分自动计算)
(3)按总分排名次
(4)按姓名查找某学生成绩
(5)统计各课程的平均分、及格率、最高分、最低分
(6)打印成绩表 */

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 175
typedef struct mark//定义成绩结构体
{
double yuwen;
double shuxue;

};
typedef struct //定义学生信息结构体
{
long number;
char name[20];
double sum;
double aver;
struct mark achie;
}student;
student stu[N];//定义结构体数组
double ymin,ymax,smax,smin,yper,sper,yaver=0,saver=0;//定义全局变量
int input()//学生信息输入函数
{
int i,n;
printf("请输入你要输入的学生数:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("请输入第%d个学生的信息(包括学号、姓名、语文、数学的成绩)\n",i);
scanf(
"%ld%s%lf%lf",
&stu[i].number,
stu[i].name,
&stu[i].achie.yuwen,
&stu[i].achie.shuxue
);
}
return(n);
}
void skim(int n)//学生信息浏览函数
{
int i;
printf("列出的学生信息依次为学号、姓名、语文、数学的成绩、总分、平均分\n");
for(i=1;i<=n;i++)
{
stu[i].sum=stu[i].achie.yuwen+stu[i].achie.shuxue;
stu[i].aver=stu[i].sum/2.0;
printf("第%d个学生的信息为:\n",i);
printf(
"%d\t%s\t%lf\t%lf\t",
stu[i].number,
stu[i].name,
stu[i].achie.yuwen,
stu[i].achie.shuxue
);
printf("%lf\t%lf\n",stu[i].sum,stu[i].aver);
}
}
void search(int n,char m[])//相关学生信息查找函数
{
int i;
for(i=1;i<=n;i++)
if(strcmp(stu[i].name,m)==0)
break;
if(i>n)
printf("系统查找不到相应学生的信息,请确认输入后重新输入\n");
else
{
stu[i].sum=stu[i].achie.yuwen+stu[i].achie.shuxue;
stu[i].aver=stu[i].sum/2.0;
printf("你要查询的学生的信息是:");
printf("%d\t%s\t%lf\t%lf\t",stu[i].number,stu[i].name,stu[i].achie.yuwen,stu[i].achie.shuxue);
printf("%lf\t%lf\n",stu[i].sum,stu[i].aver);
}
}
void sort(int n)//学生信息排序函数
{
int i,j;
student temp;
for(i=1;i<=n;i++)
{
stu[i].sum=stu[i].achie.yuwen+stu[i].achie.shuxue;
stu[i].aver=stu[i].sum/2.0;
}
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
if(stu[i].sum>stu[j].sum)
{
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
printf("按学生的总分升序排序后的结果是:");
for(i=1;i<=n;i++)
{
printf("%d\t%s\t%lf\t%lf\t",stu[i].number,stu[i].name,stu[i].achie.yuwen,stu[i].achie.shuxue);
printf("%lf\t%lf\n",stu[i].sum,stu[i].aver);
}
}
void stati(int n)//学生相关信息的统计函数
{
int i,a=0,b=0;
ymin=stu[1].achie.yuwen;smin=stu[1].achie.shuxue;
ymax=stu[1].achie.yuwen;smax=stu[1].achie.shuxue;
for(i=1;i<=n;i++)
{

if(stu[i].achie.yuwen<ymin)
ymin=stu[i].achie.yuwen;
if(stu[i].achie.yuwen>ymax)
ymax=stu[i].achie.yuwen;
if(stu[i].achie.shuxue<smin)
smin=stu[i].achie.shuxue;
if(stu[i].achie.shuxue>smax)
ymin=stu[i].achie.shuxue;
if(stu[i].achie.yuwen>=60) a++;
if(stu[i].achie.shuxue>=60) b++;
saver+=stu[i].achie.shuxue/2.0;
yaver+=stu[i].achie.yuwen/2.0;
}
yper=(double)a/n;sper=(double)b/n;
printf("语文的平均分、及格率、最高分、最低分分别为:%lf\t%lf\t%lf\t%lf\n",yaver,yper,ymax,ymin);
printf("数学的平均分、及格率、最高分、最低分分别为:%lf\t%lf\t%lf\t%lf\n",saver,sper,smax,smin);

}
void mixed(int m,int n)//实现相应功能选择的函数
{
char k[N];
switch(m)
{
case 1:skim(n);
break;
case 2:stati(n);
break;
case 3:printf("请输入你要查询的学生的姓名:");
scanf("%s",k);
search(n,k);
break;
case 4:sort(n);
break;
case 5:exit(0);
}
}
main()//主函数,打印菜单……
{
int n,m;
printf("\n\t为使系统正常工作请先按提示输入学生信息\n\n");
n=input();
printf("%d",n);
do
{
printf("请选择你要本系统实现的功能\n");
printf("1:学生信息浏览功能\n");
printf("2:统计各课程的平均分、及格率、最高分、最低分\n");
printf("3:单用户信息查询功能\n");
printf("4:排序功能(按学生总分绩进行排序)\n");
printf("5:安全退出\n");
printf("\t\t\t\t\t\t请输入你要实现的功能选项:");
scanf("%d",&m);
if(m<0||m>4)
break;
else
mixed(m,n);
}while(1);
}

第二个程序:
/*C语言设计 考试管理系统
设计内容:
1、每一条记录包括一个学生的学号、姓名、主要课程的成绩。
2、单用户信息查询功能:。查询特定学生的记录,求其总分,平均分
3、学生信息浏览功能:显示所有学生的成绩记录,总分、平均分。
4、不及格记录查询功能:查询有不及格课程的学生信息。
5、排序功能:按学生平均成绩进行排序。或以某1单科成绩排序。
6、用户信息修改功能。
7、将学生记录存在结构体(student)中。
8、应提供一个界面来条用各个功能,条用界面和各个功能的操作界面应尽可能的清晰美观。
设计要求:
1、用C语言实现系统;
2、利用结构体实现学生成绩的数据结构设计。
3、系统具体查询,排序等基本功能;
4、系统的各个功能模块要求用函数的形式实现;
5、完成设计任务并写课程设计报告。
6、将学生成绩信息存在文件中。*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 175
typedef struct mark
{
double yuwen;
double shuxue;
double english;
double c ;
};
typedef struct
{
long number;
char name[20];
double sum;
double aver;
struct mark achie;
}student;
student stu[N];
int input()
{
int i,n;
printf("请输入你要输入的学生数:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("请输入第%d个学生的信息(包括学号、姓名、语文、数学、外语、C语言的成绩)\n",i);
scanf(
"%ld%s%lf%lf%lf%lf",
&stu[i].number,
stu[i].name,
&stu[i].achie.yuwen,
&stu[i].achie.shuxue,
&stu[i].achie.english,
&stu[i].achie.c
);
}
return(n);
}
void skim(int n)
{
int i;
printf("列出的学生信息依次为学号、姓名、语文、数学、外语、C语言的成绩、总分、平均分\n");
for(i=1;i<=n;i++)
{
stu[i].sum=stu[i].achie.yuwen+stu[i].achie.shuxue+stu[i].achie.english+stu[i].achie.c;
stu[i].aver=stu[i].sum/4.0;
printf("第%d个学生的信息为:\n",i);
printf(
"%d\t%s\t%lf\t%lf\t",
stu[i].number,
stu[i].name,
stu[i].achie.yuwen,
stu[i].achie.shuxue
);
printf(
"%lf\t%lf\t%lf\t%lf\n",
stu[i].achie.english,
stu[i].achie.c,
stu[i].sum,
stu[i].aver
);
}
}
void search1(int n,long m)
{
int i;
for(i=1;i<=n;i++)
if(stu[i].number==m)
break;
if(i>n)
printf("系统查找不到相应学生的信息,请确认输入后重新输入\n");
else
{
stu[i].sum=stu[i].achie.yuwen+stu[i].achie.shuxue+stu[i].achie.english+stu[i].achie.c;
stu[i].aver=stu[i].sum/4.0;
printf("你要查询的学生的信息是:");
printf("%d\t%s\t%lf\t%lf\t",stu[i].number,stu[i].name,stu[i].achie.yuwen,stu[i].achie.shuxue);
printf(
"%lf\t%lf\t%lf\t%lf\n",
stu[i].achie.english,
stu[i].achie.c,
stu[i].sum,
stu[i].aver
);
}
}
void search2(int n,char a[])
{
int i;
for(i=1;i<=n;i++)
if((strcmp(stu[i].name,a))==0)
break;
if(i>n)
printf("系统查找不到相应学生的信息,请确认输入后重新输入\n");
else
{
stu[i].sum=stu[i].achie.yuwen+stu[i].achie.shuxue+stu[i].achie.english+stu[i].achie.c;
stu[i].aver=stu[i].sum/4.0;
printf("你要查询的学生的信息是:");
printf("%d\t%s\t%lf\t%lf\t",stu[i].number,stu[i].name,stu[i].achie.yuwen,stu[i].achie.shuxue);
printf(
"%lf\t%lf\t%lf\t%lf\n",
stu[i].achie.english,
stu[i].achie.c,
stu[i].sum,
stu[i].aver
);
}
}
void sort(int n)
{
int i,j;
student temp;
for(i=1;i<=n;i++)
{
stu[i].sum=stu[i].achie.yuwen+stu[i].achie.shuxue+stu[i].achie.english+stu[i].achie.c;
stu[i].aver=stu[i].sum/4.0;
}
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
if(stu[i].aver>stu[j].aver)
{
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
printf("按学生的平均分升序排序后的结果是:");
for(i=1;i<=n;i++)
{
printf("%d\t%s\t%lf\t%lf\t",stu[i].number,stu[i].name,stu[i].achie.yuwen,stu[i].achie.shuxue);
printf("%lf\t%lf\t%lf\t%lf\n",stu[i].achie.english,stu[i].achie.c,stu[i].sum,stu[i].aver);
}
}
void spesearch(int n)
{
int i;
printf("有课程成绩不及格的学生的信息为:\n");
for(i=1;i<=n;i++)
{
if(stu[i].achie.yuwen<60||stu[i].achie.shuxue<60||stu[i].achie.english<60||stu[i].achie.c<60)
{
printf("%d\t%s\t%lf\t%lf\t",stu[i].number,stu[i].name,stu[i].achie.yuwen,stu[i].achie.shuxue);
printf("%lf\t%lf\t%lf\t%lf\n",stu[i].achie.english,stu[i].achie.c,stu[i].sum,stu[i].aver);
}
}
}
void choose1(int n,int m)
{
int i;
char a[N];
if(m==1)
{
printf("请输入你要查询学生的学号:");
scanf("%d",&i);
search1(n,i);
}
if(m==2)
{
printf("请输入你要查询学生的姓名:");
scanf("%s",a);
search2(n,a);
}
if(m<1||m>2)
printf("输入错误,请确定后重新输入!!!");
}
void alter1(int n,int m)
{
int i;
for(i=1;i<=n;i++)
if(stu[i].number==m)
break;
if(i>n)
printf("系统查找不到相应学生的信息,请确认输入后重新输入\n");
else
{
printf("请输入你修改后的信息:");
scanf(
"%ld%s%lf%lf%lf%lf",
&stu[i].number,
stu[i].name,
&stu[i].achie.yuwen,
&stu[i].achie.shuxue,
&stu[i].achie.english,
&stu[i].achie.c
);
}
printf("修改成功,请继续其它操作");
}
void alter2(int n,int m)
{
int i;
char a[N];
for(i=1;i<=n;i++)
if((strcmp(stu[i].name,a))==0)
break;
if(i>n)
printf("系统查找不到相应学生的信息,请确认输入后重新输入\n");
else
{
printf("请输入你修改后的信息:");
scanf(
"%ld%s%lf%lf%lf%lf",
&stu[i].number,
stu[i].name,
&stu[i].achie.yuwen,
&stu[i].achie.shuxue,
&stu[i].achie.english,
&stu[i].achie.c
);
}
printf("修改成功,请继续其它操作");
}
void choose2(int n,int m)
{
int i;
char a[N];
if(m==1)
{
printf("请输入你要修改学生的学号:");
scanf("%d",&i);
alter1(n,i);
}
if(m==2)
{
printf("请输入你要修改学生的姓名:");
scanf("%s",a);
alter2(n,a);
}
if(m<1||m>2)
printf("输入错误,请确定后重新输入!!!");
}
void mixed(int m,int n)
{
int k,l;
char a[N],b[N];
switch(m)
{
case 1:skim(n);
break;
case 2:spesearch(n);
break;
case 3:printf("请选择你是根据什么来查询学生信息的:");
printf("1:学号 2:姓名 你的选择是:");
scanf("%d",&k);
choose1(n,k);
break;
case 4:printf("请选择你是根据什么来修改学生信息的:");
printf("1:学号 2:姓名 你的选择是:");
scanf("%d",&l);
choose2(n,l);
break;
case 5:sort(n);
break;
case 6:exit(0);
}
}
main()
{
int n,m;
printf("\n\t为使系统正常工作请先按提示输入学生信息\n\n");
n=input();
printf("%d",n);
do
{
printf("请选择你要本系统实现的功能\n");
printf("1:学生信息浏览功能\n");
printf("2:不及格记录查询功能\n");
printf("3:单用户信息查询功能\n");
printf("4:单用户信息修改功能\n");
printf("5:排序功能(按学生平均成绩进行排序)\n");
printf("6:安全退出\n");
printf("\t\t\t\t\t\t请输入你要实现的功能选项:");
scanf("%d",&m);
if(m<0||m>5)
break;
else
mixed(m,n);
}while(1);
}

第三个程序:
小学生考试模拟系统
#include <stdio.h>
#include <string.h>
int x,y,jg[100],i,z,zq,right=0;
void main()
{
int cs=1;
char str[100];
char *s=".txt";
xsjm();
printf("请输入你的名字(只能是拼音):");
scanf("%s",&str);
while(cs<=10){
dtxs();
printf("十道题第%d道\n",cs);
cs++;
xrwj(str,jg); /**写入文件**/
}
printf("小朋友,你一共答对%d道题目,总分%d!加油!",right,right*10);
printf("详细信息如下:\n");
printf("===========================================================\n");
xxxx(str);
}
/**
显示界面
**/
int xsjm()
{
printf("小学生的数学学习电子辅导员\n");
return 0;
}
/**
答题显示
**/
int dtxs(){
printf("请选择计算类型1-加法运算 2-减法运算 3-乘法运算 4-除法运算\n");
if(scanf("%d",&i))
{

if(i==1)
{
sjhs(100);
zq=jiafhs(x,y);
scanf("%d",&z);
jg[0]=x;jg[1]=y;jg[2]=i;jg[3]=z;jg[4]=zq;
}
if(i==2)
{
sjhs(100);
zq=jianfhs(x,y);
scanf("%d",&z);
jg[0]=x;jg[1]=y;jg[2]=i;jg[3]=z;jg[4]=zq;
}
if(i==3)
{
sjhs(10);
zq=chenfhs(x,y);
scanf("%d",&z);
jg[0]=x;jg[1]=y;jg[2]=i;jg[3]=z;jg[4]=zq;
}
if(i==4)
{
sjhs(10);
zq=chufhs(x,y);
scanf("%d",&z);
jg[0]=x;jg[1]=y;jg[2]=i;jg[3]=z;jg[4]=zq;
}
if(i<1||i>4)
printf("小朋友你输入的数字不对!请输入1到4之间的数字!\t");
}
else
printf("小朋友你输入的不是数字,请输入1到4之间的数字!\t");
return 0;
}
/**
随机函数
***/
int sjhs(int r)
{
srand((unsigned)time(NULL));
x=rand()%r+1;
y=rand()%r+1;
while(x<=y)
y=rand()%r+1;
return x;
}
int jiafhs(int x,int y)
{
int z;
z=x+y;
printf("%d+%d=",x,y);
return z;
}
int jianfhs(int x,int y)
{
int z;
z=x-y;
printf("%d-%d=",x,y);
return z;
}
int chenfhs(int x,int y)
{
int z;
z=x*y;
printf("%d*%d=",x,y);
return z;
}
int chufhs(int x,int y)
{
int z;
z=x*y;
printf("%d/%d=",z,x);
return y;
}
int xrwj(char *fname,int jg[])
{
FILE *fp;
char hf[2];
char pg[5];
if(jg[3]!=jg[4])
strcpy(pg,"错误");
else{
strcpy(pg,"正确");
right++;
}
if(jg[2]==1){
hf[0]='+';
hf[1]='\0';
}
if(jg[2]==2){
hf[0]='-';
hf[1]='\0';
}
if(jg[2]==3){
hf[0]='*';
hf[1]='\0';
}
if(jg[2]==4){
hf[0]='\\';
hf[1]='\0';
}
if( (fp=fopen(fname,"at+"))==NULL){
fp=fopen(fname,"at+");
}
fp=fopen(fname,"at+");
fprintf(fp,"%d%s%d=%d 标准答案=%d 回答%s\n",jg[0],hf,jg[1],jg[3],jg[4],pg);
fclose(fp);
return 0;
}
/**
详细信息
**/
int xxxx(char *str)
{
char ch;
FILE *fpp;
fpp=fopen(str,"rt");
ch=fgetc(fpp);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fpp);
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-06-18
#include <stdio.h>
typedef struct
{
char sid[10];
char name[10];
int class1;
int class2;
int class3;
} student;

int main(int argc, char *argv[])
{
int n;
printf("输入学生数\n");
scanf("%d", &n);

student stu;
int i = 1;
student maxStu;
int maxScore = 0;

while(i<=n)
{
printf("输入第%d个学生学号:", i);
scanf("%s",stu.sid);

printf("输入第%d个学生姓名:", i);
scanf("%s",stu.name);

int inScore;
printf("输入第%d个学生第一门课成绩:", i);
scanf("%d", &stu.class1);

printf("输入第%d个学生第二门课成绩:", i);
scanf("%d", &stu.class2);

printf("输入第%d个学生第三门课成绩:", i);
scanf("%d", &stu.class3);

int score = stu.class1 + stu.class2 + stu.class3;
if (score > maxScore)
{
maxScore = score;
maxStu = stu;
}
i++;
}

printf("总成绩最高学生是:%s .课程一:%d, 课程二:%d, 课程三: %d, 总成绩:%d\n",
maxStu.name, maxStu.class1, maxStu.class2, maxStu.class3, maxScore);

system("pause");
return 0;
}本回答被提问者和网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网