C语言二维数组用1到n的数字填充对角线
我有一个用0填充的2d数组,我试图用1到n的数字填充主对角线,这是主代码:C语言二维数组用1到n的数字填充对角线,c,C,我有一个用0填充的2d数组,我试图用1到n的数字填充主对角线,这是主代码: #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { srand(time(NULL)); int m, n, i, j; printf("Number of rows and columns:"); scanf("%d"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(NULL));
int m, n, i, j;
printf("Number of rows and columns:");
scanf("%d", &n);
int a[n][n];
for (i = 0; i < n; i++)
for(j = 0; j < n; j++)
a[i][j] = rand() % 1;
printf("The matrix is:\n");
for (i = 0; i < n; i++)
{
printf(" \n ");
for(j = 0; j < n; j++)
{
printf(" %d\t ", a[i][j]);
}
}
}
我试图做的是手动填充对角线,但这不是我想要做的。我想让它自动填充。我需要在不使用任何函数的情况下执行此操作。最简单的方法是在用零填充矩阵后添加此部分
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
arr[i][j] = ((i == j) * (i + 1));
}
}
for (i = 0; i < n; i++)
arr[i][i] = i + 1;
最简单的方法是在用零填充矩阵后添加此部分
for (i = 0; i < n; i++)
arr[i][i] = i + 1;
对角线位于[i][i],因此单圈就足够了。但在您的程序中,它并不像您所说的那样用零填充。您所说的rand%1是什么意思?这不是零。@AbdelAzizAbdelLatef此表达式始终等于0。@EugeneSh。你错了。数组中填充了零。rand%1是一种生成0的奇怪方式。为什么不直接使用0呢?对角线位于[i][i],所以一个循环就足够了。但在您的程序中,它并不像您所说的那样用零填充。您所说的rand%1是什么意思?这不是零。@AbdelAzizAbdelLatef此表达式始终等于0。@EugeneSh。你错了。数组中填充了零。rand%1是一种生成0的奇怪方式。为什么不直接使用0呢?