C 語言(VC 環境)的陣列部分存在問題。

發布 科技 2024-08-20
15個回答
  1. 匿名使用者2024-02-01

    這個想法是正確的,但它沒有被正確複製。

    1.求最大和最小的數字。

    2.將 a[0] 換成 maximum; a[10] 以最少的交換。

    1.陣列的輸出需要乙個接乙個地輸出,即所有值的輸出在迴圈中完成。

    2.陣列在編譯時沒有越界檢查,這也是程式設計時需要特別注意的問題。

    printf("%d",a[10]);

    這句話只能輸出 a[10],int a[10],有效陣列的下標是 9,a[10] 越界,輸出的是隨機數。

  2. 匿名使用者2024-01-31

    a[m]=max;

    a[n]=min;

    不能直接分配,而應與相應的位置交換。

    例如,和 swap(a[m],a[0]);

    swap(a[n],a[9]);

    如何實現 swap 自己編寫。

  3. 匿名使用者2024-01-30

    #include

    void main()

    int a[10];

    int min,max,i;

    int m=0,n=0;

    for(i=0;i<10;i++)

    scanf("%d",&a[i]);

    min=a[0];

    max=a[0];

    for(i=0;i<10;i++)

    if(a[i]>=max)

    max=a[i];

    m=i;else if(a[i]<=min)min=a[i];

    n=i;a[m]=a[0];

    a[0]=max;

    a[n]=a[9];

    a[9]=min;

    for(i=0;i<10;i++)

    printf("%d",a[i]);

    if (i<9) printf(" ");

    printf("");

    lz,你的最後乙個命令 printf("%d",a[10]);就是把數字列印在陣列的10號位置,陣列只有0-9,10一定是垃圾資料!!

    a[m]=max;

    a[n]=min;此命令是將乙個值直接分配給 a[m] 作為 max,該值最初是 max...。你做得太過分了。

    如果有什麼不明白的地方,就問我。

  4. 匿名使用者2024-01-29

    確實問題有問題,格式控制不正確。

  5. 匿名使用者2024-01-28

    解 (2) 得到 (1) i < n*m ,(2) (i-i%4) 4 ,(3) i%4

    沒錯。 包裹這個地方,有點問題。

    問題是 if(i%3==0) 是換行符,i = 0 改為 if((i+1)%4==0)。

  6. 匿名使用者2024-01-27

    要了解 C 語言中陣列的概念,請通過 for 迴圈輸出列印陣列。

  7. 匿名使用者2024-01-26

    C 陣列的問題非常簡單。

    在 C 中,陣列是構造的資料型別。 乙個陣列可以分解為多個陣列元素,這些元素可以是原始資料型別或構造型別。 因此,根據陣列元素的不同型別,可以將陣列仔細劃分為數值組、字元陣列、指標陣列和結構陣列等各種類別。

  8. 匿名使用者2024-01-25

    當你定義乙個陣列時,會分配相應的記憶體量,如果你使用越界的下標,編譯時不會出現錯誤,但實際上這塊記憶體可能沒有分配,這意味著你可能會踩到其他變數的位址,造成很多邏輯錯誤。

    你說這是乙個堆疊溢位,它發生在 C C++ 中。 一般來說,編譯器在進入堆疊之前會保護記憶體(如堆疊引數、函式位址等),但屬於堆疊的資料,如a、b等,是無法保護的。

  9. 匿名使用者2024-01-24

    C++ 陣列具有資料越界,但編譯器在使用時不會檢測它們是否越界,但它們可能會在程式執行時因資料溢位而崩潰。

    為組定義長度的意義在於,它提前為陣列分配空間,以便其他變數不會使用它。

    int a[1] = 是錯誤的,因為你告訴了編譯器陣列的長度,但你給了它乙個太長的元素,所以它會給出乙個錯誤,int a= 是正確的,因為他的意思是編譯器會根據資料初始化的長度為陣列分配乙個大小!

    假設指向 b 的指標與指向 a[11]] 的指標相同,您的意思是 a[11] 的位址與 b 的位址相同嗎?如果是這樣,B確實會被修改,所以資料溢位是有風險的。

  10. 匿名使用者2024-01-23

    首先,這種程式設計是有風險的,因為你定義的陣列是沒有初始化的,這意味著你的陣列中的任何資料,無論是字母還是數字,都是不確定的,放在實際的工程專案中很容易造成記憶體洩漏或溢位。

    其次,strlen 獲取字串的長度,其中不包括結束字元 0,因此第乙個輸出 9 意味著陣列中正好有 9 個元素。

    如果將陣列初始化為 0,則列印應為 11,因為陣列是從 0 開始計數的。

  11. 匿名使用者2024-01-22

    首先,第乙個問題其實是用來定義陣列長度的,如果你int a=使得陣列的長度等於3,這種方式就是在初始化時確定陣列的長度。 但是如果你int a[10],這樣,即使你在初始化的時候不能確定陣列中的值,只要你能確定它的長度,因為以後很多函式會要求你傳入陣列的長度,第二個問題:你說的情況會發生,系統也不會幫你做任何事情, 這取決於您在分配指標時要小心。

  12. 匿名使用者2024-01-21

    這兩個問題可以一起回答,給定長度的資料組的定義主要是為了防止問題2中的情況發生,問題2中的情況是小的,在簡單程式的情況下,程式稍微複雜一點,陣列的長度沒有定義, 而且出錯的概率非常高。一般來說,在開發過程中無法確定陣列的長度,最好在程式中使用記憶體管理功能來請求記憶體,而不是使用固定長度的陣列,只是注意不要洩漏記憶體。

  13. 匿名使用者2024-01-20

    答案是d

    aarray'a','b','c','d','e','f','\0'

    比 b 陣列多乙個字串終止符'\0'

    所以選項 a、b 和 c 都是錯誤的。

  14. 匿名使用者2024-01-19

    你可以用C類比,因為C++繼承了很多C語法,(1)定義了乙個函式。

    void fun(int a[10]),在 main 函式中,int b[10]; 直接呼叫fun(b); 這相當於函式 fun 的引數 a 在陣列 b 的起始位址處建立乙個陣列,即 b 是乙個陣列 a,它們是同乙個陣列,這已經等價於乙個引用。

    2)定義乙個int b[10];陣列,b 是乙個位址,是陣列的起始位址,是乙個常量,所以函式是用指標型別 return 定義的,例如 int * fun (int a[10]); 當然,需要注意的是,呼叫函式後空間會釋放,可能返回的位址不再存在。

    3)陣列賦值不能直接b=a,因為陣列本身的變數位址是乙個常量,比如int a[10],a的值已經是常量了,不能改變,如果要賦值陣列的值,使用函式,或者寫乙個迴圈a[i]=b[i], i++ 自己;

  15. 匿名使用者2024-01-18

    1. void func(ref int a)2. int func(){

    3. mencpy(b, a, sizeof(a));記憶體的副本。

    直接 b=a; 否,當陣列名稱用作左值(在賦值運算子的左側)時,它是乙個常量,不能賦值。

相關回答
8個回答2024-08-20

房東你好! ~

#include >>>More

7個回答2024-08-20

您可以將陣列的指標強制轉換為雙位元組短型別。 >>>More

6個回答2024-08-20

arr[i]=i;通過for迴圈將arr的值從0賦值到9,然後arr[i]的值不變,執行下乙個for迴圈,k的值仍為0 ha,不變。 >>>More

12個回答2024-08-20

步驟1:開啟VC++;

步驟2:選擇“檔案”>“新建>工作區>空白工作區”,然後給這個工作區乙個名字,選擇儲存路徑,OK! >>>More

8個回答2024-08-20

你可以用一維陣列來模擬,也可以自己計算下標,因為不管你定義多少維,在記憶體中都是線性的,比如C儲存在安星中,也有基於列的儲存,比如fortran語言,你定義多維,但是編譯器幫你計算下標, 所以你可以用一維陣列自己模擬,比如用int a[10]模擬int b[5][2],a[0]是b[0][0] a[5]是b[2][1] a[9]是b[4][1] >>>More