-
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]);
我不知道你是否明白了。
-
這是將陣列的元素從小到大排序的演算法之一。 它的工作原理是首先通過迴圈找到最大的數字,並將其放入陣列的最後乙個元素,然後通過第二個迴圈找到第二大元素,然後將其放入陣列的倒數第二個元素中,依此類推,到最後乙個迴圈時, 陣列中的所有元素都已排序,從而達到了我們的目的。
程式首先使用 i 作為外迴圈變數來確定陣列中的所有元素一次。
內環j是判斷和交換剩餘的未排序元素,內環的迴圈控制條件非常重要,即j<8-i; 這可確保隨著外部迴圈數量的增加,內部迴圈會減少,因為要排序的陣列元素更少。
希望對你有所幫助!
-
J 的迴圈一次只能將最大的乙個帶到陣列的末尾。
總共有 8 個元素,所以你需要再新增乙個迴圈,你最多需要攜帶它 8 次。
例如,陣列 a[8]=;
第一次,它變成了。
第二次變成了。
第三次變成了。
第四個變成了。
-
這就是冒泡法。 j 是用來讓兩個相鄰的數字比較的,把較大的數字放在最後,比如我現在輸入29835671,先讓 2 和 9 比較,如果 2 很大,那麼 9 和 2 就會倒過來,顯然這不是真的,那又怎樣,然後讓 9 和 8 比,顯然 9 更大, 所以把9換到第三位,再把9和3比較一下,顯然也是9大,再換位,依此類推,9就排在最後。而這一輪迴圈之後,應該28356719新的數字順序,並且應該使用這個程式從小到大排列乙個8位數字,顯然這個迴圈無法達到目的,即乙個迴圈是不夠的,所以需要用雙迴圈來控制, 所以需要 i 來控制我上面介紹的多次過程(即 j 控制的週期),只有這樣才能將這個數字從小到大排列。
希望對你有所幫助。
-
j 是控制迴路,其工作原理與 i 相同。
這是排序方法,如果我沒記錯的話,就是氣泡排序,所以讓我們自己來看看排序方法。
您還可以在每個 for 迴圈後列印陣列的值,您將能夠看到如何按氣泡排序。
-
你給乙個程式來問你不明白的東西,如果你這樣問,你不知道你會問什麼。
-
這本書是對的,你可能把 array[10] 理解為乙個陣列元素,但它只是把乙個 10 個元素的陣列作為乙個引數,而不是乙個陣列元素,明白嗎?
-
左邊的書說,陣列的元素不能作為引數使用,不能理解陣列不能作為引數。
其實,這本書太曲折了,讓人看不懂。
請記住,陣列作為函式引數可以通過以下方式使用:
1. type fun(type arr,int size);
fun(type *arr, int size);
fun(鍵入 arr[constant], int size);
其中,1 2 方法最常用,第三種方法不常用,一般不寫常量,因為他們不關心編寫編譯器。 另乙個問題也來自你,你可以看解釋了解詳情。
-
陣列元素不能用作引數,但陣列可以,在本例中為陣列。
-
在電腦程式中,通常可能發生三種型別的錯誤:
1)語法錯誤:這是指程式包含不符合語法規則的語句,例如錯誤地編寫關鍵字或符號(將printf寫成print,將陣列元素引用寫成a(2)等),使用未定義的變數,括號不配對等。 包含語法錯誤的程式無法編譯,因此它們不會執行。
2)邏輯錯誤:這是指程式中沒有語法錯誤,通過編譯和連線可以生成可執行程式,但程式的結果不符合預期的錯誤。例如,整數變數的值超出了有效值範圍,在 scanf 函式中省略了位址運算子 &,陣列元素引用中的下標越界,並且在應該使用時不使用復合語句。
因為有邏輯錯誤的程式仍然可以執行,所以是一種難以發現和除錯的程式錯誤,在程式設計和除錯中應特別注意。
3)系統錯誤:這是指程式沒有語法錯誤和邏輯錯誤,但程式的正常執行取決於某些外部條件的存在,如果缺少這些外部條件,程式將無法執行。例如,對已經排序的陣列執行半拆分搜尋方法,但實際資料沒有排序,需要在程式中開啟已有檔案,但該檔案因其他原因丟失等。
-
本段用於轉換 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;
執行此修復程式後,輸出為:
-
這 ** 只是交換陣列 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。 正如你所看到的,逆序實現的核心是交換元素的位置,而不僅僅是交換元素的值。
-
printf 似乎是錯誤的,它需要兩邊的雙引號。 它是乙個轉移字元,這意味著它是乙個換行符。
該程式允許您輸入乙個包含 5 個整數資料的陣列並輸出它們。
請輸入,請輸出。
是程式讓它輸出出中文指令,並不是說這兩句話的輸出可以讓你進行輸入和輸出操作,輸入和輸出都是通過scanf和printf實現的。
兩個for迴圈的作用在程式中得到了明確的解釋。
執行只有乙個結果,即以下行。 上面的行是除錯時輸入的內容,而不是輸出。
-
它似乎沒有輸出。
22“酒吧。 它是以 5 個數字讀取的。
然後輸出含義 (1) 主程式條目 (2) 將 x 設定為 0-5 整數陣列整數變數 k
4) 一次讀取 5 個數字 (6) 輸出 5 個數字。
for 用於為陣列賦值。
scanf 是讀取的資料。
執行的結果為 1。
因為第一行最初是由您輸入的。
-
目的:輸入乙個陣列,然後輸出該陣列;
但我不知道為什麼最後乙個是-22
2 1 定義了乙個整數陣列 x[5],k
輸入資料。 輸出資料。
3 你寫錯了第二個,應該是。
輸出資料是。
並請輸入資料立即點選5。
4for 語句是迴圈結構。
scanf 播放將資料傳輸到計算機,您的程式有很多錯誤,我修改了它並執行了它,以下是正確的。
#include
voidmain()
-
在整數陣列中輸入 5 個數字,然後輸出,但這裡需要更改 for(k=0; k<5;k++)
否則你會犯乙個像上面的-22這樣的錯誤
printf
請輸入您的資料:");
for(k=0;k<5;k++)
scanf"%d",&x[k]);這裡是將每個資料輸入到陣列中的迴圈形式,scanf() 是輸入函式,每個步驟的意思對程式來說很清楚,建議大家看一下數字,這個太基礎了,不好解釋:)
-
這個問題巧妙地利用了陣列 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
我同意我樓上說的加{}來劃分級別,但是,其實沒有{},看看你發的這個**的縮排關係,也可以看出if和else的對應關係。 >>>More
首先,我會明確地告訴你,選項 c 是正確的,選項 A strcpy 是乙個字串複製函式,它可以將字串 “China” 複製到字元陣列 str2 中並覆蓋 str1 中的 “beijing”,選項 c strcat 是乙個字串連線函式,可以將 “China” 連線到“beijng”的後面。 因此,C. >>>More
在 VisualStudio 2013 中編寫和除錯 C 語言程式的步驟: 1.開啟 [檔案] - 新建 - 專案以開啟“新建專案”視窗。2. 在[模板]、[名稱]、[位置]和[解決方案名稱]中選擇[Visual C++] Win32控制台應用程式,可以根據需要填寫。 >>>More