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