Ⅰ c語言的兩種排序
1、選擇排序法
要求輸入10個整數,從大到小排序輸出
輸入:2 0 3 -4 8 9 5 1 7 6
輸出:9 8 7 6 5 3 2 1 0 -4
代碼:
#include<stdio.h>
int main(int argc,const char*argv[]){
int num[10],i,j,k,l,temp;
//用一個數組保存輸入的數據
for(i=0;i<=9;i++)
{
scanf("%d",&num<i>);
}
//用兩個for嵌套循環來進行數據大小比較進行排序
for(j=0;j<9;j++)
{
for(k=j+1;k<=9;k++)
{
if(num[j]<num[k])//num[j]<num[k]
{
temp=num[j];
num[j]=num[k];
num[k]=temp;
}
}
}
//用一個for循環來輸出數組中排序好的數據
for(l=0;l<=9;l++)
{
printf("%d",num[l]);
}
return 0;
}
2、冒泡排序法
要求輸入10個整數,從大到小排序輸出
輸入:2 0 3-4 8 9 5 1 7 6
輸出:9 8 7 6 5 3 2 1 0-4
代碼:
#include<stdio.h>
int main(int argc,const char*argv[]){
//用一個數組來存數據
int num[10],i,j,k,l,temp;
//用for來把數據一個一個讀取進來
for(i=0;i<=9;i++)
{
scanf("%d",&num<i>);
}
//用兩次層for循環來比較數據,進行冒泡
for(j=0;j<9;j++)
{
for(k=0;k<9-j;k++)
{
if(num[k]<num[k+1])//num[k]<num[k+1]
{
temp=num[k];
num[k]=num[k+1];
num[k+1]=temp;
}
}
}
//用一個for循環來輸出數組中排序好的數據
for(l=0;l<=9;l++)
{
printf("%d",num[l]);
}
return 0;
}
(1)c語言用for循環排序擴展閱讀:
return 0代表程序正常退出。return是C++預定義的語句,它提供了終止函數執行的一種方式。當return語句提供了一個值時,這個值就成為函數的返回值。
return語句用來結束循環,或返回一個函數的值。
1、return 0,說明程序正常退出,返回到主程序繼續往下執行。
2、return 1,說明程序異常退出,返回主調函數來處理,繼續往下執行。return 0或return 1對程序執行的順序沒有影響,只是大家習慣於使用return(0)退出子程序而已。
Ⅱ C語言for的雙循環的執行順序
1.
外層循環從第一個數開始,剛開始保存此次循環的第一個元素的下標和元素值;2.
內存循環從第二個數開始,每個數與前一個數進行比較,如果出現「順序」,則記錄當前元素的下標和元素值。當當前循環進行完的時候,判斷外層循環開始記錄的下標和循環出現順序的元素的下標值是否相等:如果相等,則不需要交換位置;否則,調換兩個元素的位置。3.
之後兩層循環都後移一位,重復上面的動作,直到比較結束。
Ⅲ C語言中多個for執行的順序是什麼
假如是 for(i=1;i<=3;i++)
for(j=1;j<=2;j++)
for(k=1;k<=2;k++)
我就這樣簡寫了啊,他是這樣執行的:先是i=1,j=1,k=1,循環完一次之後,k加1,然後是1,1,2(按照i,j,k的順序)。循環完之後,k接著加1,是1,1,3,不滿足,第三個for循環結束,向上走,J加1,,循環結果是1,2,,1.記住,此時K又回到1,再執行K的循環。那下面就是1,2,2
等到J加到3時,不滿足條件,i要加1循環結果為2,,1,1。J、K又變為一,再循環。2,1,2 2,2,2 3,1,1, 3,1,2, 3,2,1 3,2,2
所以總的循環結果為
1 1 1
1 1 2
1 2 1
1 2 2
2 1 1
2 1 2
2 2 1
2 2 2
3 1 1
3 1 2
3 2 1
3 2 2
不知道您有沒有看懂,有問題再追問吧。
Ⅳ C語言for循環語句執行順序
如for循環 如下:
for(int i=0;i<10;i++)
{
循環體
}
執行數序是:
i=0 初始化初值
i<10 進行判斷,如果條件為真,則繼續執行
執行循環體代碼
i++ 變數i自增
回到第2步,一直循環下去,直到第2步為假, 退出循環.