初级组
编程题第一题
编程实现: 做统计。
输入 10 个正整数,以空格分隔。依次输出其中的最大值、最小值以及平均值,以逗号分隔。
样例输入:
1 2 3 4 5 6 7 8 9 10
样例输出:
10,1,5.5
#include <iostream>
using namespace std;
int main()
{
int maxNum = 0, minNum = 0x3f3f3f3f, sum = 0, x;
for (int i = 0; i < 10; ++i)
{
cin >> x;
sum += x;
if (x > maxNum)
{
maxNum = x;
}
if (x < minNum)
{
minNum = x;
}
}
cout << maxNum << "," << minNum << "," << sum / 10.0 << endl;
}
编程题第二题
编程实现: 比大小。
输入一个正方形的边长(a)及一个长方形的长与宽(b、c),然后比较两个图形的面积。如果长方形面积大, 输出“RECTANGLE”;如果正方形面积大,输出“SQUARE”;如果一样大,输出“SAME”。
输入描述:
输入正整数a、b、c(0 < a、b、c ≤ 1000),分别代表正方形的边长和长方形的长与宽。
输出描述:
如果长方形面积大,输出“RECTANGLE”;
如果正方形面积大,输出“SQUARE”;
如果一样大, 输出 “SAME”。
样例输入:
5 4 6
样例输出:
SQUARE
#include <iostream>
using namespace std;
int main()
{
int a, b, c, s1, s2;
cin >> a >> b >> c;
s1 = a * a;
s2 = b * c;
if (s2 > s1)
{
cout << "RECTANGLE" << endl;
}
else if (s1 > s2)
{
cout << "SQUARE" << endl;
}
else
{
cout << "SAME" << endl;
}
}
编程题第三题
编程实现: 数单词。
编程统计输入句子中出现“lanqiao”字样的个数。(注意,“lanqiao”字样可以是不同大小写字母的组合,例如:LanQIAO、LanQiao 等)
输入描述:
输入一个字符串(0 ≤ 字符串长度 ≤ 100)。
输出描述:
输出该字符串中“lanqiao”字样出现的次数。(注意:“lanqiao”字样可以是不同大小写字母的组合)
样例输入:
Lanqiaoqingshao,lanqiaojingsai,Lanqiaoceping.
样例输出:
3
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
cin >> s;
int len = s.size();
for (int i = 0; i < len; ++i)
{
s[i] = (char)tolower(s[i]); // 转换成小写字母
}
const string t = "lanqiao";
int cnt = 0;
for (int i = 0; i <= len - 7; ++i)
{
if (t == s.substr(i, 7))
{
cnt++;
}
}
cout << cnt << endl;
return 0;
}
编程题第四题
编程实现: 查找路径。
有一张 m×n 个小方格的地图,一个机器人位于地图的左上角(如图标记为 Start 的地方),它每步只能向右或者向下移动一格,如果走到右下角的终点(如图标记为 Finish 的地方),有多少种不同的方法?
例如,一个 3×2 的地图,行走的方法数是 3 种,分别是:
右 -> 右 -> 下
右 -> 下 -> 右
下 -> 右 -> 右
输入描述:
两个整数 m (m ≤ 100) 和 n ( n ≤ 100),代表地图的行数和列数。
输出描述:
一个整数,表示行走的方法数。
样例输入:
8 8
样例输出:
3432
#include <iostream>
using namespace std;
const int N = 100;
long long roads[N + 2][N + 2] = {0}; // roads[i][j]: 从起点 (0, 0) 到 (i, j) 的路线总数
int main()
{
int m, n;
cin >> m >> n;
// 第 0 行、第 0 列的格子都只有一条路线
for (int i = 0; i < m; ++i)
{
roads[i][0] = 1;
}
for (int i = 0; i < n; ++i)
{
roads[0][i] = 1;
}
for (int i = 1; i < m; ++i)
{
for (int j = 1; j < n; ++j)
{
roads[i][j] = roads[i - 1][j] + roads[i][j - 1];
}
}
cout << roads[m - 1][n - 1] << endl;
return 0;
}