第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
网友评论