mamaaini 发表于 2023-12-8 16:12:19

想要边界初始化为-1

为什么不能实现边缘为-1
#include<stdio.h>

int main()
{
    int n,i,j,c,d;
    scanf("%d%d%d",&n,&i,&j);
    int a;
    for(c=0;c<n+2;c++)
    {
      for(d=0;d<n+2;d++)
      {
         if(c==0||c==n+1||d==0||d==n+1)
         {
               a=-1;
         }
         else
         {
               a=0;
         }
      }
    }
   
   for(c=0;c<n+2;c++)
    {
      for(d=0;d<n+2;d++)
      {
            printf("%d ",a);
      }
      printf("\n");
    }
    return 0;
}

FishC 发表于 2023-12-8 16:13:25

在C语言中,数组的下标是从0开始的,所以不能直接将边界初始化为-1。如果你想要将数组的边界初始化为-1,可以将数组的所有元素初始化为-1,然后再将特定位置的元素修改为其他值。

例如,如果你想要创建一个大小为n x n的二维数组,并将边界初始化为-1,可以使用以下代码:

#include <stdio.h>

int main()
{
    int n, i, j;
    scanf("%d%d%d", &n, &i, &j);
   
    int array;// 创建一个大小为n x n的二维数组
   
    // 将所有元素初始化为-1
    for (int row = 0; row < n; row++) {
      for (int col = 0; col < n; col++) {
            array = -1;
      }
    }
   
    // 修改特定位置的元素
    array = 0;
   
    // 输出数组
    for (int row = 0; row < n; row++) {
      for (int col = 0; col < n; col++) {
            printf("%d ", array);
      }
      printf("\n");
    }
   
    return 0;
}

这样,数组的边界就被初始化为-1了。请注意,这里只是将边界上的元素修改为-1,并不是真正意义上的将边界初始化为-1。真正意义上的边界是指数组的第一行、最后一行、第一列和最后一列。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 想要边界初始化为-1