美文网首页Linux互联网科技程序员
2007北京市小学生程序设计友谊赛详细答案

2007北京市小学生程序设计友谊赛详细答案

作者: 海天一树X | 来源:发表于2018-12-19 19:06 被阅读13次

    第1题

    解法一:在cmath或math.h中,有个round()函数,可以实现四舍五入。

    #include <iostream>
    #include <cmath>
    using namespace std;
    
    int main()
    {
        int a;
        cin >> a;
        cout << round(a * 2.54) << endl; 
    
        return 0;
    }
    

    注意:网络上有些人说round()不是四舍五入,而是四舍六入五成双,即round(5.5) = 6, round(6.5) = 6。
    我通过在Dev C++, Codeblocks和g++测试,发现C中的round()就是四舍五入,而不是四舍六入五成双。
    测试代码为:

    #include <iostream>
    #include <cmath>
    using namespace std;
    
    int main()
    {
        float a = 0.5;
        while(a < 100)
        {
            cout << a << ',' << round(a) << endl;
            a += 1.0;
        }
    
        return 0;
    }
    

    解法二:不使用round()函数

    #include <iostream>
    using namespace std;
    
    int main()
    {
        int inch;
        cin >> inch;
        float cm = inch * 2.54;
        cout << int(cm + 0.5) ;
    
        return 0;
    }
    

    第2题

    #include <iostream>
    using namespace std; 
    
    struct rabbit
    {
        string name;    // 名字 
        int len;        // 长度 
        int time;       // 时间 
        float v;        // 速度 
    };
     
    int main() 
    {
        int n; 
        cin >> n;
        float maxV = 0;
        string winner;
        
        rabbit r[n];
        for(int i = 0; i < n; i++)
        {
            cin >> r[i].name >> r[i].len >> r[i].time;
            r[i].v = (float)r[i].len / r[i].time;
            if(r[i].v > maxV)
            {
                maxV = r[i].v;
                winner = r[i].name;
            }
        } 
        
        cout << winner << endl;
        return 0;
    }
    

    第3题

    #include <iostream>
    using namespace std; 
    
    void bubbleSort(int a[], int n)
    {
        for(int i = 0; i < n - 1; i++)
        {
            for(int j = 0; j < n - 1 - i; j++)
            {
                if(a[j] > a[j+1])
                {
                    swap(a[j], a[j + 1]);
                }
            }
        }
    }
     
    int main() 
    {
        int n; 
        cin >> n;
        int h[n];
        // 这道题用了冒泡排序,下标建议为0~n-1 
        for(int i = 0; i < n; i++)
        {
            cin >> h[i];
        }
        
        bubbleSort(h, n);
        
        int height;
        cin >> height;
        int begin, end;
        for(int i = 0; i < n; i++)
        {
            if(h[i - 1] != height && h[i] == height)
            {
                begin = i;
            }
            
            // 注意,这个if不能改为else if,为什么? 
            if(h[i] == height && h[i + 1] != height)
            {
                end = i;
            }
        }
        
        // 下标记得+1 
        cout << begin + 1 << ' ' << end + 1<< endl;
        
        return 0;
    }
    

    完整答案请加微信307591841或QQ307591841


    公众号.jpg

    相关文章

      网友评论

        本文标题:2007北京市小学生程序设计友谊赛详细答案

        本文链接:https://www.haomeiwen.com/subject/qfhskqtx.html