1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>
  4. #define NMAX 10
  5. int rando(int a[],int n){
  6. int i;
  7. for(i=0;i<n;i++)
  8. a[i]=rand()%20+1;
  9. }
  10. int MaxMin(int a[],int &CompCount){
  11. int Max=a[0];
  12. int Min=a[0];
  13. CompCount=0;
  14. int i;
  15. for(i=1;i<10;i++){
  16. if(a[i]>Max){
  17. CompCount++;
  18. Max=a[i];
  19. }
  20. else{
  21. if(a[i]<Min){
  22. CompCount++;
  23. Min=a[i];
  24. }
  25. }
  26. }
  27. printf("比较次数:%d 最大数:%d 最小数:%d\n",CompCount,Max,Min);//打印可以放在自定义函数中
  28. }
  29. int main(){
  30. int a[NMAX];
  31. int n=10;//10个数字
  32. int Comp=0,sumComp=0;
  33. srand((unsigned)time(NULL));//随机数种子,保证每次出来的随机数不一样
  34. for(int m=0;m<10;m++){
  35. rando(a,n);
  36. printf("第%d次十个随机数是:\n",m+1);
  37. for(int i=0;i<10;i++)
  38. printf("%d ",a[i]);
  39. printf("\n");
  40. MaxMin(a,Comp);
  41. sumComp+=Comp;
  42. }
  43. printf("执行10次元素平均比较次数:%.2lf",1.0*sumComp/10);
  44. }
  45. ``
  46. 心得:
  47. 1.宏定义(#define与引入头文件均不需要分号)
  48. 2.printf放在自定义函数中,就不需要传参数在主函数中输出啦
  49. 3.随机数
  50. 1.rand函数,必须引入#include<stdlib.h>头文件
  51. 2.公式:rand()%(大-小+1)+小,如随机10~20的数,即rand()%11+1
  52. 3.使用时必须搭配 srand函数
  53. srand函数作用:随机数初始化函数
  54. 若将srand()括号中的数设为定值,那么这次出现的随机数与下次出现的随机数一样
  55. srand(1); 随机三个数,这次随机出来的是 89 10 那么下次运行随机出来的也是8910
  56. 所以我们要将srand括号里的参数设为一直变化的值,比如时间
  57. 4.获取时间的方法:
  58. 1.引入头文件 #include<time.h>
  59. 2.使用函数 time(NULL);
  60. 5.配合srand使用:
  61. 因为time(NULL)函数传回来的是时间类型的参数,所以我们把它变为无类型的 ,(unsigned)time(NULL)
  62. srand((unsigned)time(NULL));
  63. 问题目标:随机产生10个数字,找出其中最大和最小元素并统计平均比较次数
  64. 选择的数据结构:数组
  65. 算法策略:

版权声明:本文为StuAdrew原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/StuAdrew/p/14542549.html