算法竞赛入门紫书第三章思考题

#include<stdio.h>
#include<math.h>
#include <stdlib.h>
#include<algorithm>
#include<iostream>
using namespace std;
void num1()                                     //可以不用数组
{
     int n;
     int num = 0;
     while(scanf("%d", &n)!=EOF)
     {
          num++;
     }
     printf("一共有%d个数字\n", num);
}


void num2()                 //不需要用到数组
{
     int max = 0;
     int min  = 1000000;
     int n  = 0, num = 0;
     double avg = 0;
     while(scanf("%d",&n) != EOF)
     {
          if(max<=n)  max = n;
          if(min>=n)   min = n;
          avg += (double)n;
          num++;
     }
         avg = avg/(double)num;
         printf("max = %d  min = %d  avg = %f\n",max,min,avg);
}
   void num3()                        //必须用到数组
   {
        int n = 0;
        int allnum[100];
        int distance = 10000000;
        int temp = 0;
        int num1,num2;
        while(scanf("%d",&allnum[n])==1)              //注意数组的传入方法
        {
            n++;
        }
        for(int i = 0; i<n ;i++)
        {
            for(int j= i+1 ; j<n;j++ )
            {
                temp = abs(allnum[j] - allnum[i]);
                if(distance>temp)
                {
                    distance = temp;
                    num1 = allnum[i];
                    num2 = allnum[j];
                }
            }
        }       printf("最小的差距的两个数字为%d和%d,差距为%d",num1,num2,distance);
   }


void num4()              //必须用到数组
{
    int temp = 0;
    int a[1000];
    int num = 0;
    while(scanf("%d",&a[num] ) != EOF)
    {
        num++;
    }
    sort(a,a+num);
    temp = a[num-1];
    for(int i = num-2; i>0;i--)
    {
        if(a[i]<temp)
        {
            printf("第二大的数字是%d",a[i]);
            break;
        }
    }
}


void num5()               //必须用数组
{
      int n = 0 ;
      int a[1000];
      double sum=0;
      double avg = 0;
      double last = 0;
      while(scanf("%d",&a[n]) != EOF)
      {
          sum = sum+a[n];
          n++;
      }
      avg = sum/n;
      sum = 0;
      for(int i = 0; i < n ; i++)
      {
          sum += (a[i] - avg) * (a[i] - avg);
      }
      last = sum/n;
      printf("%.2f",last);
}
void num6()
{
    int n = 0, num = 0;
    int a[1000];
    double sum = 0;
    while(scanf("%d",&a[n]) != EOF)
    {
        sum = sum+a[n];
        n++;
    }
    sum = sum/n;
    for(int i = 0; i<n ; i++)
    {
         if(a[i]<=sum)
         {
              num++;
         }
    }
    printf("比平均数大的有%d个数",n);
}


int main()
{
    //num1();
    //num2();
    //num3();
    //num4();
    //num5();
   // num6();
}

猜你喜欢

转载自blog.csdn.net/m0_37632283/article/details/80087086