問1:"Hello World" と一行に出力してください(改行を忘れずに)
PHP
AO.php
<?PHP
echo "Hello World\n;"
?>
- echoの部分はprint()でもOK
- エスケープシーケンスは文字列の一部として扱う。
Java
ao.java
public class Main{
public static void main(String[] args){
System.out.println("Hello World");
}
}
問2:1つの整数 x を読み込んで、x の3乗を計算し結果を出力するプログラムを作成して下さい。
PHP
ao.php
<?php
$x = (int)trim(fgets(STDIN));
echo $x*$x*$x;
?>
- STDINは標準入力(Standard Input)を指すPHPの定義済み定数。
- fgetsはファイルやストリームから1行を取得する関数。
標準入力からユーザーが入力した1行のデータを文字列として返す。
入力が終わると改行(\n)も含まれるため、余計な改行を削除する処理が必要。 - PHPにおける「trim関数」とは、文字列の先頭と末尾から余計な空白(半角スペースやTab)や改行を取り除くための関数。
- 文字列データ→数値データにするには(int)文字列でキャスト。キャスト以外にもintval(文字列)としてもOK
Java
AOJ.java
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int input=sc.nextInt();
System.out.println(input*input*input);
sc.close();
}
}
- Scanner の使用が終わったら、リソースを解放するために close() メソッドを呼び出す
問3:たて a cm よこ b cm の長方形の面積と周の長さを求めるプログラムを作成して下さい。
面積と周の長さを1つの空白で区切って1行に出力して下さい。
PHP
AOJ.php
<?php
fscanf(STDIN, "%d %d", $a, $b);
$area=$a*$b;
$circum=2*($a+$b);
printf("%d %d\n", $area, $circum);
?>
- fscanf():PHPでファイルや標準入力から指定されたフォーマットに従ってデータを読み取るための関数
example.php
fscanf(読み込むファイルやストリームのリソース,データの変換型,読み取り&変換したデータを格納する変数)
- 読み込むリソース:標準入力を行う場合はSTDIN
- フォーマット指定子:intなら%d→その他string型なら%s,float型なら%f,char型(単一の文字)なら%c
- printfもフォーマットされた文字列を出力するための関数。
example.php
printf(書式指定子を含む文字列,書式文字列内の書式指定子に対応する変数や値);
- printfでは、フォーマット文字列の中に直接空白を入れることができる。
Java
AOJ.java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int area = a * b;
int circum = 2 * (a + b);
System.out.println(area + " " + circum);
sc.close();
}
}
問4:秒単位の時間Sが与えられるので、h:m:sの形式へ変換して出力してください。
hは時間、mは 60未満の分、sは 60未満の秒とします。
PHP
AOJ.php
<?php
fscanf(STDIN,"%d",$s);
$h=floor($s/3600);
$m=floor(($s%3600)/60);
$sec=floor($s%60);
printf("%d:%d:%d\n", $h,$m,$sec);
?>
-
時間→$S / 3600は、与えられた秒数を1時間あたりの秒数で割ることで、何時間か求める。floor()関数を使って、小数点以下を切り捨てる。
例:3605秒の場合、3605 / 3600 = 1.000833なので、floor(1.000833)は1 -
分→$S % 3600は、与えられた秒数から「時間部分」を除いた残りの秒数を求める。それをさらに60で割ることで分を求める
例:3605秒の場合、3605 % 3600 = 5となり、5秒が残る。→5 / 60 = 0.0833→0分 -
秒→$S % 60は、与えられた秒数を60で割った余り、つまり60秒未満の残り秒数を求める
例:3605秒の場合、3605 % 60 = 5なので、残りの5秒が求まる
Java
AOJ.java
import java.util.Scanner;
public class Main{
public static void main(String[]args){
Scanner sc=new Scanner(System.in);
int s=sc.nextInt();
int h=s/3600;
int m=(s%3600)/60;
int sec=s%60;
System.out.println(h+":"+m+":"+sec);
}
}