為什么這個(gè)算出來的答案是8
#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++)
? ? {
? ? ? ? if(arr[i][j]%2==1)
? ? ? ? sum +=arr[i][j];?
? ? }?
? ? printf("對(duì)角線元素之和是:%d\n",sum);
? ? return 0; ? ?
}
2018-05-26
for(j=0;j<3;j++)
? ? ? ?{if ((i==j)||(j==(3-i-1)))
? ? ? ?sum=sum+arr[i][j];
? ? ? ?}
2018-05-26
你沒有給j賦初值,這樣只有代表行的“i”在動(dòng),代表列的“j”根本“不存在”。
簡(jiǎn)單來說就是你這樣沒有做到遍歷數(shù)組,而且因?yàn)閖沒有賦初值所以j的值是計(jì)算機(jī)隨即分配的。要記住一點(diǎn)是:計(jì)算機(jī)的內(nèi)存內(nèi)在你沒有聲明變量的時(shí)候也是有數(shù)值的,你聲明變量(如int i;)只是讓計(jì)算機(jī)把這個(gè)內(nèi)存空間分配給你的i,但里面是有一個(gè)內(nèi)存里本來的數(shù)的,這個(gè)數(shù)沒人知道是多少。你要i的數(shù)值,就要先給他賦值,比如i=0;否則直接用來打印i結(jié)果是一堆亂數(shù)。
如果還不明白,你可以試試在自己的編譯器上int i,j,k;然后直接printf打印i,j,k。出來的數(shù)絕對(duì)不是你想的0.
明白計(jì)算機(jī)如何存儲(chǔ)數(shù)據(jù)對(duì)編程很重要,建議你買教材去看看。推薦國(guó)外的 c prime plus,國(guó)內(nèi)教材一般寫的比較亂,如果有老師教可以用,自學(xué)的話就不太好用了。
2018-05-23
不是很清楚,可能因?yàn)槟愕膉沒有賦初值,而且你這算的也不是對(duì)角線元素和啊。