先週までで,一通りの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 |