急~~~请问如何用c语言将给定二维数组加上一个全部为1的外框?

大哥大姐帮我说下,急~~~请问如何用c语言将给定二维数组加上一个全部为1的外框??

如a[3][3]=2 3 4
2 1 3
4 8 9
用c语言将上数组变成a[5][5]=1 1 1 1 1
1 2 3 4 1
1 2 1 3 1
1 4 8 9 1
1 1 1 1 1
急~~跪谢~~~
最新回答
怀念与爱无关

2024-11-30 03:31:15

我的一个习惯:首先给你一个思路:
(1)你有一个已知二维数组:OldAarry[m][n].(m,n是常量)。
(2)加一个“1”字的外套,就表示会变成新的二维数组:NewArray[m+2][n+2].此时你可以用“1”来初始化整个新数组。
memset(NewArray,"1",sizeof(NewArray));//此函数memset为C库函数,你不会用的话,可查MSDN。
(3) 现在将旧的数组填充进来。如下
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
NewArray[i][j]=OldArray[i-1][j-1];
(4) 现在你可以打印你的新数组NewArray[m+2][n+2]了。
当然,你会打印你的旧数组,就一定会打印新数组了,我就是写具体代码了。

当然了,还有一种笨方法,就是按一类一类的元素一个一个填入,此法效率太低了,不可能用。所以不说了。
回答完毕。
朵朵奇葩向阳开#

2024-11-30 01:22:10

//算法主要是根据数组判断打印.

#include <stdio.h>
#include <math.h>

#define m 3
#define n 3

main()
{
int a[m][n]={{1,2,3},{4,5,6},{7,8,9}};

for(int i=0;i<=m+1;i++)
{ for(int j=0;j<=n+1;j++)
{
if(i==0||i==m+1)
printf("1");
else if(j==0||j==n+1)
printf("1");
else printf("%d",a[i-1][j-1]);
}
printf("\n");
动物界:所有的生物

无脊椎动物:环节动物门:蚯蚓;线形动物门:蛔虫;软体动物门:蜗牛;节肢动物门:蜻蜓
脊椎动物门:其他

脊椎动物门:
鱼纲:鲫鱼,黄鱼
两栖纲:青蛙
爬行纲:蛇
鸟纲:鹅
哺乳纲:鲸,猩猩

鲫鱼:鲤形目鲤科鲫属
黄鱼:鲈形目石首鱼科黄鱼属

鲸:鲸目(鲸这个名称太笼统,只能分到这)
猩猩:灵长目猩猩科(你这里的猩猩指的是三种还是一种?)
紫珺婳浅

2024-11-30 07:24:40

void Fun(int **p, int row, int col, int **q)
{
for (int i=0; i<row+2; i++)
{
for (int j=0; j<col+2; j++)
{
if ((i==0)||(j==0)||(i==row+1)||(j==col+1))
*(int *)q = 1;
else
{
*(int *)q = *(int *)p;
p++;
}
q++;
}
}

}
int main()
{
int a[3][3] = {2, 3, 4, 2, 1, 3, 4, 8, 9};
int b[5][5];
memset(b, 0, 5*5*sizeof(int));
Fun((int **)a, 3, 3, (int **)b);
}
//原数组的行和列都定义好了,想重新定义它的行和列示不可能的了。
//我是重新定义一个数组。
萌兽

2024-11-30 03:31:34

#include <stdio.h>
main ()
{
int a[3][2]; /*这是原数列,我没赋值,你用的时候注意赋值*/
int b[5][4]; /*新数列*/
int i,j;

for(i=0;i<5;i++)
for(j=0;j<4;j++)
if(i==0||i==4||j==0||j==3) /*4、3由5、4分别减去1得,意在右、下边框*/
b[i][j]=1;
for(i=0;i<5;i++)
{for(j=0;j<4;j++)
printf("%d",b[i][j]);
printf("\n");}
}
一念花开

2024-11-30 05:47:00

//算法主要是根据数组判断打印.

#include <stdio.h>
#include <math.h>

#define m 3
#define n 3

main()
{
int a[m][n]={{1,2,3},{4,5,6},{7,8,9}};

for(int i=0;i<=m+1;i++)
{ for(int j=0;j<=n+1;j++)
{
if(i==0||i==m+1)
printf("1");
else if(j==0||j==n+1)
printf("1");
else printf("%d",a[i-1][j-1]);
}
printf("\n");
}

}