标题:列指针程序问题
只看楼主
Stubborn
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2017-6-26
结帖率:60%
已结贴  问题点数:10 回复次数:13 
列指针程序问题
#include  <stdio.h>
#define STUD 30            //最多可能的学生人数
#define COURSE 5             //最多可能的考试科目数
void  Total(int *score, int sum[], float aver[], int m, int n);
void  Print(int *score, int sum[], float aver[], int m, int n);
int main(void)
{
         int     i, j, m, n, score[STUD][COURSE], sum[STUD];
         float   aver[STUD];
         printf("Enter the total number of students and courses:\n");
         scanf("%d%d",&m,&n);
         printf("Enter score:\n");
         for (i=0; i<m; i++)
         {
            for (j=0; j<n; j++)
            {
                scanf("%d", &score[i][j]);
            }
        }
        Total(*score, sum, aver, m, n);
        Print(*score, sum, aver, m, n);
        return 0;
}
 
void  Total(int *score, int sum[], float aver[], int m, int n)
{
        int  i, j;
        for (i=0; i<m; i++)
        {
            sum[i] = 0;
            for (j=0; j<n; j++)
            {
                sum[i] = sum[i] + *(score + i * n + j);
            }
            aver[i] = (float) sum[i] / n;
        }
}
 
void  Print(int *score, int sum[], float aver[], int m, int n)
{
        int  i, j;
        printf("Result:\n");
        for (i=0; i<m; i++)
        {
            for (j=0; j<n; j++)
            {
                printf("%4d\t", *(score + i * n + j));
            }
            printf("%5d\t%6.1f\n", sum[i], aver[i]);
     }
}

[此贴子已经被作者于2017-12-21 16:05编辑过]

搜索更多相关主题的帖子: int score sum float for 
2017-12-21 16:04
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
编译无异常
运行有什么问题?
2017-12-21 16:13
Stubborn
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2017-6-26
得分:0 
回复 2楼 吹水佬
Enter the total number of students and courses:
2 3
Enter score:
1 2 3 4 5 6
Result:
   1       2       3        6      2.0
   0    4194304    4    4194308 1398102.6

--------------------------------
Process exited after 10.51 seconds with return value 0
请按任意键继续. . .


2017-12-21 16:21
Stubborn
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2017-6-26
得分:0 
题目内容:
从键盘任意输入m个学生n门课程的成绩,然后计算每个学生各门课的总分sum和平均分aver。
2017-12-21 16:22
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
得分:0 
改了一下。
程序代码:
#include<stdio.h>
#define STUD 30            //最多可能的学生人数
#define COURSE 5             //最多可能的考试科目数
void  Total(int *score, int sum[], float aver[], int m, int n);
void  Print(int *score, int sum[], float aver[], int m, int n);
int main(void)
{
         int     i, j, m, n;
         int     score[STUD][COURSE]={0};
         int     sum[STUD]={0};
         float   aver[STUD]={0};
         printf("Enter the total number of students and courses:\n");
         scanf("%d %d",&m,&n);
         printf("Enter score:\n");
        

         for (i=0; i<m; i++)
         {
            for (j=0; j<n; j++)
            {
                scanf("%d", &score[i][j]);
            }
        }
        Total(*score, sum, aver, m, n);
        Print(*score, sum, aver, m, n);
        return 0;
}


void  Total(int *score, int sum[], float aver[], int m, int n)
{
        int  i, j;
        for (i=0; i<m; i++)
        {
            sum[i] = 0;
            for (j=0; j<n; j++)
            {
                sum[i] = sum[i] + *(score + i * n + j);
            }
            aver[i] = (float) sum[i] / n;
        }
}


void  Print(int *score, int sum[], float aver[], int m, int n)
{
        int  i, j;
        printf("Result:\n");
        for (i=0; i<m; i++)
        {
            for (j=0; j<n; j++)
            {
                printf("%4d\t", *(score + i * n + j));
            }
            printf("%5d\t%6.1f\n", sum[i], aver[i]);
     }
}

2017-12-21 16:25
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
得分:0 
你原先用%d%d在输入时会出错,要么加空格,要么加逗号。
scanf("%d %d",&m,&n);
2017-12-21 16:27
Stubborn
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2017-6-26
得分:0 
回复 6楼 虫眼
还是不正确
2017-12-21 16:47
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
得分:0 
正确的答案是什么样子的?我只调了一下主程序,Total函数没看
2017-12-21 17:29
Stubborn
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2017-6-26
得分:0 
回复 8楼 虫眼
Enter the total number of students and courses:
2 3↙
Enter score:
90↙
95↙
97↙
82↙
73↙
69↙
Result:
  90  95  97  282  94.0
  82  73  69  224  74.7
2017-12-21 17:31
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:5 
把其中的两处:
*(score + i * n + j)
改为:
*(score + i * COURSE + j)
2017-12-21 21:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-483583-1-1.html




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

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