| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 837 人关注过本帖
标题:求帮忙看一道题和修改代码。。。
只看楼主 加入收藏
yenga
Rank: 1
等 级:新手上路
帖 子:39
专家分:7
注 册:2013-11-25
结帖率:75%
收藏
已结贴  问题点数:31 回复次数:13 
求帮忙看一道题和修改代码。。。
实验内容1::试编写一个程序完成:有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个学生数据,要求输出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩、平均分数)。
 
实验要求:(1)要求用一个input函数输入5个学生数据;应一个average函数求平均分;用max函数求出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出。
测试数据
1
Zhang Li
89
69
77
2
Li Ling
99
100
66
3
Wang Lan
79
56
88
4
Zhao Xin
88
95
100
5
Yang Ke
77
50
88
结果

81.40
4
Zhao Xin
88.00
95.00
100.00
94.33


我自己写的。。。



#include"stdio.h"
float averages();
int max();
 float sum=0.00,ave;
struct input
{
int number;
char name[10];
float score[3];
};
struct input student[5];

main()
{
float m;
int re,i;


{
int j,i;
for(j=0;j<5;j++)
{
scanf("%d",&student[j].number);
scanf("%s",student[j].name);
for(i=0;i<3;i++)
scanf("%f",&student[j].score[i]);
}
}


m=averages();
printf("%.2f",m);

re=max();
printf("%d",&student[re].number);
printf("%s",student[re].name);
for(i=0;i<3;i++)
printf("%f",&student[re].score[i]);

     for(i=0;i<3;i++)
     sum+=student[re].score[i];
     ave=sum/3;
printf("%.2f",ave);
}

float averages()
{
int j,i;
float sum=0.00,s;
     for(j=0;j<5;j++)
     {    for(i=0;i<3;i++)
     sum+=student[j].score[i];  }
        s=sum/15;

return s;   
}
   

int max()
{
float max,ave[5];
int best;
int j,i;

     for(j=0;j<5;j++)
     {float sum=0.00;
     for(i=0;i<3;i++)
     sum+=student[j].score[i];
     ave[j]=sum/3;}
max=ave[0];
for(j=0;j<5;j++)
if(ave[j]>max)
best=j+1;

return best;
}
 



首先我不明白怎么叫做Input函数,需要调用还是直接放在主程序中
还有一个函数调用后的结果怎么用到另一个调用函数中,比如我在算平均分的函数的结果(5个平均分)怎么可以用到Max函数中;
第三是可不可以同时返回一个结构体,或者怎么返回一个float平均值和一个Int编号的值

我上面打的函数有点奇葩,,怎么修改好,,,
求解救。。
搜索更多相关主题的帖子: average 键盘 姓名 
2013-12-14 10:43
y3765258
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:106
专家分:172
注 册:2013-4-9
收藏
得分:8 
实验要求:(1)要求用一个input函数输入5个学生数据;应一个average函数求平均分;用max函数求出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出。
题目已经给出了程序的过程,你写的程序代码太乱。自己改下吧,还有既然要求写个input输入函数,struct input 换个名子。

有问题一起探讨,一起进步。
2013-12-14 12:37
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:8 
我写了一个   你对照看一下吧
程序代码:
#include<stdio.h>

struct student{
    char no[10];
    char name[10];
    float grade1,grade2,grade3;
    float ave;  //平均分
};
struct student stu[5],temp;
float Ave;     //总平均分

void input(int i){   //输入数据
    printf("学生%d\n",i+1);
    printf("学号:");
    scanf("%s",stu[i].no);
    printf("姓名:");
    scanf("%s",stu[i].name);
    printf("三门课成绩:\n");
    scanf("%f%f%f",&stu[i].grade1,&stu[i].grade2,&stu[i].grade3);
}

void average(){    //求总平均分以及每个人的平均分
    int i,num=0;
    for(i=0;i<5;i++){
        stu[i].ave=(stu[i].grade1+stu[i].grade2+stu[i].grade3)/3.0;
        num+=stu[i].ave;
    }
    Ave=num*3.0/5.0;
}

void max(){     //找出最高分同学
    int i;
    float flag=0;
    for(i=0;i<5;i++)
        if(flag<stu[i].ave){
            temp=stu[i];
            flag=stu[i].ave;
        }
}


