gpt4 book ai didi

c - 创建一个二维数组,用户给出数组的大小 (n*n),并且数组用随机数 [1-10] 填充,无需 malloc

转载 作者:行者123 更新时间:2023-11-30 20:57:26 25 4
gpt4 key购买 nike

这是一个用随机数填充数组的函数。 n 是用户输入,p[n][n] 是我尝试创建的数组。我想使用 2 个名为 fillPin2d 的函数, showPin2d 以便一个函数用随机数填充数组,另一个函数打印数组。程序一直要求输入一个整数,但它不显示我创建的数组。

#include<stdio.h>
#include<stdlib.h>

void fillPin2d(int n,int p[n][n])
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
p[i][j]=rand()% 11;

}
void showPin(int n,int p[n][n])
{
int i,j;

for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%d\n",p[i][j]);
}
}
}

main() {
int n;

do {
printf("Enter an integer n>5: \n");
scanf("%d",&n);
}while(n<=5);

int p[n][n];
fillPin2d(n,p);
showPin(n,p);
system("pause");
}

最佳答案

你的问题是以“while”为条件的。你想要一个n>5,所以你应该在“while”中输入“n<=5”,这样如果n实际上大于5,你就可以打破“while”。

多说一句,使用malloc比只使用int p[n][n]要好。因为当你使用int p[n][n]时,p的内存是在堆栈上分配的,如果n太大,可能会导致堆栈溢出。而如果使用malloc,空间就在堆上,你可以通过使用realloc()轻松改变p的大小。

在很多 IDE 上(例如 Visual Studio),int p[n][n] 的语法是错误的,IDE 会告诉你给出一个常量而不是变量。

我认为您可以查看更多讨论:

  1. Creating Dynamic Array without malloc
  2. Dynamic arrays in C without malloc?

关于c - 创建一个二维数组,用户给出数组的大小 (n*n),并且数组用随机数 [1-10] 填充,无需 malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59476030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com