配列[2][2]の行を交換できません。配列外のことをしているようです。(私はこのコードが狂った(狂った)と思う
1)印刷します。2) 交換しようとしています(問題はほぼそこにあると考えています)。3)もう一度印刷します。(ただし、要素の値は以前とは異なります)
#include <stdio.h>#
#include <stdlib.h>
#include <time.h>
#define RANGE 99
int main()
{
int l1,l2;
int i,j;
int arr[2][2]; // There should be arr[3][3]. FOR MORE
int temp_line[2]; // DETAILS SEE THE ACCEPTED ANSWER.
srand((unsigned)time(NULL));
/* Filling in */
for (i = 0; i <= 2; i++)
{
for (j = 0; j <= 2; j++)
arr[i][j] = 1 + rand()%RANGE;
printf("\n");
}
/* Displaying */
for (i = 0; i <= 2; i++)
{
for (j = 0; j <= 2; j++)
printf("%2.d ", arr[i][j]);
printf("\n");
}
printf("\nEnter the No. of lines to swap them.\n"); // Remember about the 0th element.
scanf("%d%d", &l1, &l2); // The 1-st and the 2-nd lines.
/** Swapping lines. PROBLEM! */
for (j = 0; j <= 2; j++)
temp_line[j] = arr[l1][j]; // Remember the 1-st required line.
for (j = 0; j <= 2; j++)
arr[l1][j] = arr[l2][j]; // Copying each element of the 2-nd required line 1-st one.
for (j = 0; j <= 2; j++)
arr[l2][j] = temp_line[j]; // Copying "Remembered" 1-st required line.
/* Displaying */
for (i = 0; i <= 2; i++)
{
for (j = 0; j <= 2; j++)
printf("%2.d ", arr[i][j]);
printf("\n");
}
return 0;
}