為什么答案是45
為什么答案是45
#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(arr[0][0]||arr[0][2]||arr[1][1]||arr[2][0]||arr[2][2])
? ? ? ? ? ? {
? ? ? ? ? ? ? ? sum+=arr[i][j];
? ? ? ? ? ? }
? ? ? ? }
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? }
? ? printf("對角線元素之和是:%d\n",sum);
? ? return 0;? ??
}
2019-02-22
判斷語句if()括號里的條件表達式寫得不對。你想的是把你全部列出來的元素累加起來,但是實際上if()語句執(zhí)行的情況是,判斷括號里的表達式的結(jié)果是真還是假,因為你寫的是邏輯或,所以只要有一個值不為0那么表達式的結(jié)果就是真,那么就會執(zhí)行if()后面的語句,所以你這樣寫的結(jié)果是把所有的數(shù)組元素都累加了一遍。
可以觀察對角線元素的下標的特點,一個是行等于列,一個是行加列等于2,所以可以把if()語句寫成這樣: