CH2-数据的输入和格式

2016-11-16  本文已影响20人  sixleaves

数据统计

//
// Created by sixleaves on 2016/11/16.
//
#include <cstdio>

#define DEBUG
#define INF 10000000
int main () {


#ifdef DEBUG

    #ifdef REDIRECTSTD
        // method 1 重定向输入输出
        freopen("data.in", "r", stdin);
        freopen("data.out", "w", stdout);
    #else
        // method 2 从文件中读
        FILE  *fin = fopen("data.in", "rb");
        FILE  *fout = fopen("data.out", "wb");
    #endif

#endif

    int x, n = 0, min = INF, max = -INF, s = 0;
    while (fscanf(fin, "%d", &x) == 1) {

        s += x;
        if (x < min) min = x;
        if (x > max) max = x;
        n++;
    }
    fprintf(fout,"%d %d %.3f\n", min, max, (double)s/n);
    fclose(fin);
    fclose(fout);
    return 0;
}


从文件中读写

如果不允许重定向, 那么从文件中读写, 必须使用fopen函数先获得文件指针.

两组数据之间用空行分开的格式

输入一些数据, 求出他们的最小值, 最大值和平均值(保留3位小数).输入保证这些数是不超过1000的整数.

输入包含多组数据, 每组数据第一行是整数个数n, 第二行是n个整数.相邻两组之间应该输出一个空行.

Input

8

2 8 3 5 17 3 6

4

-4 6 10 0

0

Output

Case 1: 1 8 4.375

Case 2: -4 10 3.000

易错点:

两组数据之间用空行分开的格式, 这里一般有个特殊情况, 就是如果是一组的话是不用用空行分隔的, 所以要对这种情况做判断, 在第一组的时候不要输出空行分隔, 而是在第二组要输出前开始.

#include <stdio.h>
#define INF 1000000
int main() {
  int x, n =0, min = INF, max= -INF, s = 0, kase = 0;
  while (scanf("%d", &n) == 1 && n) {
    int s = 0;
    for (int i = 0; i < n; i++) {
      scanf("%d", &x);
      s += x;
      if (x < min) min = x;
      if (x > max) max = x;
    }
    if (kase) printf("\n");
    printf("Case %d: %d %d %3.f\n", ++kase, min, max, (double)s/n);
  }
  return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读