日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

明明的随机数冒泡排序c 语言,NOIP复赛 c++-明明的随机数(算法和原码参考)

發布時間:2025/3/17 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 明明的随机数冒泡排序c 语言,NOIP复赛 c++-明明的随机数(算法和原码参考) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述-明明的隨機數】明明想在學校中請一些同學一起做問卷調查,為了實驗的客觀性,他先用計算機生成了N?個1?到1000?之間的隨機整數,(N≤100),對于其中重復的數字,只保留一個,把其余相

同的數去掉,不同的數對應著不同的學生的學號。然后再把這些數從小到大排序,按照排好

的順序去找同學做調查。請你協助明明完成“去重”與“排序”的工作。

【輸入文件】

輸入文件random.in?有2?行,第1?行為1?個正整數,表示所生成的隨機數的個數:N

第二行有N?個用空格隔開的正整數,為所產生的隨機數。

【輸出文件】

輸出文件random.out?也是2?行,第1?行為1?個正整數M,表示不相同的隨機數的個數。

第2?行為M?個用空格隔開的正整數,為從小到大排好序的不相同的隨機數。

【輸入樣例】

10

20 40 32 67 40 20 89 300 400 15

【輸出樣例】

8

15 20 32 40 67 89 300 400

/*本題主要是考察對排序算法的掌握,只不過外加了一個去重的操作。本題的算法有很多,我們在考試時,時間緊,題目難度大。如果我們能用最簡單的思維方式解決問題的話,就不一定把很多的時間放在代碼執行效率的優化問題上。有時候犧牲一點空間(內存)和時間對于獲取更多的考試時間是非常有必要的。本題最簡單的思想方法,就是根據題目要求,先對給定的一組數據進行排序,排序的方法可以使用最簡單的冒泡算法來完成。由于本題的輸出結果要求我們必須先統計出不重復數據的個數,所以當數據排序之后,我們可以先對所有的數據遍歷一次,這一次遍歷的目的就是讓我們統計出不重復數據的個數,并將其輸出。最后,我們還需進行一次遍歷,這次遍歷用于打印出排序之后不重復的所有數據結果.

*/

#include

int main()

{

FILE *fp1,*fp2;

int N,M=0;

int i,j;

int a;

int num[100];?//根據題目所給的數據規模定義數組的大小??? if((fp1=fopen(“random.in”,”r”))==NULL)

{

printf(“cannot open file\n”);

return 0;

}

fscanf(fp1,”%d”,&N);?//輸入隨機數的個數

for(i=0;i

fscanf(fp1,”%d”,&num[i]);?//將已知的隨機數存放到初始數組中

for(i=0;i

for(j=i+1;j

{

if(num[i]>num[j])

{

a=num[i];

num[i]=num[j];

num[j]=a;

}

}

fp2=fopen(“random.out”,”w”);?//打開寫文件的指針

for(i=0;i

{

if(i>0&&num[i]==num[i-1])?//思考一下這個去重的操作中為什么有i>0這個條件????????? continue;

M++;

}

fprintf(fp2,”%d\n”,M);?//在結果文件中打印出不重復數據的個數 并鍵入一個回車符

for(i=0;i

if(i>0&&num[i]==num[i-1])?//思考一下這個去重的操作中為什么有i>0這個條件

continue;

fprintf(fp2,”%d “,num[i]);

}

fclose(fp1);

fclose(fp2);

return 0;

}

http://www.gzkg.net/show.aspx?id=117&cid=356

總結

以上是生活随笔為你收集整理的明明的随机数冒泡排序c 语言,NOIP复赛 c++-明明的随机数(算法和原码参考)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。