关于定义结构体数组

设某组有4个人,填写如下的登记表,除姓名、学号外,还有三科成绩,编程实现对表格的计算,求解出每个人的三科平均成绩,求出四个学生的单科平均,并按平均成绩由高分到低分输出。#... 设某组有4 个人,填写如下的登记表,除姓名、学号外,还有三科成绩,编程实
现对表格的计算,求解出每个人的三科平均成绩,求出四个学生的单科平均,并按平均成绩
由高分到低分输出。
#include <stdlib.h>
#include <stdio.h>
struct stu
{
char name[20];
long number;
float score[4];
} ;
m a i n ( )
{
void input(); / *函数声明* /
void aver();
void order();
void output();
void out_row();
struct stu stud[4]; / * 定义结构体数组* /
float row[3];
i n p u t ( s t u d , 4 ) ; / *依此调用自定义函数* /
a v e r ( s t u d , 4 ) ;
o r d e r ( s t u d , 4 ) ;
o u t p u t ( s t u d , 4 ) ;
o u t _ r o w ( s t u d , 4 ) ;
}
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
void input(arr,n)
struct stu arr[];
int n;
{ int i,j;
char temp[30];
for (i=0;i<n;i++)
{
printf("\nInput Name,Number,English,Mathema,Physic\n");
g e t s ( a r r [ i ] . n a m e ) ;
g e t s ( t e m p ) ;
a r r [ i ] . n u m b e r = a t o l ( t e m p ) ;
f o r ( j = 0 ; j < 3 ; j + + )
{
g e t s ( t e m p ) ;
a r r [ i ] . s c o r e [ j ] = a t o i ( t e m p ) ;
} ;
}
}
/ * * * * * * * * * * * * * * * * * * * * * * * /
void aver(arr,n)
struct stu arr[];
int n;
{
int i,j;
f o r ( i = 0 ; i < n ; i + + )
{
a r r [ i ] . s c o r e [ 3 ] = 0 ;
f o r ( j = 0 ; j < 3 ; j + + )
a r r [ i ] . s c o r e [ 3 ] = a r r [ i ] . s c o r e [ 3 ] + a r r [ i ] . s c o r e [ j ] ;
arr[i].score[3]=arr[i].score[3] /3;
}
}
/ * * * * * * * * * * * * * * * * * * * * * * * /
void order(arr,n)
struct stu arr[];
int n;
{ struct stu temp;
int i,j,x,y;
f o r ( i = 0 ; i < n - 1 ; i + + )
f o r ( j = 0 ; j < n - 1 - i ; j + + )
if (arr[j].score[3]>arr[j+1].score[3])
{ temp=arr[j];
a r r [ j ] = a r r [ j + 1 ] ;
a r r [ j + 1 ] = t e m p ;
}
}



请问以下的 / *依此调用自定义函数* /
是怎么定义的,怎么用的,在程序里都看不出怎么用的。谢谢

struct stu stud[4]; / * 定义结构体数组* /
float row[3];
i n p u t ( s t u d , 4 ) ; / *依此调用自定义函数* /
a v e r ( s t u d , 4 ) ;
o r d e r ( s t u d , 4 ) ;
o u t p u t ( s t u d , 4 ) ;
o u t _ r o w ( s t u d , 4 ) ;
}
展开
 我来答
xndcn
2008-01-23 · TA获得超过826个赞
知道小有建树答主
回答量:287
采纳率:0%
帮助的人:431万
展开全部
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
void input(arr,n) /*定义了input(arr,n)函数*/
struct stu arr[];
int n;
{ int i,j;
char temp[30];
for (i=0;i<n;i++)
{
printf("\nInput Name,Number,English,Mathema,Physic\n");
g e t s ( a r r [ i ] . n a m e ) ;
g e t s ( t e m p ) ;
a r r [ i ] . n u m b e r = a t o l ( t e m p ) ;
f o r ( j = 0 ; j < 3 ; j + + )
{
g e t s ( t e m p ) ;
a r r [ i ] . s c o r e [ j ] = a t o i ( t e m p ) ;
} ;
}
}
/ * * * * * * * * * * * * * * * * * * * * * * * /
void aver(arr,n) /*定义了aver(arr,n)函数*/
struct stu arr[];
int n;
{
int i,j;
f o r ( i = 0 ; i < n ; i + + )
{
a r r [ i ] . s c o r e [ 3 ] = 0 ;
f o r ( j = 0 ; j < 3 ; j + + )
a r r [ i ] . s c o r e [ 3 ] = a r r [ i ] . s c o r e [ 3 ] + a r r [ i ] . s c o r e [ j ] ;
arr[i].score[3]=arr[i].score[3] /3;
}
}
/ * * * * * * * * * * * * * * * * * * * * * * * /
void order(arr,n) /*定义了order(arr,n)函数*/
struct stu arr[];
int n;
{ struct stu temp;
int i,j,x,y;
f o r ( i = 0 ; i < n - 1 ; i + + )
f o r ( j = 0 ; j < n - 1 - i ; j + + )
if (arr[j].score[3]>arr[j+1].score[3])
{ temp=arr[j];
a r r [ j ] = a r r [ j + 1 ] ;
a r r [ j + 1 ] = t e m p ;
}
}

这不就是函数定义吗?

另外,类似这种定义
void order(arr,n)
struct stu arr[];
int n;
是很久以前C定义函数的用法,现在已经不这样用了,建议改为:
void order(struct stuarr,int n)
....

还有,主函数中对自定义函数的声明,
void input(); / *函数声明* /
void aver();
void order();
void output();
void out_row();
统统没有带参数,建议改为:
void input(struct stuarr,int n); / *函数声明* /
void aver(struct stuarr,int n);
void order(struct stuarr,int n);
void output(struct stuarr,int n);
void out_row(struct stuarr,int n);

楼主还没有学函数吗?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式