| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 562 人关注过本帖
标题:为什么运行结果是225而不是310?
只看楼主 加入收藏
席卷天下
Rank: 1
等 级:新手上路
帖 子:29
专家分:6
注 册:2010-10-24
结帖率:81.82%
收藏
已结贴  问题点数:20 回复次数:9 
为什么运行结果是225而不是310?
下列程序定义了N*N的二维数组,并在主函数中赋值。请编写函数fun(),函数的功能是求出数组周边元素的平方和并作为函数值返回给主函数中的s。例如:若a数组中的值为
a=0 1 2 7 9
  1 11 21 5 5
  2 21 6 11 1
  9 7 9 10 2
  5 4 1 4 1
则返回主程序的s的值为310。
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define N 5
int fun(int w[][N])
{ int i,j,k,s;
  s=k=0;
  for(i=0;k<2;i=N-1,k++)   /*计算第0行和第N-1行元素的平方和*/
    for(j=0;j<N;j++)
      s+=w[i][j]*w[i][j];
  k=0;
  for(j=0;k<2;j=N-1,k++)   /*计算剩余元素第0列和第N-1列的平方和,结果为所有元素平方之和*/
    for(i=1;i<N-2;i++)
      s+=w[i][j]*w[i][j];
  return s;
}
int main()
{ int a[N][N]={0,1,2,7,9,1,11,21,5,5,2,
        21,6,11,1,9,7,9,10,2,5,4,1,4,1};
  int i,j;
  int 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 : %d\n ",s);
  return 0;
}
主函数是给定的,fun函数是我编写的。哪位大侠能告之。
搜索更多相关主题的帖子: 主程序 元素 
2011-02-05 18:33
『点点滴滴』
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:168
专家分:1035
注 册:2007-7-9
收藏
得分:7 
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define N 5
int fun(int w[][N])
{ int i,j,k,s;
  s=k=0;
  for(i=0;k<2;i=N-1,k++)   /*计算第0行和第N-1行元素的平方和*/
    for(j=0;j<N;j++)
      s+=w[i][j]*w[i][j];
  k=0;
  for(j=0;k<2;j=N-1,k++)   /*计算剩余元素第0列和第N-1列的平方和,结果为所有元素平方之和*/
    for(i=1;i<=N-2;i++)     //范围
      s+=w[i][j]*w[i][j];
  return s;
}
int main()
{ int a[N][N]={{0,1,2,7,9},{1,11,21,5,5},
{2,21,6,11,1},{9,7,9,10,2},{5,4,1,4,1}};
  int i,j;
  int s;
  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 : %d\n ",s);
  return 0;
}
2011-02-05 18:56
席卷天下
Rank: 1
等 级:新手上路
帖 子:29
专家分:6
注 册:2010-10-24
收藏
得分:0 
点点滴滴,你的代码除了没有使用清屏函数clrscr(),还有就是数组a[N][N]的初始化采用花括号外,其实和我的代码没什么两样,看来你是不知道为什么会是225而不是310了。你贴出来的代码我已经运行过了,还是225。
2011-02-05 20:08
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:7 
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define N 5
int fun(int w[][N])
{ int i,j,k,s;
  s=k=0;
  for(i=0;k<2;i=N-1,k++)   /*计算第0行和第N-1行元素的平方和*/
    for(j=0;j<N;j++)
      s+=w[i][j]*w[i][j];
  k=0;
  for(j=0;k<2;j=N-1,k++)   /*计算剩余元素第0列和第N-1列的平方和,结果为所有元素平方之和*/
    for(i=1;i<N-1;i++)
      s+=w[i][j]*w[i][j];
  return s;
}
int main()
{ int a[N][N]={0,1,2,7,9,1,11,21,5,5,2,
        21,6,11,1,9,7,9,10,2,5,4,1,4,1};
  int i,j;
  int s;
  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 : %d\n ",s);
  return 0;
}
看看吧,你求和的范围弄错了,少加了两个数

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-02-05 20:11
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
程序第十三行

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-02-05 20:11
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:7 
程序第十三行

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2011-02-05 20:22
席卷天下
Rank: 1
等 级:新手上路
帖 子:29
专家分:6
注 册:2010-10-24
收藏
得分:0 
对了,是我太粗心了,谢谢黑侠,谢谢诸位!
2011-02-05 20:25
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define N 5
int fun(int w[][N])
{ int i,j,s;
  s=0;
  for(j=0;j<N;j++)
  {
      s+=w[0][j]*w[0][j]+w[N-1][j]*w[N-1][j];
  }
  for(i=1;i<=N-2;i++)
  {
      s+=w[i][0]*w[i][0]+w[i][N-1]*w[i][N-1];
  }
  return s;
}
int main()
{ int a[N][N]={0,1,2,7,9,1,11,21,5,5,2,
        21,6,11,1,9,7,9,10,2,5,4,1,4,1};
  int i,j;
  int 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 : %d\n ",s);
  return 0;
}
2011-02-05 20:29
yuan19840111
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-11-29
收藏
得分:0 
int fun(int w[][N])
{ int i,j,k,s;
  s=k=0;
  for(i=0;k<2;i=N-1,k++)   /*计算第0行和第N-1行元素的平方和*/
    for(j=0;j<N;j++)
      s+=w[i][j]*w[i][j];
  k=0;
  for(j=0;k<2;j=N-1,k++)   /*计算剩余元素第0列和第N-1列的平方和,结果为所有元素平方之和*/
    for(i=1;i<N-2;i++)            这行改为for(i=1;i<N-1;i++)  9的平方和2的平方忘加了你
      s+=w[i][j]*w[i][j];
  return s;
}
2011-02-05 20:42
『点点滴滴』
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:168
专家分:1035
注 册:2007-7-9
收藏
得分:0 
唉,悲剧的很
2011-02-05 21:09
快速回复:为什么运行结果是225而不是310?
数据加载中...
 
   



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

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