PHP vol.10
今日はテストでした。
問4
$aをインクリメントとデクリメントするプログラムを書きなさい。
<?php $a = 0; $a++; echo $a."\n"; $a--; echo $a."\n";
問5
今まで勉強したデータ型を全て記述しないさい(5つ)。
文字列 | string |
整数 | integer |
小数点数 | float |
boolean | |
正解
文字列 | string |
整数 | integer |
浮動小数点数 | float |
論理値 | boolean |
配列 | array |
問7
10より大きければ「big」、10以下かつ5より大きければ「middle」、
5以下かつ1より大きければ「small」、それ以外は「unknown」と出力するプログラムを書きなさい。
<?php $num = 0; if ($num > 10) { echo "big\n"; } elseif ($num >5 ) { echo "middle\n"; } elseif ($num >1) { echo "small\n"; } else { echo "unknown\n"; }
問8
1から10まで表示するプログラムをfor文を使って書きなさい。
<?php for ($i=1;$i<=10;$i++) { echo $i."\n"; }
問9
for文とif文を使い、偶数の場合は「nは偶数です」と出力し、奇数の場合は、「nは奇数です」と出力するプログラムを書きなさい。
<?php for ($i=1;$i<=20;$i++){ if ($i%2==0) { echo $i."は偶数です\n"; } else { echo $i."は奇数です\n"; } }
問10
2の倍数を100まで表示するプログラムを書きなさい。
<?php for ($i=1;$i<=100;$i++) { if ($i%2==0) { echo $i."\n"; } }
問11
2の倍数と3の倍数を100まで表示するプログラムを書きなさい(同じ倍数は2と3の倍数ですと表示)。
<?php for ($i=1;$i<=100;$i++) { if ($i%2==0 && $i%3==0) { echo $i."は2と3の倍数です\n"; } elseif ($i%2==0) { echo $i."\n"; } elseif ($i%3==0) { echo $i."\n"; } else { echo ""; } }
問12
配列の添字(キー名)はデフォルトはいくつから始まりますか?
正解
0から始まる。
問14
配列を使い、学生10人分の点数を一気に出力するプログラムを書きなさい。
<?php $tokuten = array(20,54,31,40,32,89,38,98,65,100); foreach ($tokuten as $key) { echo $key."\n"; }
問15
配列を使い、学生10人分のなかの最高得点を出力するプログラムを書きなさい。
<?php $tokuten = array(90,20,40,50,32,89,76,54,99,33); for ($k=0;$k<9;$k++) { for ($i=0;$i<9;$i++) { $n = $i + 1; if ($tokuten[$i] > $tokuten[$n]) { $box = $tokuten[$i]; $tokuten[$i] = $tokuten[$n]; $tokuten[$n] = $box; } } } echo $tokuten[9]."\n";
問16
多次元配列を使い、学生10人分の中の教科(英語、数学、国語)ごとの最高得点を出力するプログラムを書きなさい。
補習時に解いたもの
<?php $cls = array("英語","国語","数学"); $stu = array(0,0,0); $box = array(0,0,0); $tokuten = array(); $tokuten["sato"] = array("eng" =>40,"jpn"=>30,"mat"=>90); $tokuten["kato"] = array("eng" =>90,"jpn"=>45,"mat"=>32); $tokuten["saito"] = array("eng" =>33,"jpn"=>41,"mat"=>92); $tokuten["naito"] = array("eng" =>99,"jpn"=>75,"mat"=>82); $tokuten["nishizawa"] = array("eng" =>20,"jpn"=>65,"mat"=>52); foreach ($tokuten as $name => $array) { foreach ($array as $class => $value) { if ($value > $box[0] && $class=="eng") { $stu[0] = $name; $box[0] = $value; } elseif($value > $box[1] && $class=="jpn") { $stu[1] = $name; $box[1] = $value; } elseif($value > $box[2] && $class=="mat") { $stu[2] = $name; $box[2] = $value; } else { echo ""; } } } for ($i=0;$i<=2;$i++) { echo $cls[$i].":\t".$box[$i]."点\t(".$stu[$i].")\n"; }
自宅でid:toru_tashimaさんのコメントを踏まえて直したもの。
<?php $cls = array("eng"=>"英語","jpn"=>"国語","mat"=>"数学"); $stu = array(0,0,0); $box = array(0,0,0); $tokuten = array(); $tokuten["sato"] = array("eng" =>40,"jpn"=>30,"mat"=>90); $tokuten["kato"] = array("eng" =>90,"jpn"=>45,"mat"=>32); $tokuten["saito"] = array("eng" =>33,"jpn"=>41,"mat"=>92); $tokuten["naito"] = array("eng" =>99,"jpn"=>75,"mat"=>82); $tokuten["nishizawa"] = array("eng" =>20,"jpn"=>65,"mat"=>52); foreach ($tokuten as $name => $array) { foreach ($array as $class => $value) { if ($value > $box["eng"] && $class=="eng") { $stu["eng"] = $name; $box["eng"] = $value; } elseif($value > $box["jpn"] && $class=="jpn") { $stu["jpn"] = $name; $box["jpn"] = $value; } elseif($value > $box["mat"] && $class=="mat") { $stu["mat"] = $name; $box["mat"] = $value; } else { echo ""; } } } foreach ($cls as $key => $value) { echo $value.":\t".$box[$key]."点\t(".$stu[$key].")\n"; }
実行結果
$ php 042010.php 英語: 99点 (naito) 国語: 75点 (naito) 数学: 92点 (saito)
問17
九九を表示するプログラムを書きなさい。
<?php for ($i=1;$i<=9;$i++){ echo $i."の段\n"; for ($k=1;$k<=9;$k++){ echo $i."×".$k."=".($i*$k)."\n"; } }
問18
以下を表示するプログラムを書きなさい。
*+*
+*+
*+*
<?php for ($i=1;$i<=9;$i++) { if ($i%2==0) { echo "+"; } else { echo "*"; } if ($i%3==0) { echo "\n"; } }
問19
降順(多い順)に並び替えるプログラムを書きなさい。
補習時に解いたもの
<?php $tokuten = array(90,20,40,50,32,89,76,54,99,33); echo "前:"; foreach ($tokuten as $key) { echo $key.","; } echo "\n"; for ($k=0;$k<9;$k++) { for ($i=0;$i<9;$i++) { $n = $i + 1; if ($tokuten[$i] < $tokuten[$n]) { $box = $tokuten[$i]; $tokuten[$i] = $tokuten[$n]; $tokuten[$n] = $box; } } } echo "後:"; foreach ($tokuten as $key) { echo $key.","; } echo "\n";
実行結果
$ php 042013.php 前:90,20,40,50,32,89,76,54,99,33, 後:99,90,89,76,54,50,40,33,32,20,
感想
というようにやってきましたが、正直ノート(このはてダ)頼りだったんだなーとか思います。
そして、とっても今ぼーっとしています。よくない。
補習時の感想
どうにか解けました。
特に最後の問19はなんで解けなかったんだろうと思いました。
最後の最後でドはまりしたみたいです。