言語別標準入出力

Latest Author yuki2006 /Date 2016-07-10 14:27:12 / Views 9850
2 (Favした一覧ページは作成中です。)
各問題の入出力の受け取り方です。 ここでは、 No.9001 標準入出力の練習問題(テスト用)の問題を例にしております。

C++

#include <iostream>
#include <string>

using namespace std;

int main() {
    int a, b;
    string s;

    // 標準入力から、空白や改行で区切られた整数と文字列を読み込む。
    cin >> a >> b >> s;

    // 整数と文字列を空白で区切って、標準出力に書き出す。
    cout << a + b << " " << s << endl;
    return 0;
}
data9824さん提供

C

#include <stdio.h>  // scanfとprintfを使うおまじない

int main(int argc, char *argv[]){
    int A, B;
    char S[11];

    // 標準入力から読み込む(空白や改行で勝手に区切ってくれる)
    // 逆に空白込みの文字列を読み込む場合は別の方法で読む必要がある。
    scanf("%d%d%s", &A, &B, S);

    // 標準出力に出力
    printf("%d %s\n", A + B, S);

    return 0;
}
    
なおさん提供

Java

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        // 標準入力から読み込む際に、Scannerオブジェクトを使う。
        Scanner sc = new Scanner(System.in);

        // int 1つ分を読み込む
        int a = sc.nextInt();

        // int 1つ分を読み込む
        int b = sc.nextInt();

        // String 1つ分を読み込む
        String s = sc.next();

        // 標準出力に書き出す。
        System.out.println((a + b) + " " + s);
    }
}

C#

using System;
public class Program
{
    static void Main()
    {
        string s = Console.ReadLine();
        string[] t = s.Split(' ');
        int a = int.Parse(t[0]);
        int b = int.Parse(t[1]);
        s = Console.ReadLine();
        Console.WriteLine("{0} {1}", a + b, s);
    }
}
camypaperさん提供

D

import std.stdio, std.conv, std.string, std.range, std.array,
       std.algorithm;

void main() {
  auto I = readln().strip().split().map!(to!int)().array();
  auto S = readln().strip();

  writeln( I.sum, " ", S );
}
    
diginatuさん提供

Ruby

A,B=gets.split.map(&:to_i)
print A+B,' ',gets
cielさん提供

Python2 (PyPy2)

# -*- coding: utf-8 -*-
# ↑の一行をかかないと日本語のコメントが書けないので注意です。

# 標準入力から一行分を読み出し、文字列として格納する。
first = raw_input()

# 読み込んだ文字列をスペースで分割する。
split_first = first.split()

# それぞれをint型に変換する。
A = int(split_first[0])
B = int(split_first[1])

# 慣れてくると この一行でよい
# A, B = map(int, raw_input().split()) 

#2行目を読み込む
S = raw_input()

# 標準出力に書き出す。
# カンマで区切るとスペースで分割してくれるので楽です。
print A + B, S

Python3 (PyPy3)

# 標準入力から一行分を読み出し、文字列として格納する。
first = input()

# 読み込んだ文字列をスペースで分割する
split_first = first.split()

# それぞれをint型に変換する
A = int(split_first[0])
B = int(split_first[1])

# 慣れてくると この一行でよい
# A, B = map(int, input().split()) 

# 参考: リストを読む際はlist()で覆ってやらないといけない
# L = list(map(int, input().split()))

#2行目を読み込む
S = input()

# 標準出力に書き出す。
# カンマで区切るとスペースで分割してくれるので楽です。
print(A + B, S)
標準入力を一行分読み出し、文字列に格納する関数は、
Python2ではraw_input()、Python3ではinput()です。
Python2のinput()と同じ動きをする組込み関数はPython3には存在せず(※)、
Python3にはraw_input()という名前の組み込み関数は存在しません。
※eval(input())でエミュレートする案が有名か。
printもpython3からは関数呼び出しになっているので注意(注:Python2でもfrom __future__ import print_functionすることでこの挙動に出来ます)

PHP

<?php
    //一行分を読み込む, 空白で分割してそれぞれ$aと$bの変数に入れる
    list($a, $b) = explode(" ", trim(fgets(STDIN)));
    
    $c = $a + $b;
    //2行目を読み込む
    $S = trim(fgets(STDIN));
    //標準出力に書き出す。
    printf("$c $S\n");
最初に <?php をつけないといけないことに注意。最後の?>は必要ありません。

Perl

#!/usr/bin/perl

# 1行読み込む
$N = <>;
# 末尾に改行が付いているので取り除く
chomp $N;
# 空白で分割する
($A, $B) = split /\s/, $N;

# 1行読み込む
$S = <>;
# 末尾に改行が付いているので取り除く
chomp $S;

# 標準出力に出力します
print $A + $B, " ", $S;
なおさん提供

Perl 6

# 1行読み込んで空白で分割
my ($A,$B) = get().split(' ');

# 1行読み込む
my $S = get();

# 計算して出力
say $A+$B, ' ', $S;
なおさん提供

Scala

import scala.io.StdIn.readLine

object Main {
  def main(args: Array[String]){
    val ab = readLine().split(" ").map(_.toInt)
    val (a,b) = (ab(0),ab(1))
    val s = readLine()

    val n = a+b
    println(s"$n $s")
  }
}
    
ともきさん提供

JavaScript

