| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1083 人关注过本帖
标题:[求助]大家来看看这个程序的问题出在哪
只看楼主 加入收藏
luciferjx
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2006-4-24
收藏
 问题点数:0 回复次数:17 
[求助]大家来看看这个程序的问题出在哪
void aver(float a[][5])
{int i,j;
float sum,ave;
sum=0.000000;
for(i=0;i<9;i++)
{for(j=0;j<4;j++)
sum=sum+a[i][j];
ave=sum/5;
printf("students %ds average scroes is %f",i,ave);
}
void meimen(float a[][5])
{int i,j;
float sum,pingjun;
sum=0.000000;
for(j=0;j<4;j++)
{for(i=0;i<9;i++)
sum=sum+a[i][j];
pingjun=sum/10;
printf("subjects %ds average scroes is %f",j,pingjun);
}
void fc(float a[][5])
{int i,j;
float sum,a,b,c,m;
sum=0.000000
b=0.000000;
c=0.000000;
for(i=0;i<9;i++)
{for(j=0;j<4;j++)
sum=sum+a[i][j];
ave=sum/5;
a=ave*ave;
b=b+ave;
c=c+a;
}
m=c/10-(b/10)*(b/10);
printf("The fangcha is %f",m);
}
main()
{ float aver(float a[][5]);
float meimen(float a[][5]);
float fc(float a[][5]);
flaot a[10][5];
int i,j;
printf("Please input 10 students 5 subjects scores:");
for(i=0;i<9;i++)
for(j=0;j<4;j++)
scanf("%f",&a[i][j]);
aver(a);
meimen(a);
fc(a);
}
题目是输入10个学生5门课的成绩,分别用函数求:1 每个学生平均分;2 每门课的平均分
3 求平均分方差
2006-04-27 16:06
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
这问题好好看看结构那章就能解决

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-04-27 16:22
haichuan
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2006-3-7
收藏
得分:0 
for(i=0;i<9;i++)
for(j=0;j<4;j++)
scanf("%f",&a[i][j]);
改为
for(i=0;i<=9;i++)
for(j=0;j<=4;j++)
scanf("%f",&a[i][j]);
2006-04-27 16:23
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

你的风格导致你的错误很多,变量命名全是拼音,没有头文件
函数声明和定义不符,变量定义过多,a[0] 这是第一个人,不是第0个人
输出函数完都没跟回车符,结果没法看(乱),而且方差计算混乱
方差你自己找地方查公式好好想怎么算(很简单),我没写
我写一点大体方向

[CODE]
#include "stdio.h"

void Student_ave(float a[][5] )
{
int i,j;
float ave=0;

for(i=0;i<10;i++)
{
for(ave=0,j=0;j<5;j++)
ave+=a[i][j];
ave=ave/5;
printf("The %dth student's average scroes is %f\n",i+1,ave);
}
}

void Subject_ave(float a[][5])
{
int i,j;
float ave=0;

for(j=0;j<5;j++)
{
for(ave=0,i=0;i<10;i++)
ave+=a[i][j];
ave=ave/10;
printf("The %dth subject average scroes is %f\n",j+1,ave);
}
}

int main()
{

float a[10][5]; /*如果是TC连接下浮点库*/
int i,j;

printf("Please input 10 students 5 subjects scores:\n");
for(i=0;i<10;i++)
for(j=0;j<5;j++)
scanf("%f",&a[i][j]);

Student_ave(a);
Subject_ave(a);

return 0;
}

[/CODE]


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-04-27 18:01
luciferjx
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2006-4-24
收藏
得分:0 

我们用的没有要求要写预处理命令,所以我没有写
我们是才学的C,所以还有很多不懂 ,所以对算法没有一个比较好的思想
谢谢各位的指导啊!


认真做好我想做的事!
2006-04-27 18:16
luciferjx
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2006-4-24
收藏
得分:0 
3楼的,是不是不能够把那个改成<=啊
这样的话就有I就有11个数
J就有6个数

认真做好我想做的事!
2006-04-27 18:19
luciferjx
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2006-4-24
收藏
得分:0 

楼主,为什么我的 函数声明和定义不符

方差那个我知道有点问题 我是按书上的公式写的 书上的公式本身就不是方差的公式
是一个他自己定义的公式
我想弄清楚 为什么 函数声明和定义不符


认真做好我想做的事!
2006-04-27 18:22
天使的泪
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-4-25
收藏
得分:0 
当你用for(i=0:i<9;i++)
for(j=0;j<4,j++)时,你的循环次数不是你想要的结果,当你要想得到10个学生的成绩时必须要使i<=9或者是i<10才可以的,改法就是上层那位说的那样
2006-04-27 18:23
天使的泪
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-4-25
收藏
得分:0 
刚才忘了说,你的main 函数在你自定义的函数之后,你的main 函数中就不用再声明了啊!函数是从main函数开始执行的,没有必要那么做的,如果是在main函数之后自定义函数,当然要再使用前声明,不然main函数不认识你定义的函数
2006-04-27 18:33
xikang
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-4-21
收藏
得分:0 
[QUOTE]

void aver(float a[][5]) /* 类型默认成了int 但是声明时确实float */
{int i,j;
float sum,ave;
sum=0.000000;
for(i=0;i<9;i++)
{for(j=0;j<4;j++)
sum=sum+a[i][j];
ave=sum/5;
printf("students %ds average scroes is %f",i,ave);
}
void meimen(float a[][5]) /* 类型默认成了int 但是声明时确实float */
{int i,j;
float sum,pingjun;
sum=0.000000;
for(j=0;j<4;j++)
{for(i=0;i<9;i++)
sum=sum+a[i][j];
pingjun=sum/10;
printf("subjects %ds average scroes is %f",j,pingjun);
}
void fc(float a[][5]) /* 类型默认成了int 但是声明时确实float */
{int i,j;
float sum,a,b,c,m; /*系统可能把a认为成了数组名,若改成其他的就不出现问题*/
sum=0.000000 /*;*/
b=0.000000;
c=0.000000;
for(i=0;i<9;i++)
{for(j=0;j<4;j++)
sum=sum+a[i][j];
ave=sum/5;
a=ave*ave; /*浮点型不能这样相乘*/
b=b+ave;
c=c+a; /*浮点型不能这样相加*/
}
m=c/10-(b/10)*(b/10);
printf("The fangcha is %f",m);
}
main()
{ float aver(float a[][5]);
float meimen(float a[][5]);
float fc(float a[][5]);
flaot a[10][5]; /*float*/
int i,j;
printf("Please input 10 students 5 subjects scores:");
for(i=0;i<9;i++) /*这分明是9个量 下面也是*/
for(j=0;j<4;j++)
scanf("%f",&a[i][j]);
aver(a);
meimen(a);
fc(a);
}
[/QUOTE]
我就能改这么多,下面是我改得正确的程序。
float aver(float a[][5])
{int i,j;
float sum,ave;
sum=0.000000;
for(i=0;i<9;i++)
{for(j=0;j<4;j++)
sum=sum+a[i][j];
ave=sum/5;
printf("students %ds average scroes is %f",i,ave);
}
return(0);
}
float meimen(float a[][5])
{int i,j;
float sum,pingjun;
sum=0.000000;
for(j=0;j<4;j++)
{for(i=0;i<9;i++)
sum=sum+a[i][j];
pingjun=sum/10;
printf("subjects %ds average scroes is %f",j,pingjun);
}
return(0);
}
float fc(float a[][5])
{int i,j,ave;
float sum,p,b,c,m;
sum=0.000000;
b=0.000000;
c=0.000000;
for(i=0;i<9;i++)
{for(j=0;j<4;j++)
sum=sum+a[i][j];
ave=sum/5;
p=ave*ave;
b=b+ave;
c=c+p;
}
m=c/10-(b/10)*(b/10);
printf("The fangcha is %f",m);
return(0);
}


main()
{ float aver(float a[][5]);
float meimen(float a[][5]);
float fc(float a[][5]);

float a[10][5];
int i,j;
printf("Please input 10 students 5 subjects scores:");
for(i=0;i<=9;i++)
for(j=0;j<=4;j++)
scanf("%f",&a[i][j]);
aver(a);
meimen(a);
fc(a);
}


2006-04-27 18:36
快速回复:[求助]大家来看看这个程序的问题出在哪
数据加载中...
 
   



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

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