这个题目,C语言怎么编程?我编写了部分~大神赐教

#include<stdio.h>#defineI5#defineJ3voidjunfen(intsz[I][J],intavg[I]){inti,j;for(i=0;i... #include <stdio.h>

#define I 5
#define J 3

void junfen(int sz[I][J],int avg[I])
{
int i,j;

for(i=0;i<I;i++){
for(j=0;j<J;j++) {
avg[i]+=sz[i][j];
j++;
}
}
}

int main(void)
{
int sz[I][J];
int avg[I]={0};
int i,j;
for (i=0;i<I;i++) {
printf("学生%d:\n",i+1);
for (j=0;j<J;j++) {
printf("语文:"); scanf("%d",&sz[i][j]); j++;
printf("数学:"); scanf("%d",&sz[i][j]); j++;
printf("英语:"); scanf("%d",&sz[i][j]);
}
putchar('\n');
}

junfen(sz[I][J],avg[I]);

for (i=0;i<I;i++) printf("%d\n",avg[i]/3);
return (0);}
问题平均分这样算不出来,最高分的我也不会用二维数组整出来..
展开
 我来答
stlily2008
2014-04-15 · 知道合伙人数码行家
stlily2008
知道合伙人数码行家
采纳数:627 获赞数:2806
大学本科毕业于桂林电子工业学院,硕士毕业于广东工业大学。在电力建设行业从事计算机管理及施工管理10多年

向TA提问 私信TA
展开全部

帮你修改了一下代码,实现你的题目的要求,没有使用函数。

#include <stdio.h>
#define I 5
#define J 3
int main(void)
{
    int sz[I][J];
    int avg[I]={0};
    int i,j;
    int intMax[J]={0};            // 新增加定义:最高分
    float fPinJun[I]={0};         // 新增加定义:平均分

    printf("请输入 %d 个学生的 %d 科成绩:\n",I,J);
    for (i=0;i<I;i++)
    {
        printf("学生%d:\n",i+1);
        for (j=0;j<J;j++)
        {
            printf("语文:"); 
            scanf("%d",&sz[i][j]);
            if (intMax[j] < sz[i][j])
                intMax[j]=sz[i][j];         // 语文最高分 
            fPinJun[i] = sz[i][j];        // 计算平均分用 
            j++;
            
            printf("数学:");
            scanf("%d",&sz[i][j]);
            if (intMax[j] < sz[i][j])
                intMax[j]=sz[i][j];         // 数学最高分 
            fPinJun[i] += sz[i][j];        // 计算平均分用
            j++;
            printf("英语:");
            scanf("%d",&sz[i][j]);
            if (intMax[j] < sz[i][j])
                intMax[j]=sz[i][j];         // 英语最高分 
            fPinJun[i] += sz[i][j];         // 计算平均分用
        }
        fPinJun[i] = fPinJun[i]/J;
        putchar('\n');
    }
    printf("语文、数学、英语的最高分分别是:\n");
    for (j=0;j<J;j++)
        printf("%d\n", intMax[j]);
    
    printf("\n每个学生的平均分是:\n");
    for (i=0;i<I;i++)
        printf("学生%d的平均分是:%.2f\n",i+1,fPinJun[i]);

    return (0);
}
wuzongxian0010
2014-04-15 · TA获得超过796个赞
知道小有建树答主
回答量:433
采纳率:100%
帮助的人:337万
展开全部
算平均分时,最后为什么加了一句j++,不应该有的
最高分可以在定义一个数组max[J]
for(j = 0; j < J; j++) {
max [j] = sz[0][j];
for(i = 1; i < I; i ++) {
if(max[j] < sz[i][j])
max[j] = sz[i][j];
}
}
max[0],max[1],max[2]分别是语文、数学和英语成绩的最高分
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友28e9be2
推荐于2016-09-28 · TA获得超过609个赞
知道小有建树答主
回答量:499
采纳率:100%
帮助的人:609万
展开全部
#include <stdio.h>
#define I 5
#define J 3
void junfen(int sz[][J],int avg[])
{
int i,j;
for(i=0;i<I;i++)
{
for(j=0;j<J;j++)
{
avg[i]+=sz[i][j];
}
}
}
void max(int sz[][J],int top[])
{
int i,j;
for(j=0;j<J;j++)
{
top[j] = 0;
for(i=0;i<I;i++)
{
if(sz[i][j] > top[j])
{
top[j]=sz[i][j];
}
}
}
}
int main(void)
{
int sz[I][J];
int avg[I]={0},top[I] = {0};
int i,j;
for (i=0;i<I;i++)
{
printf("学生%d:\n",i+1);
j = 0;
printf("语文:"); scanf("%d",&sz[i][j]);
++j;
printf("数学:"); scanf("%d",&sz[i][j]);
++j;
printf("英语:"); scanf("%d",&sz[i][j]);
putchar('\n');
}

junfen(sz,avg);
for (i=0;i<I;i++)
printf("%d ",avg[i]/3);
printf("\n");
max(sz,top);
for(j=0;j<J;j++)
{
printf("%d ",top[j]);
}
return (0);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式