nodeコマンドなどで端末でする場合は、入力が終わりというシグナルCtrl+Dを押す必要がある。
function Main(input) {
    // inputにはすべての入力の文字列が与えられるので必要に応じて input.split("\n") などで分割する。

    var data = input.split("\n")
    
    var first_line = data[0].split(" ")
    var second_line = data[1]
    
    var c = parseInt(first_line[0]) + parseInt(first_line[1])

    console.log(c + " " + second_line);
}

// Don't edit this line!
Main(require("fs").readFileSync("/dev/stdin", "utf8"));
CodeforcesではNode.jsではなくv8が使用されている。両対応になる入出力例は以下のとおり(ただし空行を正しく処理できない点は注意を要する)。
var main=function(){
	var a=readline().split(' ').map(Number);
	print(a[0]+a[1]+' '+readline());
};

/// IO ///
if(typeof process!=='undefined'){
	//node.js
	var print=function(x){
		console.log(x);
	}
	var readline=(function(){
		var T=[],cnt=0;
		var stdin = process.openStdin();
		stdin.setEncoding('utf8');

		var input_fragment="";
		stdin.on('data', function(input) {
			var ref=(input_fragment+input).split("\n");
			input_fragment=ref.pop();
			for(var i=0;i<ref.length;i++){
				if(ref[i]=='')continue;
				T.push(ref[i]);
			}
		});
		stdin.on('end', function(z) {
			if(input_fragment){
				var ref=(input_fragment+"\n").split("\n");
				input_fragment=ref.pop();
				for(var i=0;i<ref.length;i++){
					if(ref[i]=='')continue;
					T.push(ref[i]);
				}
			}
			main();
		});

		return function(){
			if(T.length<=cnt)return null;
			return T[cnt++];
		};
	})();
}else{
	//v8
	main();
}
cielさん提供

Go

package main
import "fmt"

func main() {
	var A, B int
	var S string
	fmt.Scan(&A, &B, &S)
	fmt.Println(A+B, S)
}
fmhrさん提供

Haskell

-- <$>とか使う場合は必須。でも、7.10からはデフォルトで読み込まれるので不要。
import Control.Applicative

-- main、ここでIOモナドを完結させる。
main :: IO ()
-- do記法を使う。別に他の方法でもいいけど、読み込む物が多くなった場合は、
-- こっちの方がわかりやすいと思う。たぶん。
main = do
    -- ----
    -- 1行読み込んで、空白切りで配列に分割して、それぞれを数字に変換する。
    -- readで変換される型は、main'での型指定によって決まる。
    -- IO [a]
    ab <- map read . words <$> getLine
    -- ----
    -- 単純に1行をStringとして読み込む。末尾改行は含まれない。
    -- IO String
    s <- getLine
    -- ----
    -- その他に、1行に数字一つだけであれば下記のようにする。
    -- IO a
    -- n <- read <$> getLine
    -- ----
    -- 読み込んだ値を別関数に渡して、戻り値を出力する。
    -- 戻り値がIntの場合は、`print`を使う。
    -- 戻り値がFloatの場合は、`Text.Printf.printf`を使う必要がある。
    -- IO ()
    putStrLn $ main' ab s

-- 実際に問題を解く関数main'、実際の名前は何でもいい。
-- ここの型指定でmainでのreadが何に変換されるが決まる。
-- IOモナドは持ち込まずに純粋な関数だけの世界にすると書きやすいと思う。
main' :: [Int] -> String -> String
main' ab s = (show . sum) ab ++ " " ++ s
らっしー(raccy)さん提供

Nim

#!/usr/bin/env nim
import strutils
var AB=readLine(stdin).split()
var n=parseInt(AB[0])+parseInt(AB[1])
echo($n&" "&readLine(stdin))
cielさん提供

Rust

fn getline() -> String{
	let mut __ret=String::new();
	std::io::stdin().read_line(&mut __ret).ok();
	return __ret;
}

fn main(){
	let s=getline();
	let a:Vec<_>=s.trim().split(' ').collect();
	let x:i32=a[0].parse().unwrap();
	let y:i32=a[1].parse().unwrap();
	print!("{} ",x+y);
	println!("{}",getline());
}
cielさん提供

Kotlin

import java.util.*
fun main(args: Array<String>){
	val cin = Scanner(System.`in`)
	print(cin.nextInt()+cin.nextInt())
	print(" ")
	println(cin.next())
}
cielさん提供

Scheme

#!/usr/bin/env gosh

(let ((a (read)) (b (read)) (s (read)))
    (write (+ a b))
    (display " ")
    (write s)
    (newline)
)
cielさん提供

Crystal

#!/usr/bin/env crystal
s=gets
# sはnilである可能性があるので、ifで分岐させる
if s
	a,b=s.split.map{|e|e.to_i}
	print a+b
	puts " "+gets.not_nil! # not_nil!で外すことも可能
end
cielさん提供

OCaml

Scanf.sscanf (read_line ()) "%d %d" (fun a b ->
	print_int (a+b)
);;
print_string " "; print_string (read_line ()); print_string "\n";;
cielさん提供

Fortran

implicit none
integer::a,b
character(99)::s
read(*,*) a,b,s
write(*,'(i0," ",a)') a+b,trim(s)
end
cielさん提供

F#

open System;
let a:String array=Console.ReadLine().Split(' ')
Console.Write(int(a.[0])+int(a.[1]))
Console.WriteLine(" "+Console.ReadLine())
cielさん提供