zoukankan      html  css  js  c++  java
  • C语言:统计整型变量m中各数字出现的次数,-去掉一个最高分和一个最低分,然后求平均值,(注意最低分和最高分可能有多个数并列)

    //统计整型变量m中各数字出现的次数,并存放在数组a中,其中,a[0]存放0出现的次数,a[1]存放1出现的次数。

     1 #include  <stdio.h>
     2 void fun( int  m, int  a[10])
     3 {  int  i;
     4   for (i=0; i<10; i++)
     5 /**********found**********/
     6     a[i] = 0;
    7 while (m > 0) 8 { 9 /**********found**********/ 10 i = m%10; 11 a[i]++; 12 /**********found**********/ 13 m = m/10; 14 } 15 } 16 void main() 17 { int m, a[10],i; 18 printf("请输入一个整数 : "); scanf("%d", &m); 19 fun(m, a); 20 for (i=0; i<10; i++) printf("%d,",a[i]); printf(" "); 21 }
    
    
     
     

     //将一组得分中,去掉一个最高分和一个最低分,然后求平均值,并通过函数返回,函数形参a所指存放得分的数组,形参n存放得分个数。

     1 #include  <stdio.h>
     2 void NONO();
     3 double fun(double  a[ ] , int  n)
     4 {
     5     double sum = 0;
     6     double min, max;
     7     min = max = a[0];
     8     int c=0,b=0;
     9     for (int i = 1; i < n; i++)
    10     {
    11         if (a[i] > max) max = a[i];
    12         if (a[i] < min) min = a[i];
    13     }
    14     for (int j = 0; j < n; j++)
    15     {
    16         if (a[j] == max && c == 0) { c++; continue; }//切记这里,需要设置标志位,因为最大数和最小数有可能有多个并列。
    17         if (a[j] == min && b == 0) { b++; continue; }
    18         sum += a[j] / (n - 2);
    19     }
    20     return sum;
    21 
    22 
    23 }
    24 
    25 void main()
    26 {  double  b[10],  r;    int  i;
    27     printf("输入10个分数放入b数组中 :  ");
    28     for (i=0; i<10; i++)   scanf("%lf",&b[i]);
    29     printf("输入的10个分数是 :  ");
    30     for (i=0; i<10; i++)   printf("%4.1lf ",b[i]);    printf("
    ");
    31     r = fun(b, 10);
    32     printf("去掉最高分和最低分后的平均分 :  %f
    ", r );
    33     NONO();
    34 }
    35 
    36 void NONO()
    37 {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
    38   FILE *fp, *wf ;
    39   int i, j ;
    40   double b[10], r ;
    41 
    42   fp = fopen("in.dat","r") ;
    43   wf = fopen("out.dat","w") ;
    44   for(i = 0 ; i < 10 ; i++) {
    45     for(j = 0 ; j < 10 ; j++) {
    46       fscanf(fp, "%lf ", &b[j]) ;
    47     }
    48     r = fun(b, 10) ;
    49     fprintf(wf, "%f
    ", r) ;
    50   }
    51   fclose(fp) ;
    52   fclose(wf) ;
    53 }

    //错误解答:

     1     double sum = 0;
     2     double min, max;
     3     min = max = a[0];
     4     for (int i = 1; i < n; i++)
     5     {
     6         if (a[i] > max) max = a[i];
     7         if (a[i] < min) min = a[i];
     8     }
     9     for (int j = 0; j < n; j++)
    10     {
    11         if (a[j] == max || a[j] == min) continue;//如果最大数最小数有多个时,会出现不准确现象。
    12         sum += a[j] / (n - 2);
    13     }
    14     return sum;

    //另一种解答:

     1     double sum = 0;
     2     double min, max;
     3     min = max = a[0];
     4     for (int j = 0; j < n; j++)
     5     {
     6         if (a[j] > max) max = a[j];
     7         if (a[j] < min) min = a[j];
     8         sum += a[j];
     9     }
    10     sum = sum - max - min;
    11     return sum/(n-2);
  • 相关阅读:
    Think in java 4th读书笔记__last update20151130
    Angular学习笔记--last_update 20151106
    程序员技术练级攻略(转载)
    缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题(转载)
    简单理解 RPC(转载)
    Redis 为什么使用单进程单线程方式也这么快(转载)
    redis详解(三)-- 面试题(转载)
    redis应用-sortedset实现排行榜(转载)
    LRU原理和Redis实现——一个今日头条的面试题(转载)
    全面理解Java内存模型(JMM)及volatile关键字(转载)
  • 原文地址:https://www.cnblogs.com/ming-4/p/10523591.html
Copyright © 2011-2022 走看看