题目描述
这是一个小岛上的传统活动,每年夏天居民们会举办一场盛大的比赛,以庆祝丰收和团结精神。比赛的主要环节是选手们轮流背诵他们准备好的一句话,而评判会根据每个句子的平均重量来评分。
今年,比赛的主题是环保,选手们都准备了一些有关环保的话题,其中包括垃圾分类、节能减排等等。为了让比赛更有趣,评委决定对选手们的句子平均重量进行一些特殊的评分规则。
比如,如果选手的句子平均重量小于一定值,那么他们会得到额外的分数,反之则会被扣分。选手们都在想着如何利用这些规则来提高自己的得分,他们开始认真地考虑每个单词的长度,并且计算出了自己句子的平均重量。
每个句子由多个单词组成,句子中的每个单词的长度都可能不一样,我们假设每个单词的长度 ( N_i ) 为该单词的重量,你需要做的就是给出整个句子的平均重量 ( V )。
输入描述
输入只有一行,包含一个字符串 ( S )(长度不会超过 100),代表整个句子。句子中只包含大小写英文字母,每个单词之间有一个空格。
输出描述
输出句子 ( S ) 的平均重量 ( V )(四舍五入保留两位小数)。
用例输入
Who Love Solo
3.67
解题思路
本题的目标是计算一个句子中所有单词的平均长度。主要步骤如下:
-
读取输入:
- 使用
getline
读取整行输入,确保可以处理包含空格的句子。
- 使用
-
分割单词:
- 使用
istringstream
将句子分割成单词。
- 使用
-
计算总长度和单词数量:
- 遍历每个单词,累加单词的长度,并统计单词的数量。
-
格式化输出:
- 使用
fixed
和setprecision(2)
将结果保留两位小数并输出。
- 使用
代码
#include <iostream>
#include <vector>
#include <queue>
#include <sstream>
#include <string>
#include <stack>
#include <algorithm>
#include <map>
#include <iomanip>
using namespace std;
#define msize 105int main() {ios::sync_with_stdio(false);cin.tie(nullptr);string input;getline(cin, input); // 读取整行输入istringstream is(input); // 使用istringstream分割单词string temp;int all = 0; // 总长度int n = 0; // 单词数量while (is >> temp) { // 遍历每个单词all += temp.size(); // 累加单词长度n++; // 单词数量加1}cout << fixed << setprecision(2) << (double)all / n; // 输出平均重量,保留两位小数
}