- 350 名前:デフォルトの名無しさん [2012/08/03(金) 04:06:55.83 ]
- [1] 授業単元:プログラミング
[2] 問題文: ビット単位の論理演算を用いて、scanfで読み込んだ1文字の英字の大文字を小文字に 変換する関数と、小文字を大文字変換する関数をそれぞれ作りなさい。 また、char型の変数のビットの並びを表示する関数作成しなさい。 ただし、ビット単位の論理演算とシフト演算子を用いることとし、 四則演算(加減乗除)は使わない。 例えば、文字'A'は0x41であるので、0100 0001となる。 [3]環境 [3.1]OS:Linux [3.2]コンパイラ:gcc [3.3]言語: C [4] 期限:8月5日 [5] その他の制限: 大文字→小文字にする関数では、引数の文字が大文字のときに、小文字に変換し、その他の場合は、無変換で返す関数を期待しています。 この関数の外で文字判定はしません。 大文字と小文字の判定に、isupperやislowerも使いません。この判定にもビット 単位の論理演算を使います。 isupperやislowerの代りに、各文字の上位3ビットの並びが010ならば大文字、 011ならば小文字と判断します。上位3ビットを見るためには、シフト演算子を用ます。 #define MASK 0x20 #include <ctype.h> #include <limits.h> などは使用しません。 制限が多いですが、どなたかよろしくお願いします。
|

|