| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5296 人关注过本帖
标题:求平均分与总分问题
只看楼主 加入收藏
wanrimengne
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-4-27
结帖率:0
收藏
已结贴  问题点数:10 回复次数:13 
求平均分与总分问题
计算成绩总分和平均分
 某班级期末考试科目为数学、英语和物理。有最多不超过20人参加考试。请编程计算:每个同学的总分和平均分?
Input 输入数据有多组,每组的第1行为n (1 <=n <=20),接下来有n行,每行3个数值分别代表数学、英语和物理的成绩;
Output  对于每组输入,先在n行内输出每名同学的总分和平均分;数值均保留2位小数。
Example Input:
2
20 40 60
10 50 90
Example output:
120.00 40.00
150.00 50.00


#include <stdio.h>
#include <stdlib.h>

double zf(double a[][3],int n)
{
    int i,j;
    double sum;
    for(i=0;i<n;i++)
        for(j=0;j<3;j++)
        sum=a[0][0]+a[0][1]+a[0][2];
    return sum;
}

double pjf(double a[][3],int n)
{
    int i,j;
    double p;
    for(i=0;i<n;i++)
        for(j=0;j<3;j++)
        p=zf(a,n)/3;
    return p;
}
int main()
{
    int n,i,j;
    while(1)
    {
        scanf("%d",&n);
        double a[n][3];
        for(i=0;i<n;i++)
            for(j=0;j<3;j++)
            {
                pjf(a,n);
            zf(a,n);
            printf("%.2lf",&zf);
            printf("%.2lf",&pjf);

            }
    }

    printf("Hello world!\n");
    return 0;
}
求各位大神改错,跪谢
搜索更多相关主题的帖子: include 考试科目 double 英语 数学 
2016-04-27 21:11
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:2 
double zf(double a[][3],int n)
{
    int i,j;
    double sum;
    for(i=0;i<n;i++)
        for(j=0;j<3;j++)     //j循环去掉。
        sum=a[0][0]+a[0][1]+a[0][2];//  改成sum=a[i][0]+a[i][1]+a[i][2]
    return sum;
}

主函数加上成绩的输入。不然光确定了人数有什么用。
2016-04-27 22:36
ldsh304
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:242
专家分:755
注 册:2016-1-18
收藏
得分:2 
a[n][3] 不能这样定义
2016-04-27 22:46
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
回复 3楼 ldsh304
他这个代码可以,因为n已经输入了。所以n有确定值。
2016-04-27 22:59
超萌哒帅帅
Rank: 1
来 自:广西
等 级:新手上路
帖 子:15
专家分:3
注 册:2016-4-27
收藏
得分:2 
数组定义有问题,而且数组的输入没有,n 是用 int 定义,与数组中的 double 不符合
2016-04-27 23:09
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
不要把别人搞蒙行不行。
#include<stdio.h>
int main()
{
    int i,j,n;
    printf("输入n");
    scanf("%d",&n);
    double a[n][3];
    for(i=0;i<n;i++)
        for(j=0;j<3;j++)
        {
            scanf("%lf",&a[i][j]);
        }
    for(i=0;i<n;i++)
        for(j=0;j<3;j++)
        {
            printf("%lf\n",a[i][j]);
        }
    return 0;
}
你们自己去试试看。i,j也是整型,不是double.
2016-04-28 00:35
wanrimengne
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-4-27
收藏
得分:0 
回复 6楼 linlulu001
你好,我看了前面的回复,觉得你回复的最靠谱了。我觉得是我输出有问题吧  
printf("%.2lf",zf);
printf("%.2lf",pjf);
原程序中加了取地址 应该不用加的
我想输出函数运行结果,但好像输出的是函数名,可能这个也不正确,求赐教
2016-04-28 12:38
ldsh304
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:242
专家分:755
注 册:2016-1-18
收藏
得分:0 
回复 4楼 linlulu001
n虽然已经确定,但它依然是一个变量
百度一下 数组定义 就有以下解释:

5) 不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。例如:
#define FD 5
// ...
int a[3+2], b[7+FD];
是合法的。

但是下述说明方式是错误的。
int n = 5;
int a[n];
2016-04-28 13:22
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
回复 8楼 ldsh304
你说的我明白,但你还是没有搞清楚一件事,当数组a[n][3]中的n值一旦被第一次读取到,那么该数组的大小就被定下了。
就像你说的,int n=5;你试下加句sancf取n的值,看看数组int a[n][3]会是5还是n.
之所以不用变量来做数组的下标值是因为他的不确定性,也不利于程序后修改操作,一旦出现错误很难被发现。
如果你int n改成static int n,那就可以安全调用n做数组下标,因为在程序运行过程中,n的值将不在那生改变。
最后说一下,如果要类似a[n][m]定义,那么n,m最好用宏定义。
而楼主的代码,显然用输入n的方法来确定学生是可以的,虽然我没看到他把n设为static int,但是他后面的代码显然也没有再对n进行变值操作,所以我才说他的代码可以,但没说我们要学他这样做。


[此贴子已经被作者于2016-4-28 14:27编辑过]

2016-04-28 14:26
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
回复 7楼 wanrimengne
还是把你写的代码再发出来吧
2016-04-28 14:30
快速回复:求平均分与总分问题
数据加载中...
 
   



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

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