c语言 结构体和共用体 1. 有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个学生数据

1. 有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个学生数据,要求:
1) 使用input函数输入5个学生的数据:学号、姓名、3门课的成绩;
2) 使用average函数求每个学生的平均成绩和所有学生的总平均成绩;
3) 使用max函数找出平均分最高的学生数据;
4) 使用output函数输出
全体学生的数据:学号、姓名、3门课的成绩、平均成绩;
总平均分以及平均分最高的学生的数据:学号、姓名、3门课的成绩、平均分数。

#include<stdio.h>
#define max 5 /*设定要输入成绩的学生个数*/

double zpj; /*总平均值*/
struct student /*结构体*/
{
int num;
char name[10];
int score1;
int score2;
int score3;
double pj;
};
struct student stu[max],temp;

void Input() /*输入函数*/
{ int i;
for(i=0;i<max;i++)
{printf("enter number");

scanf("%d",&stu[i].num);

printf("enter name");

scanf("%s",&stu[i].name);

printf("enter score1");

scanf("%d",&stu[i].score1);

printf("enter score2");

scanf("%d",&stu[i].score2);

printf("enter score3");

scanf("%d",&stu[i].score3);
}
}

average() /*求平均值函数*/

{int i;
for(i=0;i<5;i++)
{stu[i].pj=stu[i].score1+stu[i].score1+stu[i].score3;
zpj+=stu[i].pj;
}
for(i=0;i<5;i++)
stu[i].pj/=3;
zpj/=max;
}

MAX() /*找出最高平均值的学生的函数*/
{int i,j;
temp=stu[0];
for(i=0;i<max-1;i++)
for(j=i+1;j<max;j++)
if(stu[i].pj<stu[j].pj)
temp=stu[j];
}

output() /*输出函数*/

{int i;
for(i=0;i<max;i++)
printf("num=%d\n name=%s\n score1=%d\n score2=%d\n score3=%d\n aver=%f\n",
stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].pj);

printf("总平均分=%f\n\n",zpj);

printf("平均分最高的学生\nnum=%d\n name=%s\n score1=%d\n score2=%d\n score3=%d\n aver=%f\n",
temp.num,temp.name,temp.score1,temp.score2,temp.score3,temp.pj);

}
void main() /*主函数*/
{

Input();
average();
MAX();
output();
}

自己写的 符合你的要求
不足之处还请指教
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-06-17
#include<stdlib.h>
#include<stdio.h>
#define N 3
struct student
{int number;
double score;}a[N]={{20101,96.7},{20102,85.6},{20103,99.5}};
void main()
{
void fun(struct student *b);
struct student *p;
printf("The number and score\n");
for(p=a;p<a+3;p++)
{printf("%d,%lf\n",p->number,p->score);}
fun(a);
}
void fun(struct student *b)
{
FILE *fp;
int j,i;
struct student *p;
struct student t;
printf("The large-low score\n");
for(j=0;j<2;j++)
{ for(i=0;i<2-j;i++)
if(b[i].score<b[i+1].score)
{t=b[i];
b[i]=b[i+1];
b[i+1]=t;}}
for(p=b;p<b+3;p++)
{printf("%d,%lf\n",p->number,p->score);}
if((fp=fopen("filename","w"))==NULL)
{printf("cannot open file\n");
return;
}
for (j=0; j<N; j++)
{
if(fwrite(&a[j], sizeof(struct student),1, fp)!=1)
{ printf("file write error\n");
return;}
fputs("\n",fp);}
fclose(fp);
}
改一改就行,仅作个参考
第2个回答  2009-06-16
个人

...1. 有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输...
define max 5 \/*设定要输入成绩的学生个数*\/ double zpj; \/*总平均值*\/ struct student \/*结构体*\/ { int num;char name[10];int score1;int score2;int score3;double pj;};struct student stu[max],temp;void Input() \/*输入函数*\/ { int i;for(i=0;i<max;i++)...

...输入一个学生的学号、姓名、及3门课的成绩,计算机并输出其平均成绩...
include "stdio.h"void main(){ struct Student{ char id[10];char name[10];int score;} stu = {"001", "Sam", 80};printf("%s\\t%s\\t%d", stu.id, stu.name, stu.score);}

【零基础学C语言】知识总结九:struct 结构体与 union 共用体
结构体是一种数据类型,用于描述包含多种不同类型数据的对象。例如,描述学生信息时,使用学号、姓名、性别等数据,将它们封装到一个“文件夹”中,通过使用关键字 "struct" 声明。在定义和使用结构体之前,必须先声明它。结构体内部包含多个变量或数组,类型可相同也可不同,每个称为成员变量。结构体的...

在C语言里面,共用体和结构体的区别?
首先你说的很对 共同体的确占的内存要比结构体小 结构体占用的内存空间,是其元素,占空间的总和,而共用体是,元素中占用空间最大的元素的空间!所以共用体在空间开销上要小一点!但是既然是两个不同的概念当然是不一样的 要不就没必要定义两个名词了 其实在共用体所用的内存中已经写入了数据!当使用其...

C语言中结构体和共用体
首先应该知道union共用体的数据存储结构,共用体就是所有的类型的数据数据共用同一段内存空间,像上面的z共用体,它所占的内存是16字节,而非17字节,其中对于unsigned int 类数组i[4]占有16个字节,char类型占有1个字节,但是两种类型的数据其实存储都是从同一地址开始的,1~16字节存储数组变量,1字节...

C里的共同体和结构体的区别
1.结构体(structure)与共同体(union)都是由多个不同的数据类型成员组成, 但在任何同一时刻, 共同体(union)中只存放了一个被选中的成员, 而结构体(structure)的所有成员都存在。在结构体(structure)中,各成员都占有自己的内存空间,它们是同时存在的。一个结构体(structure)变量的总长度等于...

C语言的结构体和共同体的区别是什么?
1.结构体(structure)与共同体(union)都是由多个不同的数据类型成员组成,但在任何同一时刻,共同体(union)中只存放了一个被选中的成员,而结构体(structure)的所有成员都存在。在结构体(structure)中,各成员都占有自己的内存空间,它们是同时存在的。一个结构体(structure)变量的总长度等于所有...

4、设计一个函数,当给定一个整数后,能得到该数的补码(应考虑该整数是正...
实验十三 结构体和共用体[目的和要求]1、掌握结构体类型方法以及结构体变量的定义和引用。2、掌握指向结构体变量的指针变量的应用,特别是链表的应用。3、掌握运算符”.”和”->”的应用。4、共用体的概念和应用。[实验内容和步骤]1、编写程序:有4名学生,每个学生的数据包括学号、姓名、成绩,要求找出成绩最高者...

C语言中结构体与共用体的问题谢谢了,大神帮忙啊
更正一下,应该是“相当于第一个结构体内的SCORE相加。。。”,每次都打太快了 希望采纳

C语言 共用体和结构体的问题
冒号表示后面的数字是按bit的,这样能节省内存。至于结构体,其实就是你理解的那样,只不过定义的比较节约。

相似回答