70,037
社区成员
发帖
与我相关
我的任务
分享#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 2
struct student
{
int num;
char name[32];
char cla[32];
float momen;
float exam;
float total;
};
int information(struct student stu[], int nums)
{
int i,j;
float s1=0;
//float a[100]={0};
for(i=0;i < nums;i++)
{
printf("学号:");
scanf("%d", &stu[i].num);
printf("姓名:");
scanf("%s",stu[i].name);
printf("课程名:");
scanf("%s",stu[i].cla);
if((strcmp(stu[i].cla, "#" )==0))
break;
printf("请输入成绩平时成绩和考试成绩\n");
scanf("%f%f",&stu[i].momen,&stu[i].exam);
printf("平时成绩:%.2f 考试成绩:%.2f\n",stu[i].momen,stu[i].exam);
s1 = s1 + stu[i].momen*0.2+stu[i].exam*0.8;
stu[i].total = s1;
}
return i;
#if 0
//stu[100].total=si;
for(i=0;i<=N;i++)
{
if(stu[i].total==0)
{stu[i].total=s1;break;}
}
#endif
}
void output(struct student stu)
{
printf("学号:%d\n姓名: %s\n",stu.num,stu.name);
}
struct student max(struct student stu[], int num)
{
int i,m=0;
//for(i=0;i<N;i++)
for(i = 1;i<num;i++)
{
if(stu[i].total>stu[m].total)
{
m = i;
}
}
return stu[m];
}
struct student min(struct student stu[], int num)
{
int i,m=0;
//for(i=0;i<N;i++)
for(i = 1;i<num;i++)
{
if(stu[i].total<stu[m].total)
{
m = i;
}
}
return stu[m];
}
int main()
{
//int k;
int num;
//char a[100]={0};
struct student stu[100],*p=stu;
printf("在课程号按'#'号键退出\n");
/*
for(k=1;k<=N;k++)
{
printf("学号:");
scanf("%d",&stu[k-1].num);
printf("姓名:");
scanf("%s",stu[k-1].name);
information(stu);
printf("总评成绩:%.2f\n\n",stu[k-1].total);
}*/
num = information(stu, 100);
printf("num = %d\n", num);
printf("最高分的同学信息\n");
output(max(p, num));
printf("最低分的同学信息\n");
//output(max(p, num));
output(min(p, num));
return 0;
}
参考一下吧
最后输出时,注意没有调用min函数,两次都是调用了max函数。即最高和最低都是调用了max