這里給大家介紹的是通過某個方法實現判斷命令行中輸入的數字是幾個,這樣再用冒泡法排序的時候就不用擔心輸入的是幾個數字,用到的知識主要是冒泡法排序
本是一個再簡單不了的功能,然后只是冒泡排序??墒俏以诮换ポ斎霐盗械臅r候,只用空格隔開然后回車,如果不限定數的個數,用scanf并不能完成這個任務,他循環獲取,到最后不能判斷獲取結束,而只能繼續等待輸入。
這個時候我自定義一個函數,獲取緩存區中的數(空格分隔),如果輸入結束就返回一個特定的值,這個函數是用getchar循環嵌套實現的。本人新手,只能弄出這方法。歡迎各位大神指導。
maopao-complex.c
- //比較復雜的數組接收方法,然后從大到小排序。VC環境
- #include <stdio.h>
- #include <stdlib.h>
- int over=0;//用于讀取數,如果讀取結束,為1
- int main(void)
- {
- //這一部分,接收數據,判斷數據個數
- int getvalue(void); //函數原型。返回從緩沖區取得的數,如果輸入結束,返回42949672
- int k; //子循環臨時變量
- int a[100]; //建立100個數空間,可增縮范圍
- int num; //輸入的個數
- int ifend = 1; //邏輯變量,控制while語句
- int i=0; //通用計次臨時變量
- int value; //元素值儲存地
- printf("請輸入任意數的序列,空格隔開:/n");
- while (ifend)
- {
- value = getvalue();
- if(value == 42949672)
- ifend = 0;
- else
- {
- a[i] = value;
- i++;
- }
- } //結束后,i為數組成員個數
- num = i;
- //開始排序
- for (i=0; i < num-1; i++) //循環8次,第n次把第n位以后的數的最大值放第n個
- {
- for(k=i+1; k<num; k++) //用k表示后面的各位,遞增。
- {
- if (a[i] < a[k]) //選大數,放第n位
- {
- a[i] = a[i] + a[k];
- a[k] = a[i] - a[k];
- a[i] = a[i] - a[k];//以上三步,把較大值放到a[i]
- }
- }
- }
- //輸出新數組
- printf("排序后:/n");
- for (i=0; i<num; i++)
- {
- printf("%d ",a[i]);
- }
- printf("/n");
- return 0;
- }
- int getvalue(void)
- {
- char a[16]={0}; //數字接收臨時數組
- int k;
- int value=0;
- char temp;
- int last = 1;
- int ifend = 1;
- int i = 0; //用來定位數組
- if (over == 1)
- {
- ifend = 0;
- return (42949672);
- }
- temp = getchar();
- while(ifend)
- {
- if (temp == 32)//接收結束,把臨時數組轉化成數字
- {
- value = atoi(a);
- ifend = 0;
- }
- else if (temp == '/n')//緩沖區已無數值
- {
- value = atoi(a);
- over = 1;
- ifend = 0;
- }
- else //輸入有效數值
- {
- if (temp == '-')
- {
- last = -1;
- }
- else
- {
- a[i] = temp;
- i++;
- }
- temp = getchar();
- }
- }
- value*=last;
- return (value);
- }
下面是一個簡單的冒泡排序:
- #include <iostream>
- using namespace std;
- void BubbleSort (int* pData,int Count)
- {
- int iTemp;
- for(int i=1; i<Count; i++)
- {
- for (int j=Count-1; j>=1; j--)
- {
- if (pData[j]<pData[j-1])
- {
- iTemp=pData[j-1];
- pData[j-1]=pData[j];
- pData[j]=iTemp;
- }
- }
- }
- }
- void main()
- {
- int data[]= {10,9,8,7,6,5,4}
- BubbleSort(data,7);
- for (int i=0;i<7;i++)
- cout<<data[i]<<" ";
- cout<<"/n";
- }
新聞熱點
疑難解答