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的随机数据,因为种子的设置随时间的变化而变化,所以两次程序的开启所产生的数据是不一样的。


猜你喜欢

转载自blog.csdn.net/u014128662/article/details/69253983