为了更好的阅读体检,可以查看我的算法学习网
本题在线评测链接:P1041
题目描述
这是一个小岛上的传统活动,每年夏天居民们会举办一场盛大的比赛,以庆祝丰收和团结精神。比赛的主要环节是选手们轮流背诵他们准备好的一句话,而评判会根据每个句子的平均重量来评分。
今年,比赛的主题是环保,选手们都准备了一些有关环保的话题,其中包括垃圾分类、节能减排等等。为了让比赛更有趣,评委决定对选手们的句子平均重量进行一些特殊的评分规则。
比如,如果选手的句子平均重量小于一定值,那么他们会得到额外的分数,反之则会被扣分。选手们都在想着如何利用这些规则来提高自己的得分,他们开始认真地考虑每个单词的长度,并且计算出了自己句子的平均重量。
每个句子由多个单词组成,句子中的每个单词的长度都可能不一样,我们假设每个单词的长度 N i N_i Ni 为该单词的重量,你需要做的就是给出整个句子
的平均重量 V V V 。
输入只有一行,包含一个字符串 S S S (长度不会超过 100 100 100 ),代表整个句子,句子中只包含大小写的英文字母,每个单词之间有一个空格。
输出句子 S S S 的平均重量 V V V (四舍五入保留两位小数)。
样例
输入
Who Love Solo
输出
3.67
题目思路
只需统计出字母个数和单词个数即可,每个单子以空格分隔,所以遍历字符串每次遇到空格即说明单词数增加
代码
Java代码
import java.util.Scanner;
class Main {
public static void main(String[] args) {
String s;
Scanner scanner = new Scanner(System.in);
s = scanner.nextLine();
int num = 0, cnt = 1;//cnt为单词个数,num为字母个数
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == ' ')
cnt++;
else
num++;
}
System.out.printf("%.2f", 1.0 * num / cnt);//输出时注意将int转为double
}
}
Python代码
s=input()
cnt,num=1,0 #cnt为单词个数,num为字母个数
for i in range(len(s)):
if (s[i]==' '):cnt=cnt+1
else: num=num+1
print("%.2f" %(num/cnt))
C++代码
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
string s;
getline(cin,s);
int cnt=1,num=0; //cnt为单词个数,num为字母个数
for (int i=0;i<s.size();i++)
{
if (s[i]==' ') cnt++;
else num++;
}
printf("%.2f\n", 1.0*num/cnt);//输出时注意将int转为double
}