第8回:中間テスト

先週までで,一通りのC言語のプログラムは書けるようになったはずなので,今週は,皆さんの理解度を確認するために中間テストを行います.

まえの方から,詰めて座ってください.

プログラム作成には,ホームページ,プリントを見ても結構です.

ただし,自分の実力の確認ですから,隣の人と相談したり,ネット上で答えを探すようなことはしないでください

できたら,印刷して提出してください.


問題1

数学の確率でならった,n個の中からr個を選ぶときの組み合わせの数 nCr を求めるプログラムを下記の手順でつくれ.

(1) forループを使って計算する

(2) 再帰関数を使って計算する

ヒント: 

#include <stdio.h>

long combi(ココを考える)
{

ココの部分を作成する

}

void main()
{
    int n, r;

    printf("nこの中からr個を選ぶときの組み合わせを計算します\n");
    printf("nを入力:");
    scanf("%d", &n);
    printf("rを入力:");
    scanf("%d", &r);

    printf("組み合わせの数は,%d通りです\n", combi(n, r));
}

問題2

アルファベットを暗号化・解読する関数を作成せよ.

暗号化のルールは,次のようにする.

暗号
A @
B A
C B
... ...
Y X
Z Y

#include <stdio.h>

int moji_nagasa(char *str)
{
    int i;
    for(i=0; str[i] != 0x00; i++);
    return i;
} 
 
void ango(ココを考える)
{

ココの部分を作成する


}

void main()
{
    char s[256];
    int a;

    printf("アルファベットを暗号化・解読するプログラムです\n");
    printf("暗号化するなら1を,解読するなら0を入力:");
    scanf("%d", &a);
    printf("暗号化・解読したい文字列を入力:");
    scanf("%s", s);

    ango(s, a);

    printf("結果:%s\n", s);
}

ヒント:文字コード表

下位\上位 4 5
0 @ P
1 A Q
2 B R
3 C S
4 D T
5 E U
6 F V
7 G W
8 H X
9 I Y
A J Z
B K
C L
D M
E N
F O