main()
{
    int i;
    for(i=0;i<5;i++)
        input(i);
    average();
    max();
    printf("\n学号\t姓名\t\t成绩1\t成绩2\t成绩3\t平均分\n");
    for(i=0;i<5;i++)
        printf("%s\t%s\t\t%.1f\t%.1f\t%.1f\t%.2f\n",stu[i].no,stu[i].name,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].ave);
    printf("\n总平均分:%.2f\n",Ave);
    printf("\n最高分学生:\n");
    printf("学号\t姓名\t\t成绩1\t成绩2\t成绩3\t平均分\n");
    printf("%s\t%s\t\t%.1f\t%.1f\t%.1f\t%.2f\n",temp.no,temp.name,temp.grade1,temp.grade2,temp.grade3,temp.ave);
    return 0;
}

    

图片附件: 游客没有浏览图片的权限,请 登录注册

三十年河东,三十年河西,莫欺少年穷!
2013-12-14 13:45
yenga
Rank: 1
等 级:新手上路
帖 子:39
专家分:7
注 册:2013-11-25
收藏
得分:0 
回复 3楼 韶志
为什么你用的子函数不用返回值,就可以直接应用到主函数中的???
2013-12-14 15:15
yenga
Rank: 1
等 级:新手上路
帖 子:39
专家分:7
注 册:2013-11-25
收藏
得分:0 
回复 3楼 韶志
还有是不是void average()的内容写在Main函数前面
就不用再在#include下面写void average();了
2013-12-14 15:21
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
回复 5楼 yenga
函数不需要返回值所以用 void 啊,只是对结构体进行数值操作

函数在main()前面定义,就不需要声明了

三十年河东,三十年河西,莫欺少年穷!
2013-12-14 15:52
yenga
Rank: 1
等 级:新手上路
帖 子:39
专家分:7
注 册:2013-11-25
收藏
得分:0 
#include<stdio.h>

float Ave;
struct student
{
int number;
char name[10];
float score1,score2,score3;
float ave;
};
struct student student[5],temp;


void input(int i)
{
scanf("%d",&student[i].number);
scanf("%s",student[i].name);
scanf("%f%f%f",&student[i].score1,&student[i].score2,&student[i].score3);
}



void averages()
{
int i;
float sum=0.00,Ave;
     for(i=0;i<5;i++)
     {
       student[i].ave=(student[i].score1+student[i].score2+student[i].score3)/3;  
       sum+=student[i].ave;}
           Ave=sum*3/5;

}


void max()
{
float max;
int i;
max=student[0].ave;

for(i=0;i<5;i++)
{
    if(max<student[i].ave)
    {max=student[i].ave;
    temp=student[i]; }
}
 
}




我已经0错误了,
但是输入数据后怎么没输出就跳出来了
2013-12-14 17:12
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
回复 7楼 yenga
你的  main() 函数呢???

三十年河东,三十年河西,莫欺少年穷!
2013-12-14 19:14
yenga
Rank: 1
等 级:新手上路
帖 子:39
专家分:7
注 册:2013-11-25
收藏
得分:0 
回复 8楼 韶志
sorry a..
复制出错

#include<stdio.h>

float Ave;
struct student
{
int number;
char name[10];
float score1,score2,score3;
float ave;
};
struct student student[5],temp;


void input(int i)
{
scanf("%d",&student[i].number);
scanf("%s",student[i].name);
scanf("%f%f%f",&student[i].score1,&student[i].score2,&student[i].score3);
}


void averages()
{
int i;
float sum=0.00,Ave;
     for(i=0;i<5;i++)
     {
       student[i].ave=(student[i].score1+student[i].score2+student[i].score3)/3;  
       sum+=student[i].ave;}
           Ave=sum*3/5;

}


void max()
{
float max;
int i;
max=student[0].ave;

for(i=0;i<5;i++)
{
    if(max<student[i].ave)
    {max=student[i].ave;
    temp=student[i]; }
}
 
}








main()
{
 int i;
    for(i=0;i<5;i++)
        input(i);
    averages();
    max();
   
   printf("%f",Ave);
    printf("%d\n%s\n%.2f\n%.2f\n%.2f\n%.2f\n",temp.number,temp.name,temp.score1,temp.score2,temp.score3,temp.ave);


}
2013-12-15 09:14
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
回复 9楼 yenga
你确定输入正确?   仔细点哦

三十年河东,三十年河西,莫欺少年穷!
2013-12-16 11:59
快速回复:求帮忙看一道题和修改代码。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017937 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved