C言語入門 第1回実力試験 解答例
2014蟷エ10譛医h繧雁倶ココ縺ョ譁ケ繧貞ッセ雎。縺ォ縲ヾtudy C辟。譁呎署萓帙r髢句ァ九@縺セ縺励◆縲
C險隱槭r蜍牙シキ荳ュ縺ョ譁ケ縺ッ縲∝ュヲ鄙偵サ謨呵ご縺ォ譛驕ゥ縺ェC險隱槭う繝ウ繧ソ繝シ繝励Μ繧ソ縺ョStudy C繧剃スソ縺」縺ヲ縺ソ縺ヲ縺上□縺輔>(蛟倶ココ縺ョ譁ケ縺ッ辟。譁吶〒縺)縲
螟ァ蟄ヲ繝サ鬮伜ーゅサ鬮俶。縺ェ縺ゥ縺ョ謨呵ご讖滄未縺ァ縺ョ謗。逕ィ螳溽クセ繧ょ、壽焚縺ゅk繝ュ繝ウ繧ー繧サ繝ゥ繝シ蝠蜩ヾtudy C縺後∝倶ココ蜷代¢縺ォ辟。譁呎署萓帙r蟋九a縺セ縺励◆縲
繧、繝ウ繧ソ繝シ繝励Μ繧ソ縺ョ謇玖サス縺輔↓蜉縺医√ご繝シ繝繧3D繧ソ繝シ繝医Ν繧ー繝ゥ繝輔ぅ繝繧ッ縺ァ讌ス縺励¥蜍牙シキ縺励◆繧翫→縲,險隱槭ョ蟄ヲ鄙偵r蠑キ蜉帙↓繧オ繝昴シ繝医@縺セ縺吶
縺セ縺溘√%縺ョ繧医≧縺ェ繝懊ち繝ウ縺ョ逕ィ諢上&繧後※縺繧九壹シ繧ク縺ァ縺ッ縲∵軸霈峨@縺ヲ縺繧九励Ο繧ー繝ゥ繝繧担tudy C縺ォ逶エ謗・繝ュ繝シ繝峨@螳溯。後@縺溘j縺吶k縺薙→縺後〒縺阪∪縺吶
Study C辟。譁吝茜逕ィ縺ォ縺、縺縺ヲ縺ョ隧ウ邏ー縺ッ縲√%縺ョ繝壹シ繧ク繧貞盾辣ァ縺励※縺上□縺輔>縲
1-1. printf()を使い画面に Hello Study C と表示してみましょう。
[解答例]main() { printf("Hello Study C\n"); }
1-2. Hello と Study C の間に改行を入れて表示してみましょう。
[解答例]main() { printf("Hello\nStudy C\n"); }
1-3. printf()を使い画面に漢字で こんにちは Study C と表示してみましょう。
[解答例]main() { printf("こんにちは Study C\n"); }
1-4. 3個のprintf()を使い画面に次のように表示してみましょう。
1st line 2nd line 3rd line[解答例]
main() { printf("1st line\n"); printf("2nd line\n"); printf("3rd line\n"); }
1-5. 1個のprintf()で1-3と同じ表示結果を表示してみましょう。
[解答例]main() { printf("1st line\n2nd line\n3rd line\n"); }
1-6. printf()を使い次のように計算結果を表示してみましょう。 計算結果はprintf("...%d", 3+4);のように表示させます。
計算を開始します. ---------------------------- 3 + 4 = 7 20 - 11 = 9 5 * 3 = 15 10 / 2 = 5 ---------------------------- 計算が終了しました.[解答例]
main() { printf("計算を開始します.\n----------------------------\n"); printf("3 + 4 = %d\n", 3+4); printf("20 - 11 = %d\n", 20-11); printf("5 * 3 = %d\n", 5*3); printf("10 / 2 = %d\n", 10/2); printf("----------------------------\n計算が終了しました.\n"); }
1-7. 整数型で宣言した変数iに10を代入し、その内容を関数printf()で表示してみましょう。
[解答例]main() { int i; i = 10; printf("i = %d\n", i); }
1-8. 1-7の変数iに15を加え結果を表示してみましょう。
[解答例]main() { int i; i = 10; i = i + 15; /* または i += 15; */ printf("i = %d\n", i); }
1-9. 1-7の変数名iをdataに変えて実行してみましょう。
[解答例]main() { int data; data = 10; printf("data = %d\n", data); }
1-10. 1-9の変数dataを2倍にして表示してみましょう。
[解答例]main() { int data; data = 10; data = data * 2; /* または data *= 2 */ printf("data = %d\n", data); }
1-11. 1-7の変数iでi+i、i-i、i*i、i/iの計算結果を表示してみましょう。
[解答例]main() { int i; i = 10; printf("i+i = %d\n", i+i); printf("i-i = %d\n", i-i); printf("i*i = %d\n", i*i); printf("i/i = %d\n", i/i); }
1-12. if文を使い変数の内容が0ならばzero、1ならばoneと表示してみましょう。
[解答例]main() { int i; i = 0; /* または i = 1; と変更して実行*/ if(i == 0){ printf("zero\n"); } if(i == 1){ printf("one\n"); } }
1-13. if文を使い変数の内容が正ならばpositive、0ならばzero、負ならばnegativeと表示してみましょう。
[解答例]main() { int i; i = 0; /* または i = -1; などと変更して実行*/ if(i > 0){ printf("positive\n"); } if(i == 0){ printf("zero\n"); } if(i < 0){ printf("negative\n"); } }
1-14. 1-13に加え変数の内容が2ならばtwo、3ならばthree、4ならばfourと表示してみましょう
[解答例]main() { int i; i = 0; /* または i = 1; などと変更して実行*/ if(i == 0){ printf("zero\n"); } if(i == 1){ printf("one\n"); } if(i == 2){ printf("two\n"); } if(i == 3){ printf("three\n"); } if(i == 4){ printf("four\n"); } }
1-15. 1-14に加え変数の内容が0から4以外はdifficultと表示してみましょう。
[解答例]main() { int i; i = 0; /* または i = 1; などと変更して実行*/ if(i == 0){ printf("zero\n"); } else{ if(i == 1){ printf("one\n"); } else { if(i == 2){ printf("two\n"); } else { if(i == 3){ printf("three\n"); } else { if(i == 4){ printf("four\n"); } else { printf("difficult\n"); } } } } } }
1-16. 次のプログラムを変数tokutenが80点以上はA、70から79点はB、60から69点はC、それ以外はfugoukakuと表示するように書き換えてみましょう。
main() { int tokuten; tokuten = 40; if (tokuten >= 60) { printf("goukaku"); } if (tokuten < 60) { printf("fugoukaku"); } }[解答例]
main() { int tokuten; tokuten = 40; /* または tokuten = 80; などと変更して実行*/ if (tokuten >= 80) { printf("A"); } else { if (tokuten >= 70) { printf("B"); } else { if (tokuten >= 60) { printf("C"); } else { printf("fugoukaku"); } } } }
1-17. forループを使って単語 Study を20回表示してみましょう。
[解答例]main() { int i; for(i = 0; i < 20; i++){ printf("Study "); } }
1-18. forループを使って 1, 2, 3, ..., 20 と表示してみましょう。
[解答例]main() { int i; for(i = 1; i < 20; i++){ printf("%d, ", i); } printf("%d", i); }
1-19. forループを使って 2, 4, 6, ..., 40 と表示してみましょう。
[解答例]main() { int i; for(i = 1; i < 20; i++){ printf("%d, ", i*2); } printf("%d", i*2); }
1-20. forループを使って 20, 19, 18, ..., 1 と表示してみましょう。
[解答例]main() { int i; for(i = 0; i < 19; i++){ printf("%d, ", 20-i); } printf("%d", 20-i); }
1-21. forループとif文を使って OXOXOX ...OXOXOXとOXを20回表示してみましょう。
[解答例]main() { int i; for(i = 0; i < 40; i++){ if(i/2*2 == i) printf("O"); else printf("X"); } }
1-22. 次のプログラムを変数nが0や負の値の時は"*"を表示しないように書き換えてみましょう(if文を使用します)。
main() { int i, n; n = 10; for (i = 0; i < n-1; i++) { printf(" "); } printf("*\n"); }
main() { int i, n; n = 10; for (i = 0; i < n-1; i++) { printf(" "); } if (n > 0) printf("*\n"); }
1-23. 4個のforループを使い次のように表示してみましょう("|"はShift+\で入力します)。 横方向のサイズは20になっていますが、この数はプログラムの最初で変数に代入し後で 自由に換えられるようにしてください。
-------------------- | | | | | | | | | | | | | | | | | | | | --------------------[解答例]
main() { int i, n, j; n = 20; for (i = 0; i < n; i++) { printf("-"); } printf("\n"); for (j = 0; j < 10; j++){ printf("|"); for (i = 0; i < n-2; i++){ printf(" "); } printf("|\n"); } for (i = 0; i < n; i++) { printf("-"); } printf("\n"); }
1-24. 1-23を改造して次のように表示してみましょう。
+------------------+ | | | | | | | | | | | | | | | | | | | | +------------------+[解答例]
main() { int i, n, j; n = 20; printf("+"); for (i = 0; i < n-2; i++) { printf("-"); } printf("+\n"); for (j = 0; j < 10; j++){ printf("|"); for (i = 0; i < n-2; i++){ printf(" "); } printf("|\n"); } printf("+"); for (i = 0; i < n-2; i++) { printf("-"); } printf("+\n"); }
1-25. 次のプログラムを参考にして 3, 6, 9, 12, ・・・, 24 桁目に"*"を表示してみましょう。
int print_dot(int); main() { int x; for (x = 1; x <= 8; x++) { print_dot(x); } } print_dot(n) int n; { int i; for (i = 0; i < n-1; i++) { printf(" "); } printf("*\n"); }[解答例]
int print_dot(int); main() { int x; for (x = 1; x <= 8; x++) { print_dot(x*3); } } print_dot(n) int n; { int i; for (i = 0; i < n-1; i++) { printf(" "); } printf("*\n"); }
1-26. 1-25と同じプログラムを参考にして次のように表示してみましょう。
* * * * * * * * * * * * * * * *[解答例]
int print_dot(int); main() { int x; for (x = 1; x <= 8; x++) { print_dot(x*2-1); } for (x = 8; x > 0; x--) { print_dot(x*2-1); } } print_dot(n) int n; { int i; for (i = 0; i < n-1; i++) { printf(" "); } printf("*\n"); }
1-27. 三角形の面積を返す関数sankaku_menseki()を(第7回講座)台形の上底、下底、高さから面積を求める関数に変更し、何種類かの値を与え計算させてみましょう。
[解答例]int daikei_menseki(int, int, int); main() { int menseki; menseki = daikei_menseki(4, 5, 6); printf("(4,5,6) -> %d\n", menseki); menseki = daikei_menseki(8, 7, 6); printf("(8,7,6) -> %d\n", menseki); } daikei_menseki(jyoutei, katei, takasa) int jyoutei, katei, takasa; { int s; s = (jyoutei+katei) * takasa / 2; return (s); }
1-28. Helloと表示する関数hello()とStudy Cと表示する関数study()を作り関数main()の中から順番に呼び出してみましょう。
[解答例]hello() { printf("Hello\n"); } study() { printf("Study C\n"); } main() { hello(); study(); }
1-29. 1-28の関数study()を関数hello()から呼び出すように変更し関数main()からは関数hello()だけを呼び出すようにしてみましょう。
[解答例]study() { printf("Study C\n"); } hello() { printf("Hello\n"); study(); } main() { hello(); }