标题:程序运行结果出错,求大神帮忙指点程序错在哪里,非常感谢
只看楼主
转念一想
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2016-10-18
结帖率:71.43%
已结贴  问题点数:5 回复次数:5 
程序运行结果出错,求大神帮忙指点程序错在哪里,非常感谢
#include<stdio.h>
#define M 2
#define N 3
float average(float a[][N],int );

int main()
{
 int i,j,n,m,sum;
 float a[M][N];
 float averscore[M];
 printf("输入学生人数:\n");
 scanf("%d",&m);
 printf("输入课程数:\n");
 scanf("%d",&n);
for(i=0;i<=m;i++)
 for(j=0;j<=n;j++)
scanf("%f",&a[i][j]);
 averscore[i]=average(a,n);
 printf("%f\n",averscore[i]);

 for(i=0;i<=m;i++)
 {
 if(averscore[i]<=60)
 for(j=0;j<=n;j++)
  printf("%d\n",a[i][j]);
 }

return 0;
}
float average(float a[][N],int n)
{
int i,m,j;
float sum;
for(i=0;i<=m;i++)
{
    sum=0;
for(j=0;j<=n;j++)
sum+=a[i][j];
return sum/n;

}

}
M学生N门课求平均成绩,若小于60则输出。
如果用指针应该怎么做

[此贴子已经被作者于2016-11-19 20:18编辑过]

搜索更多相关主题的帖子: average include return 课程 
2016-11-19 20:16
努力静修154
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-11-19
得分:0 
推荐你看一本书《c和指针》
2016-11-19 20:52
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:1 
m个学生,下标是从0~m-1, for循环下标越界了。其他没细看,不知还有没有其他问题。
2016-11-19 21:16
转念一想
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2016-10-18
得分:0 
还是运行结果有错,程序是哪出错了
谢谢各位大神帮助
#include<stdio.h>
#define M 2
#define N 3
float average(float a[][N],int );

int main()
{
 int i,j,n,m;
 float a[M][N];
 float averscore[M];
 printf("输入学生人数:\n");
 scanf("%d",&m);
 printf("输入课程数:\n");
 scanf("%d",&n);
for(i=0;i<m;i++)
 for(j=0;j<n;j++)
scanf("%f",&a[i][j]);
 averscore[i]=average(a,n);
 printf("%f\n",averscore[i]);

 for(i=0;i<m;i++)
 {
 if(averscore[i]<=80)
 for(j=0;j<n;j++)
  printf("%f\n",a[i][j]);
 }

return 0;
}
float average(float a[][N],int n)
{
int i,m,j;
float sum;
for(i=0;i<m;i++)
{
    sum=0;
for(j=0;j<n;j++)
sum+=a[i][j];
return sum/n;

}

}
2016-11-20 21:15
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
得分:4 
#define M 2
#define N 3        这两个宏是不是太小了点
averscore[i]=average(a,n);
printf("%f\n",averscore[i]);        //这两句应该是用循环来处理吧。不然averscore定义成数组不就没有意义了。

for(i=0;i<m;i++)
{
    sum=0;
for(j=0;j<n;j++)
sum+=a[i][j];
return sum/n;        //return 既然在这里,那么双循环没有必要,而且每次都返回a[0]这一行的平均值显然也不是你想要的结果

}
2016-11-20 22:16
X先生
Rank: 1
等 级:新手上路
帖 子:2
专家分:3
注 册:2016-11-18
得分:0 
结果出错的话用调试最爽了
2016-11-21 18:12



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




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

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