C語言經典100題:5

題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。

分析:簡單的排序問題,這個只有三個數據的排序問題,題目比較簡單。設置三個變量x,y,z,比較x與y。將最大的數賦給x,在比較x跟z,同理,x爲最大的數據。接着第三步比較y跟z。得出最小的數據賦予z。

#include<stdio.h>
int main(void){
	int x,y,z,t;
	scanf("%d %d %d",&x,&y,&z);
	if(x<y){
		t=x;
		x=y;
		y=t;
	}
	if(x<z){
		t=x;
		x=z;
		z=t;
	}
	if(z>y){
		t=z;
		z=y;
		y=t;
	}
	printf("%d %d %d",z,y,x);
	return 0;
}

現在擴充一下題目,因爲原來的題目比較簡單,所以我們現在先把題目更改一下,變成對隨機產生的100個數據或者更大數量的數據進行排序,數據範圍爲1000或者更大。

爲此我們需要來學習一些必要的庫函數:<time.h>跟<stdlib.h>。這兩個函數是用來產生隨機數的。接下來會分別介紹將會用到的方法。

 time_t time(time_t *seconds) :返回自紀元 Epoch(1970-01-01 00:00:00 UTC)起經過的時間,以秒爲單位。如果 seconds 不爲空,則返回值也存儲在變量 seconds 中。

#include<time.h>
#include<stdio.h>
int main(void){
	time_t second;
	second=time(NULL);
	printf("%ld",second);
	return 0;
}

上面是time()方法的一種應用:獲取時間。

接下來我們用來產生隨機數據。根據網上的很多資料顯示,方法rand()時產生隨機數據的方法,當你rand()%max,這個max就是你要的隨機數據的上限,你要產生幾個隨機數據就用幾次for循環就可以產生

srand()方法需要介紹一下,計算機產生的隨機數據是一種僞隨機數,所以當你想要得到比較理想化的隨機數據時,你就必須設置一個隨機的種子。而一般使用時間來做種子,因爲只要你下次啓動程序的時間間斷超過一定時間的話種子就變化了,所以你得到的隨機數據就跟上次程序不一樣,關於種子的概念可以參考一下這個:https://zhidao.baidu.com/question/432083843484535044.html

#include<time.h>
#include<stdio.h>
#include<stdlib.h>
int main(void){
	int x,i;
	srand(time(NULL));
	for(i=0;i<50;i++){
		printf("%d\n",rand()%100);
	}
	return 0;
}

以上代碼就是顯示0-100的隨機數據,因爲種子的設置隨時間的變化而變化,所以兩次程序的開啓所產生的數據是不一樣的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章