程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 對於c/c++中的數組排序及計算平均值和得到最大最小值的思考

對於c/c++中的數組排序及計算平均值和得到最大最小值的思考

編輯:C++入門知識

作者:網易學院程序系教授管寧

最近在幫助其它人的學習中發現了許多問題就數組和局部變量和全居變量的兩道例題進行刨析和思考!

排序操作

#include

voidsort(array,n)
intarray[];
intn;
{
inti,j,k,t;
for(i=0;i){
k=i;[/LIGHT] /* 把i記錄下來,以便進行調換操作 */
for(j=i+1;)j{
if(array[j])/* 利用k對比j循環的元素大小是否比外部i循環當前元素的值 */
{
k=j; /* 將k的值定義為j循環的最小元素的(下標),以便進行調換操作 */
}
t=array[k]; /* 將t的值定義為j循環的最小值元素的值 */
array[k]=array[i]; /* 把j循環內的(也就是array[j])的值,調換為此次外部i循環元素的值 */
array[i]=t; /* 將外部i循環的當前元素的值替換為前面以t為臨時存儲的(也就是array[j])的值 */
}
}
}
main()
{
inta[10],i; /* 定義a[10]為一個數組,用於輸入10個不同的數字;定義用於循環的便量i; */
printf("enter the array ");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]); /* 利用這10次循環給每個數組元素盡心賦值操作從a[0]到a[9] */
}
sort(a,10);/* 把數組a的各數組元素地址和數組數量傳遞給自定義排序涵數的形式參數 */
printf("the sorted array: ");
for(i=0;i<10;i++)
{
printf("%d",a[i]); /*利用10次循環把排序後的數組元素打印在屏幕上*/
}
printf(" ");

}/* 此篇代碼練習序號注意的是用數組名作涵數實際參數的時候,不是把數組的值傳遞給形式參數,
而是把實際參數數組的起始地址傳遞給形式參數數組,這樣兩個數組就共同占用一段內存單元,而
不需要建立兩個不同的數組浪費內存空間 */


求平均值和找最大最小值

 

#include

floatmax; /* 定義全局變量max用於存儲最大的數 */
floatmin; /* 定義全居變量min用於存儲最小的數 */



main()
{
floatcount_avg(); /* 聲明自定義涵數的數據類型 */
floatscore[10]; /* 定義一個數組用於存儲輸入數字 */
floatscore_avg;
inti; /* 定義用於循環的變量i */
for(i=0;i<10;i++) /* 利用一個為10次的循環為score[0]-score[9]的數組元素輸入值*/
{
scanf("%f",&score); /* 格式化輸入 */
}
score_avg =count_avg (score,10); /* 調用count_avg涵數計算平均值,在實際參數中帶如數組score的地址和數組元素個數 */
printf("avg=%6.2f max=%6.2f min=%6.2f",score_avg,max,min); /* 將平均值,最大值,最小值打印在屏幕上 */
}

floatcount_avg(array,score_num) /* 定義count_avg這個自定義涵數的數據類型為浮點形 */
floatarray[]; /* 定義形式參數array[]這個數組為浮點形 */
intscore_num; /* 定義形式參數score_num為正形,用於得到實際參數也就是數組的元素個數 */
{
inti; /* 定義用於循環的變量i */
floatsum =array[0]; /* 預先設置總數初始值為array[0]以便於後面對比大小的操作 */
floatavg; /* 定義avg也就是平局值存儲變量為浮點形 */

max=array[0]; /* 預先設置最大值初始值為array[0]以便於後面對比大的操作 */
min=array[0]; /* 預先設置最小值初始值為array[0]以便於後面對比小的操作 */

for(i=1;i<10 ;i++ ) /* 利用一個為9次的循環逐個和array[0]進行對比找出最大值和最小值 */
{
if(array>max) /* 利用已經存儲的最大值和當前循環下的array進行對比(找大計算) */
{
max=array; /* 符合條件的存儲為最大值.注意:(這裡利用循環判斷反復的對比操作逐步替換最大值最後得到最大的數)*/
}
elseif(array<min) /* 利用已經存儲的最小值和當前循環下的array進行對比(找小計算) */
{
min=array; /* 符合條件的存儲為最小值.注意:(這裡利用循環判斷反復的對比操作逐步替換最小值最後得到最大的數)*/
}
sum += array; /* 計算個數組元素的總和 */
}

avg =sum / score_num; /* 計算出最後的平均值 */
return(avg); /* 返回平均值 */
}


/* 此例需要注意的是利用全局變量可以減少實際參數和形式參數的個數,從而減少內存空間和傳遞值數據是的時間開銷.此外c語言也規定外部
數組可以富裕初值,而局部數組是不能賦予初值的,建議不在必要的時候不要使用全局變量,因為1:全局變量在程序的全部執行過程中都占用存儲
單元,而不是僅在需要的時候開辟單元.2:它使涵數的通用性降低了,因為涵數在執行過程中要依賴於其他所在的外部變量.3:全局變量使用過多,
會降低程序的清晰性,難以清楚判斷每個瞬時各個外部變量的值.在各個涵數執行的時候都會改變外部變量的值,導致程序出錯!4.如果外部變量不
在文件開頭定義,那麼它只限與定義點到文件終了這段才起作用
*/
在學習中應該多注意細節這些東西在java中也是類似的,希望對大家有所啟發!
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved