本文目錄一覽:
c語言怎麼輸出數組第一個數,和由大到小排序,並輸出最大的數
別光顧著在學校玩,要搞點學習啊
最好理解的方法:冒泡法排序
從第一個數開始依次對相鄰兩數進行比較,如次序對則不做任何操作;如次序不對則使這兩個數交換位置。第一遍的比較後,最大的數已
放在最後,第二遍只需考慮(N-1-i)個數,以此類推直到第(N-1)遍比較後就可以完成排序。
源程序如下:
#define N 5 //定義要排序的個數N為5個
#include”stdio.h”
========================主程序部分=================================
main() //主程序開始
{
int a[N],i,j,temp; //定義數組a,變數i,j和中間存儲變數temp
printf(“please input %d numbers\n”,N); //輸出文本,”請輸入N個數字(此處N=5)”
====================輸入並接收要排序的數===========================
for(i=0;iN;i++) //循環語句,利用i循環將N個數存入數組a[i]
scanf(“%d”,a[i]);
=============================排序===================================
for(i=0;iN-1;i++)
//關鍵語句,要將5個數排序,只需要每輪從數組第一個數開始和相鄰的數比較大小,較大的數放在後面,每輪結束後,大的數都會排最後,相互比較4輪,所以要循環N-1次
for(j=0;jN-1-i;j++) //第一輪比較結束後,最大的數已經排在最後,相當於可以少比較一次,所以只需循環N-1-i次,加快運行速度,避免冗餘比較
{
if(a[j]a[j+1]) //如果前一個數a[j]大於後一個數a[j+1],則2個數互換位置,否則不作任何操作
{
temp=a[j]; //互換位置:將a[j]的值賦給中間變數temp,此時a[j]還是原來的值
a[j]=a[j+1]; //將較小的數a[j+1]的值賦給a[j],a[j]的值此時為較小的那個數,a[j+1]的值未變,仍然是較大的值
a[j+1]=temp; //將之前中間變數temp存的較大的值賦給a[j+1],位置互換結束
}
}
=======================輸出排序結果================================
printf(“the array after sort:\n”); //輸出文本,”排序後的數組為:”
for(i=0;iN;i++) //循環N次
printf(“%5d”,a[i]); //輸出數組a[i]的值
}
附每輪比較結果:
原始數據為: 5 4 3 2 1
第一輪比較: 4 3 2 1 5
第二輪比較: 3 2 1 4 5
第三輪比較: 2 1 3 4 5
第四輪比較: 1 2 3 4 5
C語言中數組首地址和數組第一個元素的地址有什麼區別呢
C語言中數組首地址和數組第一個元素的地址關係如下:
1、它們的地址值是相等的。
2、第1個元素的地址如果是p,則p+1就是第2個元素的地址。
3、數組的首地址如果是p,則p+1就跳過這個數數組而指向這個數組最後一個元素最後一個位元組的下一位元組。
擴展資料:
數組的創建:在創建數組時,我們必須定義數組的類型和大小,數組的大小不能為0,數組中的元素類型都是相同的。
數組的初始化:在數組創建時,我們也要必須為數組初始化。
一個數組,可以保存一些數據,但是每一個數據不一定有用。或者說,有些時候的數組的數據不一定要輸出,所以我們可以再來開一個相同的數組,來標記模擬是否輸出數組中的某個元素。
參考資料來源:百度百科-數組
參考資料來源:百度百科-c語言
C語言數組首地址相關問題!!
若a是一維數組名,我們知道*a就是a[0],就是*(arr+0)。因為a是數組的首地址,*a就是取首地址所指元素,就是數組的第一個元素。
同樣的道理,a是二維數組名時,*a也是取a的第一個元素,但是此時a所指的元素是一個一維數組,所以,實際上a所指元素是一維數組的首地址。
二維數組a,a是數組地址,指向行;有一個等價關係 a[i]=*(a+i)
a[i]指向列,a[i]又指向行。
你可以將*和理解為相反的操作:
a指向行,*(a+i)指向列,*(*(a+i)+j)等價於a[i][j];
就按a[3][4]這個例子來看:3行4列數組a可以理解為a[0],a[1],a[2]這三個一維數組
a[0][0] a[0][1] a[0][2] a[0][3]//第一行a[0][]
a[1][0] a[1][1] a[1][2] a[1][3]//第二行a[1][]
a[2][0] a[2][1] a[2][2] a[2][3]//第三行a[2][]
(數組含有4個元素)構成的二維數組,*a就是a[0],而a[0]就是第0行的首地址,也就是第一個數組的首地址。*(a+i)就是a[i],就是第i行的首地址。
如果現在定義a是字元型數組,輸出*a(也就是第一行的首地址)為0000,再輸出*(a+1)就是0004,而不是0001,就可以說明a是指向一維數組的指針。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/307060.html