C語言動態陣列我的輸入應該在輸出「請輸入元素值」後邊啊,為什麼他會推後彈出

2022-03-15 15:34:36 字數 3831 閱讀 5479

1樓:擁抱

你把第乙個scanf括號裡的\n去掉就行了。

scanf("%d\n",&len)裡,雙引號裡面的內容是要原封原樣地輸入才行的,所以這個「\n」你也必須輸入進去,這個scanf的輸入才算完成。為什麼你輸入的時候,輸入4然後回車,你繼續輸入1 2 3 4呢?就是因為第乙個scanf還在等待最後那個「\n」的輸入呢!

等你把1 2 3 4輸入完了,再敲入乙個回車也就是「\n」的時候,第乙個scanf語句才結束,然後後面的scanf接著直接從「輸入快取區」讀取到了你前面已經輸入了的1 2 3 4,所以就直接執行完了第乙個迴圈,接著執行後面的第二個迴圈。

scanf括號裡,雙引號裡面不要寫多餘的東西進去,如果寫了的話,輸入的時候必須照樣輸入才行,這個和printf不一樣,要切記!

(如有幫助,煩請採納,謝謝!)

2樓:旅初彤

你輸出的時候沒有加換行吧?你再寫個迴圈,也就是把你輸出陣列元素值的那個迴圈放在外面,再之前加乙個換行(迴圈外面)

3樓:匿名使用者

scanf("%d\n",&len);

改為scnaf("%d",&len);

試試再說

c語言動態陣列問題

4樓:濮方雅

這句改下:p=(int *)malloc(m*n*sizeof(int));

還有個地方:

scanf("%d",p+(j+i*n)*2);改成:

scanf("%d",p+(j+i*n));

有些編譯器int好像是4位元組,所以最好用sizeof,另外算指標的位址的時候它會自動加上去的,不用你手工乘以2

5樓:星月小木木

#include

#include

int main()

for(i=0;i

return 0;}

6樓:記住一座城

scanf("%d",p+(j+i*n)*2); //為什麼輸入搞得這麼複雜

動態陣列可以這樣開闢

int (*p)[n] = (int (*)[n])malloc(m*n*4) p[m][n]就是單個元素

或者int **p;

p = (int **)malloc(m*4);

然後為指標分配空間,p[m][n]就是單個元素

7樓:匿名使用者

修改後:

#include

#include

int main()

}for(i=0;i

free(p);

scanf("%d",&i);

return 0;}

8樓:匿名使用者

#include

#include

int main()

}for(i=0;i

free(p);

scanf("%d",&i);

return 0;

}改了下,其實好像沒有必要搞這麼複雜

用c語言寫了乙個輸入乙個一維陣列的函式,如何在後來寫的函式中呼叫該陣列?

9樓:欽獨特

同樣的**為什麼我輸出的時候最後乙個數字是亂碼呢

c語言用動態陣列解決輸入幾個數並輸出其中最小值的問題結果總是輸出-33686019

10樓:

#include

#include

void main()

for(i = 1; i < l; ++i)    /*因為判斷條件是i p[i])    /*i下標不需要加1,否則當i達到l-1時,下標l就越界了*/

}printf("最小值為 %d\n", p[0]);

return;}

11樓:匿名使用者

if(p[0] > p[i+1])

改為if(p[0] > p[i])

如何使用c語言在動態陣列中手動輸入乙個二維陣列的值

12樓:顧北

c++強答一波

#include

using namespace std;

int main()

cout << "請輸入你需要的矩陣a的數值" << endl;

for (s = 0; s < i; s++)}cout << "請輸入你需要的矩陣b的數值" << endl;

for (s = 0; s < i; s++)}cout << "a的矩陣為" << endl;

for (s = 0; s < i; s++)cout << endl;

}cout << "b的矩陣為" << endl;

for (s = 0; s < i; s++)cout << endl;

}system("pause");}

13樓:卡婭茨

c語言是不支援動態陣列的,你可以建立乙個比較大的陣列,或者用連結串列來儲存。

c語言 動態陣列 輸入輸出不一致,問題出在哪?

14樓:

array1 = (int *) calloc(num, sizeof(*array1)); 這是明顯的錯誤。num是元素個數不錯,而sizeof(*array1)應該是元素所佔有的位元組數。你的array1宣告的是int *型指標,sizeof的()中就應該寫int,你寫*array1是啥意思?

如果array1已經是有效指標那可以,表示其中的內容,而現在array1=0,是無效指標,在後來的編譯器下連編譯都過不了的!

15樓:匿名使用者

printf("%-4d", *array1 + i);

=》printf("%-4d", *(array1 + i) ); 或者

=》printf("%-4d", array1[i]);

array2同理

array1 == array2 判斷的是兩個指標 指向的位址是否相同

你是分別用calloc申請空間,兩個指標的值當然會不同,即使陣列內容相同。

c語言,動態分配記憶體(二維陣列)輸入資料時為什麼會彈出對話方塊?求網友指點?

16樓:岔路程式緣

for(i=0;i{ for(j=0;j改成:

for(i=1;i{ for(j=1;j因為你根本沒有給i=0分配位址,所以出錯。

修改後的程式如下:

#include

#include

int main(void)

{int **a,i,j;

int n;

scanf("%d",&n);

a=(int**)malloc((n+1)*sizeof(int*));

for(i=1;i<=n;i++)

a[i]=(int*)malloc((n+1)*sizeof(int));//分配記憶體的時候是

for(i=1;i

17樓:匿名使用者

你在輸入的時候迴圈用的是:

for(i=1;i

for(j=1;j

輸出的時候是:

for(i=0;i

for(j=0;j

訪問到了並沒有分配記憶體的指標:a[0]。

把輸出的迴圈改成和輸入一樣就能解決。

C語言的輸入輸出,c語言是通過什麼來輸入輸出的?

char a a int b 20 printf d,d a b,b a a a a a 1 這個怎麼輸出,最好是有步驟的說,謝謝。輸出66,34 計算a 1 因為a a asicl碼值是65 此時a 66輸出 a b,b a 逗號表示式的返回值是最右邊的 而最右邊的是賦值式,它的值就是被賦值的結果...

c語言程式設計有整數a,b,c,由鍵盤輸入,請輸出其中最大

例 輸入三個整數,輸出最大數和最小數。main else if maxc min c 本程式中,首先比較輸入的a,b的大小,並把大數裝入max,小數裝入min中,然後再與c比較,若max小於c,則把c賦予max 如果c小於min,則把c賦予min。因此max內總是最大數,而min內總是最小數。最後輸...

c語言中如何輸入數輸出這個數的字元

從鍵盤輸入乙個字串,輸出小寫字母並統計個數用c語言怎麼寫拜託幫幫忙,int a 10 i,n 0 gets a for i 0 i 如果是0 9,可以使用 i 0 i為輸入的數字 include main 注意不要超過256 c語言裡,輸入乙個字元,輸出乙個數字該怎麼寫?1 首先需要知道bai字元本...