当前位置: 代码迷 >> C语言 >> [求助]着两个程序有啥区别!
  详细解决方案

[求助]着两个程序有啥区别!

热度:280   发布时间:2006-08-23 20:50:32.0
[求助]着两个程序有啥区别!

23、 程序定义了N*N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:
求出数组周边元素的平均值并作为函数值返回给主函数中的s。
则返回主程序后s的值应为:3.375。
着是 我自己写的
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define N 5
double fun (int w[][N])
{
int i,b=0;
double m=0,n=0;
for(i=0;i<=N;i++)
{
n+=w[0][i];
n+=w[N-1][i];
b+=2 ;
}
for(i=1;i<=N-1;i++)
{
n+=w[i][0];
n+=w[i][N-1];
b+=2 ;
}
m=n/b;
return m;
}
main()
{ int a[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1};
int i,j;
double s;
clrscr();
printf("***** The array *****\n");
for(i=0;i<N;i++)
{for(j=0;j<N;j++)
printf("%4d",a[i][j]);
printf("\n");
}
s=fun(a);
printf("***** The result *****\n");
printf("The sum is %lf\n",s);
}

\-----------------------------------------------------------------------------------------------------------------------------------\
下面的是 书上的程序

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define N 5


double fun (int w[][N])
{ int i,t=0;
double s=0;
for(i=0;i<N;i++)
{s+=w[i][0]+w[i][N-1]; t+=2;}
for(i=1;i<N-1;i++)
{s+=w[0][i]+w[N-1][i]; t+=2;}
s=s/t;
return s;
}
main()
{ int a[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1};
int i,j;
double s;
clrscr();
printf("***** The array *****\n");
for(i=0;i<N;i++)
{for(j=0;j<N;j++)
printf("%4d",a[i][j]);
printf("\n");
}
s=fun(a);
printf("***** The result *****\n");
printf("The sum is %lf\n",s);
}

\--------------------------------------------------------------------------------------------------------------------------------\
我真看不出 着两个程序有什么区别 ,但是结果咋 就不一样呢????
书上的是3.375
我的是 94.2500000

[此贴子已经被作者于2006-8-23 20:52:29编辑过]

搜索更多相关的解决方案: 二维  include  double  平均值  

----------------解决方案--------------------------------------------------------
以下是引用mp3aaa在2006-8-23 20:50:32的发言:

23、 程序定义了N*N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:
求出数组周边元素的平均值并作为函数值返回给主函数中的s。
则返回主程序后s的值应为:3.375。
着是 我自己写的
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define N 5
double fun (int w[][N])
{
int i,b=0;
double m=0,n=0;
for(i=0;i<=N;i++)
{
n+=w[0][i];
n+=w[N-1][i];
b+=2 ;
}
for(i=1;i<=N-1;i++)
{
n+=w[i][0];
n+=w[i][N-1];
b+=2 ;
}
m=n/b;
return m;
}
main()
{ int a[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1};
int i,j;
double s;
clrscr();
printf("***** The array *****\n");
for(i=0;i<N;i++)
{for(j=0;j<N;j++)
printf("%4d",a[i][j]);
printf("\n");
}
s=fun(a);
printf("***** The result *****\n");
printf("The sum is %lf\n",s);
}

\-----------------------------------------------------------------------------------------------------------------------------------\
下面的是 书上的程序

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define N 5


double fun (int w[][N])
{ int i,t=0;
double s=0;
for(i=0;i<N;i++)
{s+=w[i][0]+w[i][N-1]; t+=2;}
for(i=1;i<N-1;i++)
{s+=w[0][i]+w[N-1][i]; t+=2;}
s=s/t;
return s;
}
main()
{ int a[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1};
int i,j;
double s;
clrscr();
printf("***** The array *****\n");
for(i=0;i<N;i++)
{for(j=0;j<N;j++)
printf("%4d",a[i][j]);
printf("\n");
}
s=fun(a);
printf("***** The result *****\n");
printf("The sum is %lf\n",s);
}

\--------------------------------------------------------------------------------------------------------------------------------\
我真看不出 着两个程序有什么区别 ,但是结果咋 就不一样呢????
书上的是3.375
我的是 94.2500000


[此贴子已经被作者于2006-8-23 20:58:38编辑过]


----------------解决方案--------------------------------------------------------
一样的啊 大哥 反正都是加  我又没有加重复  都是加周边的元素啊
----------------解决方案--------------------------------------------------------
先加后加 还不是一样吗
----------------解决方案--------------------------------------------------------
<=和&lt;的区别。
----------------解决方案--------------------------------------------------------
以下是引用soft_wind在2006-8-23 21:05:01的发言:
<=和<的区别。

对哇 我咋没想到呢!!!
但是还有个问题,不就是《=吗 为什么 结果的差距怎么打呢?


----------------解决方案--------------------------------------------------------
越界访问错误是无法预料的。
----------------解决方案--------------------------------------------------------

哦 哦哦
多谢了


----------------解决方案--------------------------------------------------------
我没看懂
----------------解决方案--------------------------------------------------------
i&lt;=5,其实数组最大只能到a[0][4],第二个i&lt;=N-1让n多执行了一次循环加
----------------解决方案--------------------------------------------------------
  相关解决方案