1樓:嘣蝦咔啦咔
cd不加&,是因為他們倆 表示陣列名,就等同於地址了,不需要再加地址符。 scanf在用的時候後面 可以直接寫陣列名,也可以寫地址符加陣列名加陣列元素個數。 ab明顯不對,他倆越界了。
c表示第一次迴圈的時候是 第5個元素的地址,但是隨後m值又自加1,所以第二次迴圈的時候還是5, d表示第m個元素的地址。
2樓:veket的小號
for裡有改變m的m--
所以不需要++
排除 ac
m 從 n-1 到1
m+1是 n到2
長度n的陣列 下標是 0 ~ n-1
x[m+1] 即x[n] 就越界了
3樓:匿名使用者
&x[m]這個知道吧
其實它等價於x+m
而且在編譯的時候就是將&x[m]轉化為x+m當然這樣也可以&m[x], 是不是很怪,看了上面的轉化,再想想這樣用,其實也是可以的。
x是指標,int型的 故x+m是以x當前所指地址向後偏移m*4個位元組,這裡的是是sizeof (int)來的
學會指標,理解這會比較容易的。
4樓:eve軌跡
x為陣列名,代表x[0]的地址,x+(m++)即x[m++]的地址,x+m即x[m]的地址
求助一道c語言關於陣列的題。
5樓:匿名使用者
#include
int main()
printf("before:\n");
for(i=0;i<4;i++)
printf("after t:\n");
for(i=0;i<4;i++)
}for(i=0;i<4;i++)
printf("after replacement:\n");
for(i=0;i<4;i++)
}for(i=0;i<4;i++)}
6樓:匿名使用者
#include
void print_a(int a[4])}int main()
;printf("源資料:\n");
print_a(a);
printf("轉置後:\n");
for(i=0;i<4;i++)
}print_a(a);
for(i=0;i<4;i++)
}printf("替換後:\n");
print_a(a);}
7樓:葉玉曉
a[4][4]=,,,,,,,,,;
for(i=0;i<4;i++)}
c語言的一道題目關於陣列的
8樓:不是會員的使用者
把if中的=改成==,另外你的第二個if後面多個分號if(i == a[j])
if(j == 10)
=是賦值,之後用變數本身的值參與條件的運算,也就是隻要不是0條件都會成立,兩個當然都會輸出了
另外你的程式邏輯貌似有點點問題,等我寫一份給你看看#include
void main()
;int i;
int j = 0;
scanf("%d", &i);
while(i != a[j] && j < 10)if(i == a[j])
else if(j == 10)}
一道c語言陣列的題,求c高手幫忙
9樓:匿名使用者
#include
main()
,*p; //定義了一個10個元素的陣列,每個元素int型別,還定義了一個p指標.
p=a; //p指標指向陣列a
printf (「%x\n」,p); //輸出把p的地址以十六進位制顯示,
printf (「%x\n」,p+9);//p+9表示移動9個int型別的距離的地址之後換成十六進位制顯示,
}如果你的確想列印地址,使用%p 格式就行了,預設是16進製表示,效果和%x一樣,但是省去了部分操作。
若一個int型別的變數佔2個位元組,
第一個printf語句輸出的是194,則第二個printf語句的輸出結果是
這個題的意思是問你第一個元素到最後一個元素總共佔了多少個位元組
0x194 +2* 9=
自己算吧,懶得換算了。
194表示十六進位制的陣列首地址,一個int型別佔用2個位元組,那麼移動9個元素的距離就是2*9個位元組,然後顯示地址就是了。
這個深入到記憶體裡型別的表示格式,你記住+1表示移動一個元素型別的距離就行了。
10樓:匿名使用者
0x194+0x12=0x1a6
11樓:
194 + 2 * 9 = 212
一道c語言陣列的題目。求指點
12樓:貌似風輕
題目要求的是編寫函式void find_odd(int odd,int n)
函式的目的是把相應的奇數放入odd陣列中
在main函式輸出,而不是find_odd函式中輸出#include
#define n 100
void find_odd(int odd,int n)main()
;int n,i;
scanf("%d",&n);
find_odd(a,n);
printf("%d^3=",n);
for(i=0;i 13樓:匿名使用者 把你的程式改了許多如下: #include int find_odd(int odd,int n)for(i=0;i }void main() 14樓: 這個程式有錯吧。 1.首先一點是主函式寫int main(),寫void main()的話是錯的,至於為什麼就不要深究了吧,以後會懂的,現在給你說你也搞不懂,這就是規律,沒辦法。 2.你這個地方肯定就是想從鍵盤輸入一個數,而這個數也就是陣列的長度。但是這樣是不可以的,靜態陣列定義的時候必須指出它的大小,不然肯定會出錯,你這個地方使用了一個變數,所以就不行。 想讓陣列的長度可變的話可以使用動態陣列。如果是動態陣列的話,你可以這樣寫。 1)首先,你需要對應型別的一個指標,因為陣列使用時傳遞的也是陣列首地址,就像int a,a是一個陣列,然後寫a的話,a就是一個指標,其實你會發現陣列和指標很像。你可以把陣列理解為一個帶尾巴的指標。。。 2)然後用malloc函式就可以了。 就像這樣吧:int *a; a=(int *) malloc (sizeof(int )*m); 這樣就可以了 一道關於c語言陣列的問題,求大神 !!!
20 15樓:蝌蚪聰明頂呱呱 顯然錯誤,a[i]=a[i+1];有問題,等於 x 的數被後面替換了,但是後面的那個數字還在那裡。例子: 1,3,4,5一串數字,要刪除3 到i=1,x=3也就是 a[1]==3的時候,陣列變成了1,4,4,5 最後也還是這樣,於是有了兩個重複的數字。 解決辦法: 辦法1:再建一個陣列,把符合的數字扔進去; 辦法2:把後面的數字順次前移。 include define count 4 人的數目可在此更改 功能 計算出最後剩餘的人的編號,從0到count 1引數 peopele 存放人的陣列 count 共有多少個人 now 當前數到了幾,從0開始,不斷往上增加left 當前還剩下幾人沒 離開 範圍為1 count返回 返回值為最後剩餘... 第一個是把整型資料格式輸出為浮點型資料,這個主要還是看float的小數點有效位數,我也不太記得了,6 7位,是哪一個我也不記得了。第二個是把浮點型資料格式輸出為整形,就會把小數點部分省略,記住這裡不是數學上的四捨五入,不管多大的小數部分都會扔掉。輸出是什麼你應該知道的,執行 就ok 第一句自不必多說... include double cube double num int main void double cube double num 輸出結果是 1 3 20 2 3 20 3 20 3 4 3 20因為你用的是值傳遞所以在子函式中是不會改變實參順序的 這個程式的書寫有錯誤,在 void swap...求助一道C語言題
關於c語言的一道題,關於C語言的一道題
關於C語言的一道題,請問關於C語言的一道題