iT邦幫忙

0

2*3矩陣相加問題

<狀況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");
			
			}
		
		
		}		
	
	}
			
}
	

https://ithelp.ithome.com.tw/upload/images/20200717/20128427TbyHSVW8Ro.png

<狀況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");
			
			}
		
		
		}		
	
	}
			
}
	

https://ithelp.ithome.com.tw/upload/images/20200717/201284274z96BzURwb.png

憤怒鳥 iT邦新手 5 級 ‧ 2020-07-17 22:58:22 檢舉
我的問題是:想讓<狀況1>成功,可是要怎麼做
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
glj8989332
iT邦研究生 4 級 ‧ 2020-07-17 23:59:36
最佳解答

你看狀況1的

scanf("%d\n", &k);

拿掉\n試試看, 這是不必要的....

想了解完整的, 要知道scanf裡面的字串叫做 Format Specifier, 完整的規範
www.cplusplus.com scanf

憤怒鳥 iT邦新手 5 級 ‧ 2020-07-20 08:25:25 檢舉

了解了,謝謝

glj8989332 iT邦研究生 4 級 ‧ 2020-07-21 16:14:07 檢舉

憤怒鳥 如果有幫到你, 請再給個最佳解答, 謝謝.

我要發表回答

立即登入回答