zoukankan      html  css  js  c++  java
  • 游记(3)

    为了更好的学习,从程序竞赛类书籍学习一些好的做法,除了上面提到的 time.h 中的 clock( ) 的做法外,还有获取输入 拿到输出的方法,如重定向,文件,标准输入输出等。

     0.0 重定向

    #include <stdio.h>
    #include <time.h>
    
    #define LOCAL
    
    #define INF 1000000
    
    int main(int argc, char *argv[]) {
    
    #ifdef LOCAL
    freopen("data.in","r",stdin);
    freopen("data.out","w",stdout);
    #endif
    
    int x,n = 0, s = 0, min = INF, max = -INF;
    
    while (scanf("%d",&x)==1) {
    s += x;
    if (x < min) min = x;
    if (x > max) max = x;
    
    n++;
    }
    
    printf ("s/n=%f max=%d min=%d
    ",(double)s/n,max,min);
    
    printf("%.4f
    ",(double)clock() / CLOCKS_PER_SEC);
    
    return 0;
    }
    

    0.1  文件

    #include <stdio.h>
    #include <time.h>
    
    /* #define LOCAL */
    
    #define INF 1000000
    
    int main(int argc, char *argv[])  {
    
    #ifdef LOCAL
    
      freopen("data.in","r",stdin);
      freopen("data.out","w",stdout);
    #endif
    
      FILE * fin;
      FILE * fout;
    
      fin = fopen("data.in","rb"); 
      fout = fopen("data.out","rb");
      
      // fin=stdin;
      // fout= stdou;
      
      int x,n = 0, s = 0, min = INF, max = -INF;
      
      while (scanf("%d",&x)==1)  {
        s  += x;
        if (x < min) min = x;
        if (x > max) max = x;
    
        n++;
      }
    
      printf ("s/n=%f max=%d min=%d
    ",(double)s/n,max,min);
        
    
    
      printf("%.4f
    ",(double)clock() / CLOCKS_PER_SEC);
    
      return 0;
    }
    
    
    /*****************************************************
    这个是是使用文件管理输入输出,使用文件比使用重定向灵活处在于,使用重定向则无法使用标准输入输出,而使用文件输入输出的方法,可以切换到标准输入输出,这个例子中,注释掉上面给 fin,fout 的赋值语句,反注释掉 fin = stdin;fout = stdout,就可以使用标准输入输出
    *****************************************************/

    1 Function Pointer  

    //function pointer
    #include <stdio.h>
    
    int sum (int a, int b) {
    return a+b;
    }
    
    int sum1 (int a,int b) {
    return a-b;
    }
    
    int sum2 (int a,int b) {
    return a+b*2;
    }
    
    
    int cal (int (*f)(int a,int b),int a,int b) {
    return f(a,b);
    }
    
    
    int main(int argc, char *argv[]) {
    int (*f)(int a,int b);
    f= sum;
    printf("%d
    ",f(3,4));
    printf("%d
    ",cal(sum,3,4));
    
    int (*CalGroup[3])(int a,int b) = {sum,sum1,sum2};
    printf("Function Group:
    ");
    for (int i = 0;i < 3;i++) {
    printf("%d
    ",CalGroup[i](3,4));
    }
    
    return 0;
    }
    

      

  • 相关阅读:
    golng切片实现分页
    go mgo包 简单封装 mongodb 数据库驱动
    docker 制作自己的镜像
    mongodb 数据库操作——备份 还原 导出 导入
    Override
    Parallel.For循环与普通的for循环的比较
    C#死锁案例代码
    C#的构造函数在基类和父类中执行顺序
    C#构造函数
    C# 多线程的死锁
  • 原文地址:https://www.cnblogs.com/hanxinle/p/7884199.html
Copyright © 2011-2022 走看看