{ }codelper
文字列の分割1行読み込みP0012

単語を数える

英単語が空白で区切られた一行が与えられる。
空白は続くこともあり、行の前後にあることもある。
単語が全部でいくつあるか出力せよ。

入力
長さ 1〜200、単語は 1 個以上
出力
単語の数
例 1 · stdin
  hello   big world 
stdout
3
main.py
入力(stdin)

実行すると、これらの行が順に input()・標準入力に渡されます(実行中に入力を求めません)。

$ 準備完了

コードを入力して解くにはパソコンで開いてください。モバイルでは問題と解答を見られます。

ほかの言語では?言語別の解答を見る · 8 言語の解答

空白が続くと分け方で答えが変わります:Python split()(引数なし)はまとめてくれますが、split(" ") は空の欠片まで数えます。
Java は trim() のあと split("\\s+")、C# は RemoveEmptyEntries。
C・C++ は scanf("%s")・cin >> が空白を飛ばすので、読めた回数がそのまま答えです。

Pythonmain.py · 1 行
print(len(input().split()))
JavaScriptmain.js · 2 行
const line = require("fs").readFileSync(0, "utf8").split("\n")[0];console.log(line.split(" ").filter((w) => w !== "").length);
TypeScriptmain.ts · 3 行
import { readFileSync } from "node:fs";const line: string = readFileSync(0, "utf8").split("\n")[0];console.log(line.split(" ").filter((w) => w !== "").length);
JavaMain.java · 8 行
import java.util.Scanner; public class Main {    public static void main(String[] args) {        String line = new Scanner(System.in).nextLine().trim();        System.out.println(line.split("\\s+").length);    }}
C#Main.cs · 10 行
using System; class Program{    static void Main()    {        string line = Console.ReadLine();        Console.WriteLine(line.Split(' ', StringSplitOptions.RemoveEmptyEntries).Length);    }}
C++main.cpp · 9 行
#include <iostream>#include <string> int main() {    std::string w;    int count = 0;    while (std::cin >> w) count++;    std::cout << count << '\n';}
Cmain.c · 9 行
#include <stdio.h> int main(void) {    char w[201];    int count = 0;    while (scanf("%200s", w) == 1) count++;    printf("%d\n", count);    return 0;}
Craykonmain.cray · 3 行
line = コンソール.行読み();words = line.分ける("");コンソール.書く(words.個数);