为啥能运行,结果不对

DJYLSY 2015-12-22 01:00:50
#include<stdio.h>
#define N 3
#define M 4
float score[M][N];
float class[M],people[N];
int main()
{
int i,j;
float h;
void input(void);
void aver1(void);
void aver2(void);
input();
aver1();
aver2();
printf("\nNO. cour1 cour2 cour3 cour4 aver\n");
for(i=0;i<N;i++)
{
printf("NO%2d",i+1001);
for(j=0;j<M;j++)
printf("%8.2f",score[i][j]);
printf("%8.2f\n",people[i]);
}
printf("\naverage:");
for(j=0;j<M;j++)
printf("%8.2f",class[j]);
printf("\n");
return 0;
}
void input(void)
{
int i,j;
for(i=0;i<N;i++)
{
printf("\nthe score of student %2d:",i+1001);
for(j=0;j<M;j++)
scanf("%f",&score[N][M]);
}
}
void aver1(void)
{
int i,j;
int s;
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
s+=score[i][j];
people[i]=s/(float)M;
}
}
void aver2(void)
{
int i,j;
int s;
for(j=0;j<M;j++)
{
for(i=0;i<N;i++)
s+=score[i][j];
class[j]=s/(float)N;
}
}
...全文
120 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
动力风暴 2015-12-22
  • 打赏
  • 举报
回复
另:建议楼主贴代码是可按照下面截图:

这样看程序就方便些了~~~
动力风暴 2015-12-22
  • 打赏
  • 举报
回复

#include<stdio.h>
#define N 2//课程
#define M 2//人数
float score[M][N]={0};
float cla[M]={0},people[N]={0};
int main()
{
	int i,j;
	float h;
	void input(void);
	void aver1(void);
	void aver2(void);
	input();
	aver1();
	aver2();
	printf("\nNO.   cour1   cour2    cour3   cour4   aver\n");
	for(i=0;i<N;i++)
	{
		printf("NO%2d",i+1001);
		for(j=0;j<M;j++)
			printf("%8.2f",score[i][j]);
		printf("%8.2f\n",people[i]);
	}

	printf("\naverage:");
	for(j=0;j<M;j++)
		printf("%8.2f",cla[j]);
	printf("\n");
	return 0;
}
void input(void)
{
	int i,j;
	for(i=0;i<N;i++)
	{
		printf("\nthe score of student %2d:",i+1001);
		for(j=0;j<M;j++)
			scanf("%f",&score[i][j]);
	}
}
void aver1(void)
{
	int i,j;
	float s[N] = {0.0};
	for(i=0;i<N;i++)
	{
		for(j=0;j<M;j++)
			s[i]+=score[i][j];
		people[i]=s[i]/(float)M;
	}
}
void aver2(void)
{
	int i,j;
	float s[M] = {0.0};
	for(j=0;j<M;j++)
	{
		for(i=0;i<N;i++)
			s[j]+=score[i][j];
		cla[j]=s[j]/(float)N;
	}
}
修改了下楼主的程序,大致有下面几个问题: 1)scanf("%f",&score[N][M]);应改成scanf("%f",&score[i][j]); 2) 变量命名一般都要初始化,如程序中的score,cla,people等; 3)楼主两个平均目的是按每个学生的成绩平均和按每门课程的成绩求平均,所以求和时要用数组区分;
wang0635 2015-12-22
  • 打赏
  • 举报
回复
引用 1 楼 wang0635 的回复:
aver中s没有初始化 另外,s最好是float的
aver1、aver2 中的都要改
DJYLSY 2015-12-22
  • 打赏
  • 举报
回复
#include<stdio.h> #define N 3 #define M 4 float score[M][N]; float cla[M],people[N]; int main() { int i,j; float h; void input(void); void aver1(void); void aver2(void); input(); aver1(); aver2(); printf("\nNO. cour1 cour2 cour3 cour4 aver\n"); for(i=0;i<N;i++) { printf("NO%2d",i+1001); for(j=0;j<M;j++) printf("%8.2f",score[i][j]); printf("%8.2f\n",people[i]); } printf("\naverage:"); for(j=0;j<M;j++) printf("%8.2f",cla[j]); printf("\n"); return 0; } void input(void) { int i,j; for(i=0;i<N;i++) { printf("\nthe score of student %2d:",i+1001); for(j=0;j<M;j++) scanf("%f",&score[N][M]); } } void aver1(void) { int i,j; float s; for(i=0;i<N;i++) { for(j=0,s=0;j<M;j++) s+=score[i][j]; people[i]=s/(float)M; } } void aver2(void) { int i,j; float s; for(j=0;j<M;j++) { for(i=0;i<N;i++) s+=score[i][j]; cla[j]=s/(float)N; } } 改了还是不行
paschen 2015-12-22
  • 打赏
  • 举报
回复
不要把变量名字取为class,class是关键字,不能用作变量名
wang0635 2015-12-22
  • 打赏
  • 举报
回复
aver中s没有初始化 另外,s最好是float的

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