18電腦科學與技術本指標和陣列實驗
阿新 • • 發佈:2018-12-08
- 藉助指標完成重新排列一維陣列元素的順序,使得左邊的說有元素均為偶數並按由大到小的次序存放,右邊的所有元素均為奇數並按照由小到大的次序存放。
提示
#include<iostream> using namespace std; void fun_max_min(int *p,int count_os,int count_js) { int temp[10],k;//臨時陣列和臨時變數 int i,j;//迴圈變數 int *q=temp;//指標q指向臨時陣列temp /** 第二個步驟:將陣列中偶數儲存到臨時陣列temp中 , temp陣列的下標從0開始 */ for(i=0,j=0;i<10,j<count_os;i++) { if(*(p+i)%2==0) { *(q+j)=*(p+i); j++; } } /** 第三個步驟:將臨時陣列temp中的前count_os個元素按照由大到小 進行排序存放 */ for(i=0;i<count_os;i++) { for(j=i+1;j<count_os;j++) { if(*(q+i)<*(q+j)) { k=*(q+i); *(q+i)=*(q+j); *(q+j)=k; } } } /** 第四個步驟:將陣列中奇數儲存到臨時陣列temp中, temp陣列的下標從count_os開始 */ for(i=0,j=count_os;i<10,j<10;i++) { if(*(p+i)%2!=0) { *(q+j)=*(p+i); j++; } } /** 第五個步驟:將臨時陣列temp中的後count_js個元素按照由小到大 進行排序存放 ,temp陣列的下標從count_os開始 */ for(i=count_os;i<10;i++) { for(j=i+1;j<10;j++) { if(*(q+i)>*(q+j)) { k=*(q+i); *(q+i)=*(q+j); *(q+j)=k; } } } /** 第六個步驟:將臨時陣列temp中的值輸出,該陣列中的元素分成兩部分 前6個元素為偶數,由大到小存放;後四個元素為奇數,由小到大存放 */ for(j=0;j<10;j++) cout<<*(q+j)<<" "; } int main(){ int a[10]={1,2,3,8,10,11,4,6,9,14}; int i,j;//迴圈變數 int count_os=0;//偶數計數器 int count_js=0;//奇數計數器 /** 第一個步驟:利用迴圈統計陣列中奇數和偶數的個數 分別放在 count_os和count_js */ for(i=0;i<10;i++) { if(a[i]%2==0) { count_os++; } else count_js++; } /**呼叫函式fun_max_min實現題目要求 **第一個引數為初始化陣列 **第二個引數為陣列中偶數元素個數 **第三個引數為陣列中奇數元素個數 **/ fun_max_min(a,count_os,count_js); return 0; }
:可以藉助一輔助陣列存放排好的資料,然後按要求存回原陣列。