為什么這個(gè)表達(dá)式把所有元素都求和了?而不是將一條對(duì)角線求和?
#include <stdio.h>
int main()
{
??? int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
??? int i,j;
??? int sum=0;
??? for(i=0;i<3;i++)
??? {
?????? for(j=0;j<3;j++)
?????? {
?????????? if(i==j);
?????????? {
??????????????? sum=sum+arr[i][j];
?????????? }
?????? }
??? }
?? ?
??? printf("對(duì)角線元素之和是:%d\n",sum);
??? return 0;?? ?
}
輸出:45
2018-11-08
樓上兩個(gè)都是對(duì)的;
if(i==j);?
//這里加分號(hào)就把if執(zhí)行結(jié)束了,并沒(méi)有進(jìn)行判斷。
//因?yàn)閟um+=arr[i][j]總是被執(zhí)行,所以所有數(shù)都被加了。
如果按i==j這個(gè)判斷執(zhí)行的吧,只加了下標(biāo)[0][0]的1 ,[1][1]的5 , [2][2]的9?
所以一樓幫你把,[0][2]的3和[2][0]7加上了。
2018-11-04
幫你改正確了,如下
#include <stdio.h>
int main()
{
??? int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
??? int i,j;
??? int sum=0;
??? for(i=0;i<3;i++)
??? {
?????? for(j=0;j<3;j++)
?????? {
?????????? if(i==j)
?????????? {
??????????????? sum=sum+arr[i][j];
?????????? }
?????? }
??? }
??? sum=sum+arr[0][2];
??? sum=sum+arr[2][0];
??? printf("對(duì)角線元素之和是:%d\n",sum);
??? return 0;?? ?
}
2018-10-24
要去掉末尾的分號(hào)