zoukankan      html  css  js  c++  java
  • #ACsaber ——简单排序、字符串加空格、数组中的行 ~20.10.22

    第一题:简单排序

    点这里看原题

    过程:由于第一次打这个有点紧张,明明这么简单却手抖没写出来……

    答案

    #include<bits/stdc++.h>
    using namespace std;
    int a[3], b[3];
    int main(){
        for(int i = 0; i < 3; i ++)
            cin >> a[i];
        for(int i = 0; i < 3; i ++) b[i] = a[i];
        sort(a + 0, a + 3);
        for(int i = 0; i < 3; i ++)
            cout << a[i] << endl;
        cout << endl;
        for(int i = 0; i < 3; i ++)
            cout << b[i] << endl;
        
        return 0;
    }
    

    第二题 :字符串加空格

    过程:由于字符串的输入输出不熟练,还是被秒杀了……

    答案

    #include<iostream>
    using namespace std;
    int main()
    {
        string a;
        getline(cin, a);
        for(char c : a) cout << c << ' '; 
        return 0;
    }
    

    第三题:数组中的行

    点这里

    过程:这个鬼题卡了我一个小时,原因就是float 和double!

    float会在取近似值的时候舍掉对应精度后面的所有数值!只有double 才会四舍五入!
    首先看看这个程序:

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        float a = 1.00;
        for(int i = 1; i <= 10; i ++)
            a += 0.01, printf("当a等于 %f 时,精确到小数点后两位数是 %.1f 
    ", a , a);
        puts("");
        for(int i = 1; i <= 10; i ++)
            a += 0.001, printf("当a等于 %f 时,精确到小数点后两位数是 %.2f 
    ", a , a);
        
        return 0;
    }
    

    运行结果:

    当a等于 1.010000 时,精确到小数点后两位数是 1.0 
    当a等于 1.020000 时,精确到小数点后两位数是 1.0 
    当a等于 1.030000 时,精确到小数点后两位数是 1.0 
    当a等于 1.040000 时,精确到小数点后两位数是 1.0 
    当a等于 1.050000 时,精确到小数点后两位数是 1.0 
    当a等于 1.060000 时,精确到小数点后两位数是 1.1 
    当a等于 1.070000 时,精确到小数点后两位数是 1.1 
    当a等于 1.080000 时,精确到小数点后两位数是 1.1 
    当a等于 1.090000 时,精确到小数点后两位数是 1.1 
    当a等于 1.100000 时,精确到小数点后两位数是 1.1 
    
    当a等于 1.101000 时,精确到小数点后两位数是 1.10 
    当a等于 1.102000 时,精确到小数点后两位数是 1.10 
    当a等于 1.103000 时,精确到小数点后两位数是 1.10 
    当a等于 1.104000 时,精确到小数点后两位数是 1.10 
    当a等于 1.105000 时,精确到小数点后两位数是 1.11 
    当a等于 1.106000 时,精确到小数点后两位数是 1.11 
    当a等于 1.107000 时,精确到小数点后两位数是 1.11 
    当a等于 1.108000 时,精确到小数点后两位数是 1.11 
    当a等于 1.109000 时,精确到小数点后两位数是 1.11 
    当a等于 1.110000 时,精确到小数点后两位数是 1.11 
    

    于是我们可以发现,当精度到小数点一位时,float 居然是五舍六入!!!

    再看看double的表现:

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        double a = 1.00;
        for(int i = 1; i <= 10; i ++)
            a += 0.01, printf("当a等于 %f 时,精确到小数点后两位数是 %.1lf 
    ", a , a);
        puts("");
        for(int i = 1; i <= 10; i ++)
            a += 0.001, printf("当a等于 %f 时,精确到小数点后两位数是 %.2lf 
    ", a , a);
        
        return 0;
    }
    

    运行结果:

    当a等于 1.010000 时,精确到小数点后两位数是 1.0 
    当a等于 1.020000 时,精确到小数点后两位数是 1.0 
    当a等于 1.030000 时,精确到小数点后两位数是 1.0 
    当a等于 1.040000 时,精确到小数点后两位数是 1.0 
    当a等于 1.050000 时,精确到小数点后两位数是 1.1 
    当a等于 1.060000 时,精确到小数点后两位数是 1.1 
    当a等于 1.070000 时,精确到小数点后两位数是 1.1 
    当a等于 1.080000 时,精确到小数点后两位数是 1.1 
    当a等于 1.090000 时,精确到小数点后两位数是 1.1 
    当a等于 1.100000 时,精确到小数点后两位数是 1.1 
    
    当a等于 1.101000 时,精确到小数点后两位数是 1.10 
    当a等于 1.102000 时,精确到小数点后两位数是 1.10 
    当a等于 1.103000 时,精确到小数点后两位数是 1.10 
    当a等于 1.104000 时,精确到小数点后两位数是 1.10 
    当a等于 1.105000 时,精确到小数点后两位数是 1.10 
    当a等于 1.106000 时,精确到小数点后两位数是 1.11 
    当a等于 1.107000 时,精确到小数点后两位数是 1.11 
    当a等于 1.108000 时,精确到小数点后两位数是 1.11 
    当a等于 1.109000 时,精确到小数点后两位数是 1.11 
    当a等于 1.110000 时,精确到小数点后两位数是 1.11 
    

    double 就正常了!!!

  • 相关阅读:
    alpha 冲刺 —— 十分之一
    福大软工 · 第七次作业
    福大软工 · 第八次作业(课堂实战)- 项目UML设计(团队)
    2018软工实践——团队答辩
    福大软工1816 · 第五次作业
    福大软工1816 · 第四次作业
    软工实践第四次作业--结队的第一次合作
    软工实践第二次作业--思索
    华中农业大学第五届程序设计大赛网络同步赛解题报告2(转)
    华中农业大学第五届程序设计大赛网络同步赛解题报告(转)
  • 原文地址:https://www.cnblogs.com/yuanyulin/p/14026733.html
Copyright © 2011-2022 走看看