定期試験について

7月24日(水) 2時限(11:00〜12:00) 実施 0410教室

持ち込み禁止です.よく復習してきてください.

定期試験の時間割り


アンケートにご協力ください

後期の授業や来年度以降の授業に結果を反映させるため,アンケートに協力してください.

アンケートは無記名で,成績とは関係ありません.ありがとうございました.


前期に取り上げた内容


【演習の解答】

1.「キーボードから入力された文字数を数えるプログラム」を元に,回文を判定するプログラムを作成してみよう.

回文とは,「しんぶんし」のように上から読んでも,下から読んでも同じになる言葉のことです.

入力された文字列を,反転し,元のものと同じかどうか判定します.

#include <stdio.h>
void main()
{
    char s[256], r[256];
    int i, n, hantei;

    //文字列の入力
    printf("文字列を入力してください:");
    scanf("%s", s);

    //文字数を数える
    for(i=0; s[i] != 0x00; i++);
    n = i;
    printf("文字数は %d 文字です\n", n);

    //rにsの最後の文字から逆に代入
    for(i=0; i<n; i++){
        r[i] = s[n-1-i];
    }
    //最後に文字列の終わりのマークを代入
    r[n] = 0;

    printf("元の文字列は,%sです\n", s);
    printf("反転した文字列は,%sです\n", r);

    //回文判定用変数の初期化
    hantei = 0;

    //sとrが同じかどうか、各要素を比較
    for(i=0; i<n-1; i++){
        if(s[i] != r[i] {hantei++}
    }

    //判定結果の表示
    if(hantei){
        printf("回文ではありません。\n");
    }else{
        printf("回文です。\n");
    }
}
日本語は,このプログラムでは,扱うことができません.どうしたらよいでしょう.


【演習の解答】

乱数を利用して,プログラムをスタートすると

0がグー,1がチョキ,2がパー

として,どれかを出してくるプログラムをまず作ってみる.

これができるようになったら,こちらの手を数字で入力し,勝ち負けの判定もできるようにする.

#include <stdlib.h>
#include <stdio.h>

void main(void)
{
    int kikai, hito;

    / 乱数発生ルーチンの初期化
    randomize();

    //機械側の手
    kikai = rand() % 3;

    //人間の手の入力
    printf("じゃんけんぽん グー:0、チョキ:1、パー:2 を入力:");
    scanf("%d", &hito);

    //結果発表
    printf("私:%d あなた:%d\n", kikai, hito);

    //勝負の判定
    if(((kikai - hito + 3) % 3) == 0){
        printf("引き分け\n");
    }else if(((kikai - hito + 3) % 3) == 1){
        printf("あなたの勝ち\n");
    }else{
        printf("私の勝ち\n");
    }
}