[英]Unexpected output while printing 2 array (matrix)
output 僅打印矩陣的少數元素,以錯誤的順序我認為打印循環有問題但無法弄清楚
#include <stdio.h>
int main()
{
int x=0, y=0;
int a[x][y];
printf("enter the number of rows in first matrix:\n");
scanf("%d", &x);
printf("enter the number of columns in first matrix:\n");
scanf("%d", &y);
printf("enter elements of first matrix\n");
for (int i = 0; i < x; i++)
{
for (int j = 0; j < y; j++)
{
printf("enter element %d %d\n", i, j);
scanf("%d", &a[i][j]);
}
}
for (int p = 0; p < x; p++)
{
for (int q = 0; q < y; q++)
{
printf("%d\t", a[p][q]);
}
printf("\n");
}
return 0;
}
您在接收矩陣的大小之前聲明矩陣(您是變量 x 和 y)。 在您的代碼中,矩陣被聲明為 a[0][0]。
解決方案:
#include <stdio.h>
int main() {
int x, y;
printf("enter the number of rows in first matrix:\n");
scanf("%d", &x);
printf("enter the number of columns in first matrix:\n");
scanf("%d", &y);
int a[x][y];
printf("enter elements of first matrix\n");
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
printf("enter element %d %d\n", i, j);
scanf("%d", &a[i][j]);
}
}
for (int p = 0; p < x; p++) {
for (int q = 0; q < y; q++) {
printf("%d\t", a[p][q]);
}
printf("\n");
}
return 0;
}
您正在使用 0 行和 0 列初始化二維數組。
您需要將int a[x][y]
向下移動到scanf("%d", &y);
#include <stdio.h>
int main() {
int x, y;
printf("enter the number of rows in first matrix:\n");
scanf("%d", &x);
printf("enter the number of columns in first matrix:\n");
scanf("%d", &y);
int a[x][y];
printf("enter elements of first matrix\n");
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
printf("enter element %d %d\n", i, j);
scanf("%d", &a[i][j]);
}
}
for (int p = 0; p < x; p++) {
for (int q = 0; q < y; q++) {
printf("%d\t", a[p][q]);
}
printf("\n");
}
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.