国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++實現對輸入數字組進行排序

2020-05-23 14:13:05
字體:
來源:轉載
供稿:網友

這里給大家介紹的是通過某個方法實現判斷命令行中輸入的數字是幾個,這樣再用冒泡法排序的時候就不用擔心輸入的是幾個數字,用到的知識主要是冒泡法排序

本是一個再簡單不了的功能,然后只是冒泡排序。可是我在交互輸入數列的時候,只用空格隔開然后回車,如果不限定數的個數,用scanf并不能完成這個任務,他循環獲取,到最后不能判斷獲取結束,而只能繼續等待輸入。

這個時候我自定義一個函數,獲取緩存區中的數(空格分隔),如果輸入結束就返回一個特定的值,這個函數是用getchar循環嵌套實現的。本人新手,只能弄出這方法。歡迎各位大神指導。

maopao-complex.c

 

 
  1. //比較復雜的數組接收方法,然后從大到小排序。VC環境 
  2. #include <stdio.h> 
  3. #include <stdlib.h> 
  4. int over=0;//用于讀取數,如果讀取結束,為1 
  5. int main(void
  6. //這一部分,接收數據,判斷數據個數 
  7. int getvalue(void); //函數原型。返回從緩沖區取得的數,如果輸入結束,返回42949672 
  8. int k; //子循環臨時變量 
  9. int a[100]; //建立100個數空間,可增縮范圍 
  10. int num; //輸入的個數 
  11. int ifend = 1; //邏輯變量,控制while語句 
  12. int i=0; //通用計次臨時變量 
  13. int value; //元素值儲存地 
  14. printf("請輸入任意數的序列,空格隔開:/n"); 
  15. while (ifend)  
  16. value = getvalue(); 
  17. if(value == 42949672) 
  18. ifend = 0; 
  19. else 
  20. a[i] = value; 
  21. i++; 
  22. //結束后,i為數組成員個數 
  23. num = i; 
  24. //開始排序 
  25. for (i=0; i < num-1; i++) //循環8次,第n次把第n位以后的數的最大值放第n個 
  26. for(k=i+1; k<num; k++) //用k表示后面的各位,遞增。 
  27. if (a[i] < a[k]) //選大數,放第n位 
  28. a[i] = a[i] + a[k]; 
  29. a[k] = a[i] - a[k]; 
  30. a[i] = a[i] - a[k];//以上三步,把較大值放到a[i] 
  31.  
  32. //輸出新數組 
  33. printf("排序后:/n"); 
  34.  
  35. for (i=0; i<num; i++) 
  36. printf("%d ",a[i]);  
  37. printf("/n"); 
  38.  
  39. return 0; 
  40.  
  41.  
  42. int getvalue(void
  43. char a[16]={0}; //數字接收臨時數組 
  44. int k; 
  45. int value=0; 
  46. char temp; 
  47. int last = 1; 
  48. int ifend = 1; 
  49. int i = 0; //用來定位數組 
  50. if (over == 1) 
  51. ifend = 0; 
  52. return (42949672); 
  53. temp = getchar(); 
  54. while(ifend) 
  55. if (temp == 32)//接收結束,把臨時數組轉化成數字 
  56. value = atoi(a); 
  57. ifend = 0; 
  58. else if (temp == '/n')//緩沖區已無數值 
  59. value = atoi(a); 
  60. over = 1; 
  61. ifend = 0; 
  62. else //輸入有效數值 
  63. if (temp == '-'
  64. last = -1; 
  65. else 
  66. a[i] = temp; 
  67. i++; 
  68. temp = getchar(); 
  69.  
  70. value*=last; 
  71. return (value); 

下面是一個簡單的冒泡排序:

 

 
  1. #include <iostream> 
  2. using namespace std; 
  3. void BubbleSort (int* pData,int Count) 
  4. int iTemp; 
  5. for(int i=1; i<Count; i++) 
  6. for (int j=Count-1; j>=1; j--) 
  7. if (pData[j]<pData[j-1]) 
  8. iTemp=pData[j-1]; 
  9. pData[j-1]=pData[j]; 
  10. pData[j]=iTemp; 
  11. void main() 
  12.  
  13. int data[]= {10,9,8,7,6,5,4} 
  14. BubbleSort(data,7); 
  15. for (int i=0;i<7;i++) 
  16. cout<<data[i]<<" "
  17. cout<<"/n"


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南郑县| 辽阳县| 靖江市| 右玉县| 揭阳市| 乌兰浩特市| 抚顺市| 江西省| 霞浦县| 同江市| 遂昌县| 尉氏县| 桓台县| 祁连县| 阳山县| 吉首市| 新余市| 蒲江县| 潜山县| 长武县| 江口县| 新民市| 庆云县| 美姑县| 宕昌县| 中江县| 绥阳县| 周至县| 云林县| 阆中市| 马山县| 朔州市| 华宁县| 普兰店市| 民权县| 苏州市| 资溪县| 林芝县| 吐鲁番市| 灵台县| 桦甸市|