第1题

分析:因为小数位数不固定,所以不能用double,所以只能用字符数组。

#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
freopen("first.in", "r", stdin);
freopen("first.out", "w", stdout);

string a; // 或char a[10000];
cin >> a;
cout << a;

return 0;
}

第2题

#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
// freopen("count.in", "r", stdin);
// freopen("count.out", "w", stdout);

int n;
cin >> n;
int num = 1; // 每层的数量
int total = 1; // 所有层的数量
for(int i = 2; i <= n; i++)
{
num += i;
total += num;
}

cout << total << endl;

return 0;
}

第3题

分析:本题考察冒泡排序。

解法一:

#include <iostream>
#include <cstdio>
using namespace std;

#define swapTube(i, j) swap(len[i], len[j]);swap(dia[i], dia[j]);swap(code[i], code[j])

int main()
{
// freopen("best.in", "r", stdin);
// freopen("best.out", "w", stdout);

int n;
cin >> n;
int len[n], dia[n], code[n];
for(int i = 0; i < n; i++)
{
cin >> len[i] >> dia[i] >> code[i];
}

for(int i = 0; i < n - 1; i++)
{
for(int j = i + 1; j < n; j++)
{
if(len[i] < len[j])
{
// 长度从大到小
swapTube(i, j);
}
else if(len[i] == len[j])
{
if(dia[i] > dia[j])
{
// 直径从小到
swapTube(i, j);
}
else if(dia[i] == dia[j])
{
if(code[i] < code[j])
{
// 编号从大到小
swapTube(i, j);
}
}
}
}
}

cout << code[0] << endl;

return 0;
}

解法二:

#include <iostream>
#include <cstdio>
using namespace std;

struct steelTube
{
int len;
int dia;
int code;
};

int main()
{
freopen("best.in", "r", stdin);
freopen("best.out", "w", stdout);

int n;
cin >> n;
steelTube tube[n];
for(int i = 0; i < n; i++)
{
cin >> tube[i].len >> tube[i].dia >> tube[i].code;
}

for(int i = 0; i < n - 1; i++)
{
for(int j = i + 1; j < n; j++)
{
if(tube[i].len < tube[j].len)
{
// 长度从大到小
swap(tube[i], tube[j]);
}
else if(tube[i].len == tube[j].len)
{
if(tube[i].dia > tube[j].dia)
{
// 直径从小到大
swap(tube[i], tube[j]);
}
else if(tube[i].dia == tube[j].dia)
{
if(tube[i].code < tube[j].code)
{
// 编号从大到小
swap(tube[i], tube[j]);
}
}
}
}
}

cout << tube[0].code << endl;

return 0;
}

思考:

1 这里为何可以直接对自定义的结构体steelTube使用swap()函数?
2 如果自己定义一个交换两根钢管的函数swap_(),该如何实现?动手试试。

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