<狀況1>:為什麼//處會使程式失敗
#include <stdio.h>
main()
{
int i;
int j;
int a[2][3];
int b[2][3];
int c[2][3] = {{0, 0, 0}, {0, 0, 0}};
printf("請輸入矩陣a的值\n");
for(i = 0; i < 2; i++)
for(j = 0; j < 3; j++)
scanf("%d", &a[i][j]);
printf("請輸入矩陣b的值\n");
for(i = 0; i < 2; i++)
for(j = 0; j < 3; j++)
scanf("%d", &b[i][j]);
printf("請輸入k值(1代表相加, 2代表相減)\n");
int k; //
scanf("%d\n", &k); //
if(k == 1)
{
for(i = 0; i < 2; i++)
for(j = 0; j < 3; j++)
c[i][j] = a[i][j] + b[i][j];
printf("+-------------+\n");
for(i = 0; i < 2; i++)
{
for(j = 0; j < 3; j++)
printf("%3d ", c[i][j]);
printf("\n");
}
}
else
{
if(k == 2)
{
for(i = 0; i < 2; i++)
for(j = 0; j < 3; j++)
c[i][j] = a[i][j] - b[i][j];
printf("+-------------+\n");
for(i = 0; i < 2; i++)
{
for(j = 0; j < 3; j++)
printf("%3d ", c[i][j]);
printf("\n");
}
}
}
}
<狀況2>:反之,為什麼//處更改後會成功?
#include <stdio.h>
main()
{
int i;
int j;
int a[2][3];
int b[2][3];
int c[2][3] = {{0, 0, 0}, {0, 0, 0}};
printf("請輸入矩陣a的值\n");
for(i = 0; i < 2; i++)
for(j = 0; j < 3; j++)
scanf("%d", &a[i][j]);
printf("請輸入矩陣b的值\n");
for(i = 0; i < 2; i++)
for(j = 0; j < 3; j++)
scanf("%d", &b[i][j]);
printf("請輸入k值(1代表相加, 2代表相減)\n");
int k = 1; //
if(k == 1)
{
for(i = 0; i < 2; i++)
for(j = 0; j < 3; j++)
c[i][j] = a[i][j] + b[i][j];
printf("+-------------+\n");
for(i = 0; i < 2; i++)
{
for(j = 0; j < 3; j++)
printf("%3d ", c[i][j]);
printf("\n");
}
}
else
{
if(k == 2)
{
for(i = 0; i < 2; i++)
for(j = 0; j < 3; j++)
c[i][j] = a[i][j] - b[i][j];
printf("+-------------+\n");
for(i = 0; i < 2; i++)
{
for(j = 0; j < 3; j++)
printf("%3d ", c[i][j]);
printf("\n");
}
}
}
}
你看狀況1的
scanf("%d\n", &k);
拿掉\n試試看, 這是不必要的....
想了解完整的, 要知道scanf裡面的字串叫做 Format Specifier, 完整的規範
www.cplusplus.com scanf