输入n个人的身高,然后从n个人中选出身高差值最小的两个人作为礼仪(如果差值相同的话,选取其中最高的两个人),要求输出两个礼仪的身高。

题目如下:

编写一个C程序,实现以下功能:
输入n个人的身高,然后从n个人中选出身高差值最小的两个人作为礼仪(如果差值相同的话,选取其中最高的两个人),要求输出两个礼仪的身高。

对题目的浅度分析:

1.首先使用一位数组将身高数据进行储存
2.使用选择排序法对身高从小到大进行排序,注意是从小到大,因为题目要求如果身高差值相同,则取身高较高的两人
3.找出身高的最小差值,如果并记录下这两个礼仪的身高,如果在
循环中出现了更小的身高差值,则将礼仪的身高进行替换

代码如下:

 #include 
  #include 
  void main()
  {
      int a[100];
      int n,i;
      void search1(int *p,int m);
      void sort1(int *q,int k);
      printf("输入礼仪的人数:");
      scanf("%d",&n);
      printf("输入礼仪的身高:");
      for (i = 0;i <= n - 1;i++)
      {
           scanf("%d",&a[i]);
      }
      sort1(a,n);
      search1(a,n);
  }
  void  sort1(int* q,int k)
  {
      int i, j,temp;
      for (i = 0;i <= k - 2;i++)
      {
           for (j = i + 1;j  <= k -  2;j++)
           {
               if (q[i] > q[j])
               {
                    temp  = q[i];
                    q[i] = q[j];
                    q[j] = temp;
               }
           }
      }
  }
  void  search1(int* p, int m)
  {
      int i = 0;
      int min, h1, h2;
      min  = (int)fabs(*(p + 1) - *(p + 0));
      for (i = 0;i <= m - 2;i++)
      {
           if ((int)fabs(*(p + i+1) - *(p + i)) <= min)
           {
               min=  (int)fabs(*(p + i+1) - *(p + i));
               h1  = *(p + i +  1);
               h2  = *(p + i);
           }
      }
      printf("身高的最小差值为:%d  礼仪身高分别为:%d  %d\n",min,h1,h2);
  }  

你可能感兴趣的:(c语言练习题,c语言)