C入門11 課題
1. 次のプログラムを実行するとどうなるでしょうか。
#include <stdio.h>
void swap(int a, int b){
int t = b;
b = a;
a = t;
}
int main(void)
{
int a = 10, b = 20;
swap(a, b);
printf("a = %d b = %d\n", a, b);
return 0;
}
2. 次のプログラムを実行するとどうなるでしょうか。
#include <stdio.h>
void swap(int* a, int* b){
int t = *b;
*b = *a;
*a = t;
}
int main(void)
{
int a = 10, b = 20;
swap(&a, &b);
printf("a = %d b = %d\n", a, b);
return 0;
}
3. 呼び出された回数を記録し、その回数を戻す関数kaisuを書き、下のプログラムを完成させててください。
#include <stdio.h>
int kaisu(void){
/* ここに定義を書く */
}
int main(void)
{
printf("%d回目\n", kaisu());
printf("%d回目\n", kaisu());
printf("%d回目\n", kaisu());
return 0;
}
4. 以下で、/* ここ A */などとあるところを埋めて、ユーザとじゃんけんをするプログラムを完成させてください。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void message(void){
/* ここ A (「ふふふ」などの言葉をランダムに出力)*/
}
int janken(void){
/* userはユーザの手、compはコンピュータの手、kekkaは結果 */
int user, comp, kekka;
static char* te[3] = {"グー", "チョキ", "パー"};
static char* kekka_hyouji[3]
= {"ひきわけですね。私としたことが、君程度の人間と引き分けるとは。",
"く、ばかな。君の勝ちです。",
"私の勝ちです。まあ、当然でしょうな。"};
message(); /* messageという関数をここで使っている */
printf("さて、何を出しますかな?\n");
printf("1 グー 2 チョキ 3 パー\n");
/* ここ B (ユーザの手をuserに格納)*/
/* ここ C (コンピュータの手をcompに格納)*/
if(comp == 1){
if(user == 1) kekka = 0;
else if(user == 2) kekka = 2;
else if(user == 3) kekka = 1;
}
else if(comp == 2){
if(user == 1) kekka = 1;
else if(user == 2) kekka = 0;
else if(user == 3) kekka = 2;
}
else if(comp == 3){
if(user == 1) kekka = 2;
else if(user == 2) kekka = 1;
else if(user == 3) kekka = 0;
}
/* ここ D (結果の表示) */
return kekka;
}
int main(void)
{
int i, j, uwin, cwin;
srand( (unsigned)time( NULL ) );
uwin = 0;
cwin = 0;
/* ここ E (「開始」の言葉を表示) */
for(i = 0; i < 5; i++){
j = janken();
if(j == 1) uwin++;
else if(j == 2) cwin++;
/* ここ F (勝敗の途中経過を出力)*/
}
if(cwin > uwin) printf("こうなることははじめから見えていましたがね。\n");
else if(cwin < uwin) printf("君が勝つとは...。\nく、くやしい。\n");
else printf("引き分けとは驚きました。また、勝負しましょう。\n");
return 0;
}
静岡産業大学国際情報学部学生へ
この課題11は提出しなくてよいものです。
提出しないでください。最終課題の方をやってください。
解答例 (たぶん、9月までアップしません。)