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月までアップしません。)

C入門11
C入門目次
ホーム