
专栏导读
本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。
刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。
一、题目描述
每个句子由多个单词组成,句子中的每个单词的长度都可能不一样,我们假设每个单词的长度Ni为该单词的重量,你需要做的就是给出整个句子的平均重量V。
二、输入描述
无
三、输出描述
无
四、测试用例
测试用例1:
1、输入
Who Love Solo
2、输出
3.67
3、说明
Who(3) + Love(4) + Solo(4) = 11,平均值 = 11/3 = 3.67
测试用例2:
1、输入
Hello World
2、输出
5.00
3、说明
Hello(5) + World(5) = 10,平均值 = 10/2 = 5.00
五、解题思路
主要解题思路
- 读取一行输入作为句子
- 将句子按空格分割成单词数组\
- 遍历每个单词,累加所有单词的长度
- 计算平均长度:总长度除以单词数量
- 格式化输出,保留两位小数
六、Python算法源码
# 读取一行输入作为句子
sentence = input()
# 将句子按空格分割成单词列表
words = sentence.split()
# 计算所有单词的总长度
total_length = sum(len(word) for word in words)
# 计算平均长度(单词的平均重量)
average_weight = total_length / len(words)
# 格式化输出,保留两位小数
print(f"{average_weight:.2f}")
七、JavaScript算法源码
// 引入readline模块用于读取控制台输入
const readline = require('readline');
// 创建readline接口
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
// 监听输入事件
rl.on('line', (sentence) => {
// 将句子按空格分割成单词数组
const words = sentence.split(' ');
// 计算所有单词的总长度
let totalLength = 0;
for (const word of words) {
totalLength += word.length;
}
// 计算平均长度(单词的平均重量)
const averageWeight = totalLength / words.length;
// 格式化输出,保留两位小数
console.log(averageWeight.toFixed(2));
// 关闭readline接口
rl.close();
});
八、C算法源码
#include <stdio.h>
#include <string.h>
int main() {
// 定义字符数组存储输入的句子
char sentence[1000];
// 读取整行输入
fgets(sentence, sizeof(sentence), stdin);
// 去除换行符
sentence[strcspn(sentence, "\n")] = 0;
// 使用strtok分割字符串
char *word = strtok(sentence, " ");
int wordCount = 0; // 单词计数
int totalLength = 0; // 总长度
// 遍历所有单词
while (word != NULL) {
// 累加单词长度
totalLength += strlen(word);
// 单词计数加1
wordCount++;
// 获取下一个单词
word = strtok(NULL, " ");
}
// 计算平均长度(单词的平均重量)
double averageWeight = (double)totalLength / wordCount;
// 格式化输出,保留两位小数
printf("%.2f", averageWeight);
return 0;
}
九、C++算法源码
#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>
using namespace std;
int main() {
// 定义字符串存储输入的句子
string sentence;
// 读取整行输入
getline(cin, sentence);
// 使用字符串流来分割句子
stringstream ss(sentence);
string word;
int wordCount = 0; // 单词计数
int totalLength = 0; // 总长度
// 按空格分割并遍历所有单词
while (ss >> word) {
// 累加单词长度
totalLength += word.length();
// 单词计数加1
wordCount++;
}
// 计算平均长度(单词的平均重量)
double averageWeight = static_cast<double>(totalLength) / wordCount;
// 设置输出格式,保留两位小数
cout << fixed << setprecision(2) << averageWeight;
return 0;
}
🏆下一篇:华为OD机试真题 - 简易内存池(Python/JS/C/C++ 2025 C卷 200分)
🏆本文收录于,华为OD机试真题(Python/JS/C/C++)
刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。


被折叠的 条评论
为什么被折叠?



