1樓:匿名使用者
可以將i 理解成行,baij 理解成du
列,a[i][j]和a[j][i]取值不同zhi比如,假設一個3維陣列
dao(你的是5x5),數內值分別為容:
1 2 3
4 5 6
7 8 9
迴圈中,當i=0時,a[i][j]取值為1 2 3,a[j][i]取值為1 4 7,根據這個來理解結果的不同吧
c語言的for迴圈的條件語句中 i++; 和 ++i; 有什麼區別?
2樓:々了了
表示式三的位置嗎?
那樣就沒有區別了
不過奉勸lz不要看++i 和i++在printf中得例子,例如 pirntf("%d",++i);
這個例子不恰當,涉及的東西更多,只需明白++的先後就可以了
3樓:匿名使用者
沒區別~
給個有區別的例子
a[i++] = 1
a[++i] = 1
前面相當於 a[i] = 1; i ++;
後面相當於 i ++; a[i] = 1;
4樓:匿名使用者
for迴圈如果後面沒有再用到i沒有區別
真要要說的話++i效率比較高
i++ 相當於 tmp = i, tmp++, i = tmp++i相當於 i = i + 1
5樓:
在迴圈中通常是在迴圈變數更新時用到i++; 或++i; 此時二者用法完全一樣沒有區別;
只有在考試時才會用到二者的真正區別吧。
6樓:匿名使用者
i++是先用i的值,在自增。++i是用i先自增,在使用自增後的值。
7樓:作風格
i++是先加再呼叫,++i是先呼叫再加
8樓:淘氣的峰
i++先執行再加
++i先加在執行
int i=1;
printf("%d",++i); //輸出是2——————————————
int i=1;
printf("%d",i++); //輸出是1
9樓:匿名使用者
for迴圈中確實是沒有區別的(功能實現上)!
10樓:匿名使用者
i++先比較i的值然後++
++i是先++然後比較i的值
c語言:a[i][j]=a[i-1][j-1]+a[i-1][j]之後為什麼不能直接printf而還要一個迴圈
11樓:
完全可以,只是你沒這個幹。如下**。。
#include
main()
; while(n<1 || n>16)
for( i=0; i,置1
else
printf("%5d",a[i][j]);
}printf("\n"); }}
你的原**中,迴圈是從 1開始的,所以如果直接printf會導致第一列丟失,需要對**修改下。
12樓:匿名使用者
直接printf("%5d",a[i][j]);
輸出的是什麼? 當然只有一個數! 而他這裡需要輸出n個數。所以必須用迴圈了!
13樓:匿名使用者
應該是你的題目讓你輸出形式為楊輝三角,那個迴圈是讓這個程式的輸出和楊輝三角一樣,你可以把那個迴圈去了,在執行下程式,看看他倆的區別就知道了。
為什麼c語言中*(a+i)+j能表示a[i][j]的地址
14樓:
int a[3][4]; //假設定義一個3行4列的二維陣列,所謂二維陣列就是陣列的陣列
a[0]、a[1]、a[2]是陣列a的元素,而這個元素是陣列,而不是我們通常認為的基本資料型別的資料
所以*(a+i)就是獲取陣列a中第i個元素,等價於a[i],而a[i]本身又是一個包含有4個int型數值的陣列,a[i]是這個一維陣列的陣列名,我們知道陣列名的本質是一個地址,是陣列首元素地址,所以
*(a+i)+j就是表示下表第i行的第j個元素的地址了。所以,
*(a+i)+j表示的含義是元素a[i][j]的地址,也可以用a[i]+j來表示。
15樓:聽不清啊
int a[2][3]=;
printf("%d ",*(*(a+1)+2));
以上的引用能夠輸出60
因為a是二維陣列名,所以它是指向指標的指標(二級指標)。
*(a+1)就是a[1],它是一個一維陣列,也是一維陣列的首地址(指向一維陣列首元素的指標)。*(a+1)+2就是a[1][2]的地址,*(*(a+1)+2)就是a[1][2]。
16樓:匿名使用者
*(a+0)取出a[0]的值
a[0]的元素又是一個一維陣列
因此*(a+0)取出的就是這個一維元素的首地址那麼*(a+0)+0表示: 一維陣列a[n]中, a+0陣列元素a[0]的地址
*(a+0)+1表示一維陣列的1號陣列元素的地址
c語言中下面**a[i][j]=0什麼意思??
17樓:莫染進媼
a是一個二維陣列
a[i][j]是取第i行第j列的值。
這句的意思就是把
a中第i行第j列的值,賦值給變數sum.
18樓:寇印枝俎煙
inta[11][20],定義的是二維陣列,a[i][j]表示第i+1行,第j+1列的陣列元素;
a[i][j]=0;
表示對這個陣列元素賦值。
c語言中,a[i][j]=a[i*130+j]什麼意思?
19樓:匿名使用者
a是一個二維
陣列bai,假設du
大小為[x][y],那麼他在zhi記憶體佔用的地址則為dao x*y*型別專大小;
a[i][j]是指這個陣列的某行某屬列的元素,在記憶體中表示為從a[0][0]開始 記憶體地址加上(i*x+j)*型別大小 那個位置的陣列元素;
a[i*130+j]則是指從a[0][0]開始 記憶體地址加上(i*130+j)*型別大小 那個位置的陣列元素。
希望對你有幫助!
補充下,c++的指標很神奇,a[i*130+j]可以表示為 *(a+i*130+j);可以試試。
20樓:堅決的k日主義
語法錯誤
a要麼是一個二維陣列
要麼是一維陣列
c語言中:for(i=0;i<3;i++) for(j=0;j<3;j++)是什麼意思 30
21樓:四舍**入
是一個雙重迴圈。
其中for(j=0;j<3;j++)是for(i=0;i<3;i++)的內嵌迴圈。
先迴圈第一個fori=1j=1,2,3i=2j=1,2,3i=3j=1,2,3一共3*3執行9次。
for遍歷0到9之間的數字,for迴圈由迴圈體及迴圈的終止條件兩部分組成。
22樓:會飛的小兔子
c語言中:for(i=0;
i<3;i++)for(j=0;j<3;j++)是一個雙重迴圈。
for(i=0;i<3;i++)
其中for(j=0;j<3;j++)是for(i=0;i<3;i++)的內嵌迴圈
先迴圈第一個fori=1j=1,2,3i=2j=1,2,3i=3j=1,2,3一共3*3執行9次、
for遍歷0到9之間的數字
for(;i<10;i++)
printf("\n");
//此時i的值是10
printf("i=%d\n",i);
擴充套件資料for迴圈體外定義變數
#include
intmain()
printf("\n");
printf("i=%d\n",i);
intj=0;
for(;j<10;)
printf("\n");
printf("j=%d\n",j);
return0;}
23樓:
這是一個雙重迴圈。
for(i=0;i<3;i++)
其中for(j=0;j<3;j++)是for(i=0;i<3;i++)的內嵌迴圈;
先迴圈第一個for i=1 j=1,2,3 i=2 j=1,2,3 i=3 j=1,2,3一共3*3執行9次。
for迴圈由迴圈體及迴圈的終止條件兩部分組成,for迴圈其在各種程式語言中的實現與表達有所出入,但基本為以c語言和pascal語言代表的兩種形式。
擴充套件資料
for迴圈中的變數可以是一個也可以是多個,不要侷限於一個變數處理到底,那樣有時會很單調,當程式適合把多個變數組成迴圈時,用多個for語句來表示就是有些浪費了。
for迴圈中語句可以為語句體,語句體外加大括號"{}"將參加迴圈的語句括起來。 for迴圈的三個表示式都是逗號表示式,這樣來說,其實每個分號表示式可以由幾個逗號表示式構成,中間用",」隔開,最後以「;」結束。
24樓:匿名使用者
迴圈從3開始,每次j減1,當j=0時,迴圈條件不滿足,因此只巡檢3次;
這種寫法很不好,不推薦使用。
25樓:
for(j=3;j;j--)
寫為for(j=3;j>0;j--) 這樣可以讓人更明白意思
意為從3開始迴圈,每次自減1,到0不滿足條件就跳出迴圈了
26樓:孤獨一客人
這是一個雙重迴圈
格式for(i=0;i<3;i++)
27樓:匿名使用者
這是一個雙重迴圈,通常我們會在迴圈中加個大括號
for(i=0;i<3;i++)
其中i從0到2,i取一個值,j就從0取到2,共迴圈9次
C語言迴圈語句中i 和 i有什麼區別
假設i 6 那麼i 的值為6,但執行完i 後i的值就變成7了 i的值為7,因為 i是這樣執行的 先自增後取值 簡單的來說,i 和i 在單獨使用時,就是 i i 1。而a i,相當於 i i 1 a i 而a i 相當於a i i i 1 如果實在搞不明白 怎麼回事,那也不是什麼天塌下來的事。因為a ...
C語言的for迴圈語句,C語言中迴圈語句有哪些?
呵呵,是可以執行的。for rooster 0 rooster 100 rooster for hen 0 hen 100 hen for chick 0 chick 因為只有到這裡才有分號。用 是在多個分號出現的語句中。for while if 等語言語法中都有 若有多條語句必須用 擴起來 的有效...
c語言while語句中if else 語句中while語句
等同於加上括號 while 條件1 else 實際上時這樣的,條件1為假什麼都不執行,條件2為假執行else 求高手解釋 在c語言中,if語句中不是不能用break嗎?怎麼資料裡用了?可以用,因為if外面是while迴圈,break是用來退出while迴圈的。如果外面沒有while迴圈,只有if語句...