請幫忙解釋C語言中的陣列程式謝謝

發布 科技 2024-02-05
17個回答
  1. 匿名使用者2024-01-25

    include 包含標頭檔案。

    void main() main 函式。

    int a[8];定義乙個由 0 到 8 的 9 個元素組成的陣列。

    int i,j,t;定義了三個變數,其中 i 和 j 用於迴圈,t 用於交換資料。

    printf("請輸入 8 個整數:");輸出:“請輸入 8 個整數:”

    for(i=0;i<8;我++)這個for迴圈用於將8個輸入數字儲存到陣列中,例如:i=0,a[0]=2;i=1,a[1]=4;i=2,a[2]=8;i=3,a[3]=0;i=4,a[4]=1;i=5,a[5]=3;i=6,a[6]=8;i=7,a[7]=6;當 i 加到 8 並且 i 不再小於 8 時,它會跳出 for 迴圈並進入下一條指令,即下乙個 for 迴圈。

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

    for(i=1;i<8;我++)這裡的兩個for迴圈是用來比較這8個數字的大小,當i=1,j=1,判斷a[0]>a[1]?如果是這樣,則 t=a[0],a[0]=a[1],a[1]=t。 在第乙個 for 迴圈中,當 i=1 時,第二個 for 迴圈控制 a[0] 與 a[1] 進行比較,將 a[1] 與 a[2]...

    將 A[6] 與 A[7] 進行比較,完成第一次比較大小排序。 在第乙個for迴圈中,當i = 2時,第二次比較完成,i控制8個大比較的完成,最後的完成將8個數字的順序從小到小排列。

    for(j=1;j<=8-i;j++)

    if(a[j-1]>a[j])

    t=a[j-1];

    a[j-1]=a[j];

    a[j]=t;

    printf("排序結果:");輸出“排序結果”。

    for(i=0;i<8;我++)這個 for 迴圈控制 8 個數字的輸出。

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

    我不知道你是否明白了。

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

    這是將陣列的元素從小到大排序的演算法之一。 它的工作原理是首先通過迴圈找到最大的數字,並將其放入陣列的最後乙個元素,然後通過第二個迴圈找到第二大元素,然後將其放入陣列的倒數第二個元素中,依此類推,到最後乙個迴圈時, 陣列中的所有元素都已排序,從而達到了我們的目的。

    程式首先使用 i 作為外迴圈變數來確定陣列中的所有元素一次。

    內環j是判斷和交換剩餘的未排序元素,內環的迴圈控制條件非常重要,即j<8-i; 這可確保隨著外部迴圈數量的增加,內部迴圈會減少,因為要排序的陣列元素更少。

    希望對你有所幫助!

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

    J 的迴圈一次只能將最大的乙個帶到陣列的末尾。

    總共有 8 個元素,所以你需要再新增乙個迴圈,你最多需要攜帶它 8 次。

    例如,陣列 a[8]=;

    第一次,它變成了。

    第二次變成了。

    第三次變成了。

    第四個變成了。

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

    這就是冒泡法。 j 是用來讓兩個相鄰的數字比較的,把較大的數字放在最後,比如我現在輸入29835671,先讓 2 和 9 比較,如果 2 很大,那麼 9 和 2 就會倒過來,顯然這不是真的,那又怎樣,然後讓 9 和 8 比,顯然 9 更大, 所以把9換到第三位,再把9和3比較一下,顯然也是9大,再換位,依此類推,9就排在最後。而這一輪迴圈之後,應該28356719新的數字順序,並且應該使用這個程式從小到大排列乙個8位數字,顯然這個迴圈無法達到目的,即乙個迴圈是不夠的,所以需要用雙迴圈來控制, 所以需要 i 來控制我上面介紹的多次過程(即 j 控制的週期),只有這樣才能將這個數字從小到大排列。

    希望對你有所幫助。

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

    j 是控制迴路,其工作原理與 i 相同。

    這是排序方法,如果我沒記錯的話,就是氣泡排序,所以讓我們自己來看看排序方法。

    您還可以在每個 for 迴圈後列印陣列的值,您將能夠看到如何按氣泡排序。

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

    你給乙個程式來問你不明白的東西,如果你這樣問,你不知道你會問什麼。

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

    這本書是對的,你可能把 array[10] 理解為乙個陣列元素,但它只是把乙個 10 個元素的陣列作為乙個引數,而不是乙個陣列元素,明白嗎?

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

    左邊的書說,陣列的元素不能作為引數使用,不能理解陣列不能作為引數。

    其實,這本書太曲折了,讓人看不懂。

    請記住,陣列作為函式引數可以通過以下方式使用:

    1. type fun(type arr,int size);

    fun(type *arr, int size);

    fun(鍵入 arr[constant], int size);

    其中,1 2 方法最常用,第三種方法不常用,一般不寫常量,因為他們不關心編寫編譯器。 另乙個問題也來自你,你可以看解釋了解詳情。

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

    陣列元素不能用作引數,但陣列可以,在本例中為陣列。

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

    在電腦程式中,通常可能發生三種型別的錯誤:

    1)語法錯誤:這是指程式包含不符合語法規則的語句,例如錯誤地編寫關鍵字或符號(將printf寫成print,將陣列元素引用寫成a(2)等),使用未定義的變數,括號不配對等。 包含語法錯誤的程式無法編譯,因此它們不會執行。

    2)邏輯錯誤:這是指程式中沒有語法錯誤,通過編譯和連線可以生成可執行程式,但程式的結果不符合預期的錯誤。例如,整數變數的值超出了有效值範圍,在 scanf 函式中省略了位址運算子 &,陣列元素引用中的下標越界,並且在應該使用時不使用復合語句。

    因為有邏輯錯誤的程式仍然可以執行,所以是一種難以發現和除錯的程式錯誤,在程式設計和除錯中應特別注意。

    3)系統錯誤:這是指程式沒有語法錯誤和邏輯錯誤,但程式的正常執行取決於某些外部條件的存在,如果缺少這些外部條件,程式將無法執行。例如,對已經排序的陣列執行半拆分搜尋方法,但實際資料沒有排序,需要在程式中開啟已有檔案,但該檔案因其他原因丟失等。

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

    本段用於轉換 10 個整數 a 的陣列(按初始順序 1、2、3、.)。10) 以相反的順序排序。該組的核心是乙個 while 迴圈,它交換刻度兩端的元素,然後靠近中間。

    請看下面**的說明:

    初始化變數:

    a 是乙個由 10 個整數組成的陣列,初始值為 i,這是乙個從 0 開始的索引。

    j 是從 9 開始的索引。

    t 是乙個臨時變數,用於在交換過程中儲存值。

    while loop:只要 i 小於 j,就執行以下操作:

    將 a[i] 的值儲存在 t 中。

    將 a[j] 的值賦值為 a[i]。

    將 t 的值(以前為 a[i])賦值給 a[j] 並增加 i 的值。

    減小 j 的值。

    在迴圈中,這些運算使 i 和 j 更接近中間,直到 i 不再小於 j。 此時,陣列 a 中的元素已經以相反的順序排列。

    使用 for 迴圈以相反的順序列印陣列。

    所以,整個過程就是通過不斷交換陣列兩端的元素來實現陣列的反序。 請注意,您的**存在一些語法問題,以下是更正後的版本:

    #include

    int main(void) ;

    int i = 0;

    int j = 9;

    int t;

    while (i < j) {

    t = a[i];

    a[i] =a[j];

    a[j] =t;

    i++;j--;

    for (i = 0; i < 10; +i) {printf("%d ",a[i]);

    return 0;

    執行此修復程式後,輸出為:

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

    這 ** 只是交換陣列 a 中下標為 i 和 j 的元素的值,並且不會以相反的順序對陣列 a 本身進行排序。 如果要實現陣列的反序,則需要使用其他演算法或方法。 下面是以相反順序使用陣列下標的示例**:

    複製 int n = 10;

    int afor(int i = 0; i < n / 2; i++)int t = a[i];

    a[i] =a[n - i - 1];

    a[n - i - 1] =t;

    for(int i = 0; i < n;i++)cout “這個**首先通過乙個for迴圈交換陣列A中元素的前半部分和後半部分的位置,然後以相反的順序輸出陣列A。 正如你所看到的,逆序實現的核心是交換元素的位置,而不僅僅是交換元素的值。

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

    printf 似乎是錯誤的,它需要兩邊的雙引號。 它是乙個轉移字元,這意味著它是乙個換行符。

    該程式允許您輸入乙個包含 5 個整數資料的陣列並輸出它們。

    請輸入,請輸出。

    是程式讓它輸出出中文指令,並不是說這兩句話的輸出可以讓你進行輸入和輸出操作,輸入和輸出都是通過scanf和printf實現的。

    兩個for迴圈的作用在程式中得到了明確的解釋。

    執行只有乙個結果,即以下行。 上面的行是除錯時輸入的內容,而不是輸出。

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

    它似乎沒有輸出。

    22“酒吧。 它是以 5 個數字讀取的。

    然後輸出含義 (1) 主程式條目 (2) 將 x 設定為 0-5 整數陣列整數變數 k

    4) 一次讀取 5 個數字 (6) 輸出 5 個數字。

    for 用於為陣列賦值。

    scanf 是讀取的資料。

    執行的結果為 1。

    因為第一行最初是由您輸入的。

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

    目的:輸入乙個陣列,然後輸出該陣列;

    但我不知道為什麼最後乙個是-22

    2 1 定義了乙個整數陣列 x[5],k

    輸入資料。 輸出資料。

    3 你寫錯了第二個,應該是。

    輸出資料是。

    並請輸入資料立即點選5。

    4for 語句是迴圈結構。

    scanf 播放將資料傳輸到計算機,您的程式有很多錯誤,我修改了它並執行了它,以下是正確的。

    #include

    voidmain()

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

    在整數陣列中輸入 5 個數字,然後輸出,但這裡需要更改 for(k=0; k<5;k++)

    否則你會犯乙個像上面的-22這樣的錯誤

    printf

    請輸入您的資料:");

    for(k=0;k<5;k++)

    scanf"%d",&x[k]);這裡是將每個資料輸入到陣列中的迴圈形式,scanf() 是輸入函式,每個步驟的意思對程式來說很清楚,建議大家看一下數字,這個太基礎了,不好解釋:)

  17. 匿名使用者2024-01-09

    這個問題巧妙地利用了陣列 c 中的元素來計算陣列 s 中四個數字 1234 的出現次數。

    程式完成後,最終結果為 4332,即 1 出現 4 次,2 和 3 各出現 3 次,4 出現 2 次。

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

    c[s[i]]+

    當 i=0 時,s[i] 等價於 s[0],數字實際上是 1,相當於 c[1]++,因此 c 陣列中的第乙個元素自然從 0 變為 1

    同理,當 i=2 時,s[2] 的內容為 2,相當於 c[2]++,因此 c 陣列中的第二個元素自然從 0 變為 1,數字 1 和 2 各出現一次。

    以此類推,當 i=3 且 i=4 時,c[4]++ 被執行了兩次,表示數字 4 出現了兩次。

    再往下推,思路已經很清楚了,背後的**也不算太難。

    這個問題的關鍵在於c[s[i]]+**一行,你按照我說的思路,根據迴圈變數的附加值,代入數字,你自然就明白了。

    c[5]= 將 c 陣列中的所有元素清除為 0

相關回答
14個回答2024-02-05

我同意我樓上說的加{}來劃分級別,但是,其實沒有{},看看你發的這個**的縮排關係,也可以看出if和else的對應關係。 >>>More

18個回答2024-02-05

首先,我會明確地告訴你,選項 c 是正確的,選項 A strcpy 是乙個字串複製函式,它可以將字串 “China” 複製到字元陣列 str2 中並覆蓋 str1 中的 “beijing”,選項 c strcat 是乙個字串連線函式,可以將 “China” 連線到“beijng”的後面。 因此,C. >>>More

14個回答2024-02-05

在 VisualStudio 2013 中編寫和除錯 C 語言程式的步驟: 1.開啟 [檔案] - 新建 - 專案以開啟“新建專案”視窗。2. 在[模板]、[名稱]、[位置]和[解決方案名稱]中選擇[Visual C++] Win32控制台應用程式,可以根據需要填寫。 >>>More

13個回答2024-02-05

main()

intm=7,n=10,k; >>>More

3個回答2024-02-05

#include

void fun1(int n) >>>More