C++小练习题 - 001
题目:编写程序,随机生成10个10到99之间的整数,存放在一维数组中,找出最小的元素,输出最小值及其所在元素的下标。
分析思想:数组就是带有带有下表有顺序的数据结构,要找出来最小值,用人脑来分析的最简单就是用眼睛从头到尾看一遍,然后找出就小的就可以了。
其实程序也是如此,从头到尾全部走一遍,但是程序不会像人脑一样可以记忆功能,所以我们点通过别的方法让程序有记忆。
算法:
数据:int arr[10] = [6(0),8(1),2(2),6(3),7(4),5(5),9(6),11(7),5(8),6(9),3(10)] ;(小标)
程序也是要从都到尾全变看一遍的,人脑分析,你自己想一下,是不是也是首先用其中一个数去和其他的去比较,然后遇到比他大的就看下一个,遇到比他小的就替换一下然后继续往下比较?
其实程序实现也是如此:
数据:int arr[10] = [6(0),8(1),2(2),6(3),7(4),5(5),9(6),11(7),5(8),6(9),3(10)] ;(小标)
首先我们拿出第一个值 6(0) 去个数组 arr[10] 里面所有的数从头到尾比较一次。我们吧这个比较值放到一个变量里面让程序记住它。
int c = 6(0) 或者 int c = arr[0] ; 这里我们叫C为标量,就是作为比较的值。
开始比较:
int c = arr[0] = 6(0) ;
int arr[10] = [6(0),8(1),2(2),6(3),7(4),5(5),9(6),11(7),5(8),6(9),3(10)] ;
int c = arr[0] = 6(0) ;//这个值,是随意的,就是我们随便从数组中取出一个数,就认为他目前就是最小的。这里我就取第0个位置的数值出来。
int n = 0 ;//这个值,就是上面随意从数组取出一个数的下标。
for(int i=0 ; i < arr.length ; i++) {//用循环去遍历数组的每一个值
//将每一个值去和标量做对比
if(arr[i]<c){//如果当前数组的值小于标量c的值,说明这个目前是最小的,我们把这个值记录下来,保存在标量里面,以前的标量很显然不是最小的了,替换掉。
c = arr[i] ;//同时记录下来当前的值在数组里面的坐标
n = i ;
}
else{//如果当前数组的值大于等于标量c的值,说明这个标量c目前还是是最小的,什么都不用做。
}
}
//当整个循环结束之后,标量c就是数组里面最小的值了,n也就是这个值在数组里面的坐标。