LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1106|回复: 7

设int a[3][4];先为数组输满数据,再将该数组周边的元素输出(元素输出次序不限)。(用C语言

[复制链接]
发表于 2004-1-16 00:44:51 | 显示全部楼层 |阅读模式
俺才学了点皮毛,就考这么难的,连题都看得不大懂。
各位帮帮忙,多谢!
发表于 2004-1-16 09:42:20 | 显示全部楼层
什么叫数组周边的元素
发表于 2004-1-16 10:36:45 | 显示全部楼层
是一个矩阵,3行4列
example:   1  2  3  4
           5  6  7  8
           9  10 11 12
添满的意思就是添加12个int元素,
输出嘛,比如1,你就要输出2,5,6,比如2,输出1,3,5,6,7,
这样,大概意思就是这样吧,不知道说的对不对哦,具体code还是
自己写吧,这样才有提高嘛,嘿嘿~
 楼主| 发表于 2004-1-16 10:54:36 | 显示全部楼层
多谢,回去想想
发表于 2004-1-16 15:46:37 | 显示全部楼层
给你矩阵设置两个随机数,
一个是0-2,一个是0-3,就可以随机的输出啊。
发表于 2004-1-16 16:26:29 | 显示全部楼层
这个算法实现不难,选定的数组元素是a[j],它周围的元素就是a[j+1],a[j-1],a[i+1][j],a[i-1][j]。但是要注意边界。超出边界的元素不能取。
 楼主| 发表于 2004-1-20 13:16:38 | 显示全部楼层
#include<stdio.h>
main()
{
int i,j,a[3][4];
for (i=0;i<3;i++){
for (j=0;j<4;j++)
   scanf("%d",&a[j]);}   /*输入数据*/

for (i=0;i<3;i++)      /*输出数据*/
for (j=0;j<4;j++){

if (i==0&&j==0){
   printf("a[0][0]:");
   printf("%d\t%d\t%d\n",a[j+1],a[i+1][j],a[i+1][j+1]);}

if (i==2&&j==0){
  printf("a[2][0]:");
  printf("%d\t%d\t%d\n",a[i-1][j],a[i-1][j+1],a[j+1]);}

if (i==0&&j==3){
  printf("a[0][3]:");
  printf("%d\t%d\t%d\n",a[j-1],a[i+1][j],a[i+1][j-1]);}

if (i==2&&j==3){
  printf("a[2][3]:");
  printf("%d\t%d\t%d\n",a[i-1][j],a[i-1][j-1],a[j-1]);}

if (i==0&&j!=0&&j!=3){
  printf("a[%d][%d]:",i,j);
  printf("%d\t%d\t%d\t%d\t%d\n",a[j-1],a[i+1][j-1],a[i+1][j],a[i+1][j+1],a[j+1]);}

if (i==2&&j!=0&&j!=3){
  printf("a[%d][%d]:",i,j);
  printf("%d\t%d\t%d\t%d\t%d\n",a[j-1],a[i-1][j-1],a[i-1][j],a[i-1][j+1],a[j+1]);}

if(i!=0&&j==0&&i!=2){
  printf("a[%d][%d]:",i,j);
  printf("%d\t%d\t%d\t%d\t%d\n",a[i-1][j],a[i-1][j+1],a[j+1],a[i+1][j+1],a[i+1][j]);}

if(i!=0&&j==3&&i!=2){
  printf("a[%d][%d]:",i,j);
  printf("%d\t%d\t%d\t%d\t%d\n",a[i-1][j],a[i-1][j-1],a[j-1],a[i+1][j-1],a[i+1][j]);}

if(i!=0&&j!=0&&i!=2&&j!=3){
printf("a[%d][%d]:",i,j);
printf("%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n",a[i-1][j-1],a[i-1][j],a[i-1][j+1],a[j-1],a[j+1],a[i+1][j-1],a[i+1][j],a[i+1][j+1]);}
}
}
这样不知对不对??
发表于 2004-1-20 15:05:43 | 显示全部楼层
上面只适合a[3][4],如果a[4][5]就得改
从得知维数i,j,
求所求数周边最多8个数地址,kj501那样
分别判断每个数的行和列是否越界,越界就省去
这样就没有维数的限制
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表