前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2007北京市小学生程序设计友谊赛详细答案

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

作者头像
海天一树
发布2019-01-02 17:25:47
4820
发布2019-01-02 17:25:47
举报
文章被收录于专栏:海天一树

第1题

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

代码语言:javascript
复制
#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()就是四舍五入,而不是四舍六入五成双。 测试代码为:

代码语言:javascript
复制
#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()函数

代码语言:javascript
复制
#include <iostream>
using namespace std;

int main()
{
    int inch;
    cin >> inch;
    float cm = inch * 2.54;
    cout << int(cm + 0.5) ;

    return 0;
}

第2题

代码语言:javascript
复制
#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题

代码语言:javascript
复制
#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;
}

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 KidsCode少儿编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第1题
  • 第2题
  • 第3题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档