| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 881 人关注过本帖
标题:[求助]这个异常反应怎么回事?
只看楼主 加入收藏
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
结帖率:100%
收藏
 问题点数:0 回复次数:12 
[求助]这个异常反应怎么回事?

这个程序是输入M个学生的,N门课的成绩....然后求平均成绩等等什么的.....下面是我写的程序....
成绩的输入我是通过input函数来实现的...但是现在出现了个问题,没有什么语法错误,但是在编译的时候,在调用INPUT函数的时候,SCANF执行不了..不知道为什么...TC下看到的结果 是这样的...
Input the score:
NO1: scanf : floating point formats not linked
Abnormal program termination

然后就自动退出了.后面不再执行.不知道是怎么回事....请各位不吝指教...谢谢


#define M 10
#define N 5

float student_average(float (*p)[N],int stuno)/*求学生平均成绩*/
{ float sum=0;
int i;
for(i=0;i<N;i++)
sum=sum+*(*(p+stuno)+i);
return sum/N;
}


float course_average(float (*p)[N],int courseno)/*求每门课的平均成绩*/
{ float sum=0;
int i;
for(i=0;i<M;i++)
sum=sum+*(*(p+i)+courseno);
return sum/M;
}


float highest(float (*p)[N]) /*计算最高分*/
{ float most=0;
int i,j;
printf("Highest score:\n");
for(i=0;i<M;i++)
for(j=0;j<N;j++)
if(most<*(*(p+i)+j))
most=*(*(p+i)+j);
for(i=0;i<M;i++)
for(j=0;j<N;j++)
if(*(*(p+i)+j)==most)
printf("Highest score:%3.2f NO.%d course:%d\n",most,i+1,j+1);
}


float fangcha(float (*p)[N]) /*求方差*/
{ int i;
float result,sum1=0,sum2=0;
for(i=0;i<M;i++)
{sum1=sum1+student_average(p,i)*student_average(p,i);
sum2=sum2+student_average(p,i);
}
result=sum1/N-(sum2/N)*(sum2/N);
return result;
}


void input(float (*p)[N]) /*输入成绩*/
{ int i,j;
printf("Input the score:\n");
for(i=0;i<M;i++)
{printf("NO%d:",i+1);

for(j=0;j<N;j++)
scanf("%f",*(p+i)+j);
printf("\n");

}

}


void main()
{ float stu[M][N];
int i,j;
input(stu);
for(i=0;i<M;i++)
printf("the average score of NO%d is: %3.2f\n",i+1,student_average(stu,i));
for(j=0;j<N;j++)
printf("the average score of course%d is: %3.2f\n",j+1,course_average(stu,j));
highest(stu);
printf("Fangcha: %3.2f\n",fangcha(stu));
getch();
}


[此贴子已经被作者于2006-11-16 16:59:16编辑过]

搜索更多相关主题的帖子: 异常反应 
2006-11-16 16:53
shuaiye
Rank: 1
等 级:新手上路
帖 子:445
专家分:0
注 册:2006-5-15
收藏
得分:0 
我在LCC下运行了下,除了加了个#include &lt;stdio.h&gt;和在求最高分的函数那加了个return 外,没发现错误。

由于工作,N久都没来了!
2006-11-16 17:13
smartwind
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2006-11-13
收藏
得分:0 
vc下验证,一个错误没有
输入很正常

2006-11-16 19:17
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 

这样,就没有那个提示了:

#define M 10
#define N 5

float student_average(float (*p)[N],int stuno)/*求学生平均成绩*/
{ float sum=0;
int i;
for(i=0;i<N;i++)
sum=sum+*(*(p+stuno)+i);
return sum/N;
}


float course_average(float (*p)[N],int courseno)/*求每门课的平均成绩*/
{ float sum=0;
int i;
for(i=0;i<M;i++)
sum=sum+*(*(p+i)+courseno);
return sum/M;
}


float highest(float (*p)[N]) /*计算最高分*/
{ float most=0;
int i,j;
printf("Highest score:\n");
for(i=0;i<M;i++)
for(j=0;j<N;j++)
if(most<*(*(p+i)+j))
most=*(*(p+i)+j);
for(i=0;i<M;i++)
for(j=0;j<N;j++)
if(*(*(p+i)+j)==most)
printf("Highest score:%3.2f NO.%d course:%d\n",most,i+1,j+1);
}


float fangcha(float *p) /*求方差*/
{ int i;
float result,sum1=0,sum2=0;
for(i=0;i<M;i++)
{sum1=sum1+student_average(p,i)*student_average(p,i);
sum2=sum2+student_average(p,i);
}
result=sum1/N-(sum2/N)*(sum2/N);
return result;
}


void input(float (*p)[N]) /*输入成绩*/
{ int i,j;
printf("Input the score:\n");
for(i=0;i<M;i++)
{printf("NO%d:",i+1);

for(j=0;j<N;j++)
scanf("%f",*(p+i)+j);
printf("\n");

}

}


void main()
{ float stu[M][N];
int i,j;
input(stu);
for(i=0;i<M;i++)
printf("the average score of NO%d is: %3.2f\n",i+1,student_average(stu,i));
for(j=0;j<N;j++)
printf("the average score of course%d is: %3.2f\n",j+1,course_average(stu,j));
highest(stu);
printf("Fangcha: %3.2f\n",fangcha(stu));
getch();
}


My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2006-11-16 19:28
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
收藏
得分:0 

除非你用TC,不然不会出现这个问题


2006-11-16 19:48
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 
以下是引用我不是郭靖在2006-11-16 19:48:14的发言:

除非你用TC,不然不会出现这个问题

不会吧....WIN-TC也出现同样的问题啊...


这个社会太复杂。。。
2006-11-16 22:57
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 
回四楼的:如果那样改的话..我并不知道为什么前面部分确实可以运行了...但是到求方差的时候又出错了...因为那两个指针很明显不匹配的....我找了好长时间,,,没发现有什么错误....但是就是不能通过....晕了...既然有人说VC里面一切正常...难道这个错误是TC本身的BUG....不会吧?

[此贴子已经被作者于2006-11-16 23:01:19编辑过]



这个社会太复杂。。。
2006-11-16 23:00
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
回复ls,试着改改指针类型或表达方法,可能就会好的

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2006-11-22 12:20
ChenMo
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:481
专家分:10
注 册:2004-4-8
收藏
得分:0 

编译时让TC连接浮点库(8087/80286 或 仿真8087/80286)即可。

在 main() 函数出蓝色粗体标识的那两句增加上去试试(先任意输入一个 double 类型的值),这样可以让TC知道有浮点运算需要连接浮点库。

int main()
{
float stu[M][N];
int i,j;
double T;

scanf("%lf", &T);

input(stu);
for(i=0;i<M;i++)
.
.
.
}


欢迎加入 MVC 技术讨论群(新群:90093426)
2006-11-22 12:51
meiling01
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-11-2
收藏
得分:0 
麻烦问一下楼主,你的方差的计算方法我怎么看不懂啊?麻烦您解释一下吧。谢谢您!
2006-11-22 14:27
快速回复:[求助]这个异常反应怎么回事?
数据加载中...
 
   



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

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