変数の値を十進数で65から90まで1ずつ変化させていったとき,対応する文字を表示するプログラムを作成しなさい。
<注意> 1から変数を変化させると,大変な事になります。
#include <stdio.h> void main() { int i; for(i=65; i<=90; i++){ printf("%d番目の文字は,%c¥n", i, i); } }
上のプログラムを用いて,アルファベット以外の文字(#や@など)の文字コードを調べ,文字と対応するコードを5組以上,答えなさい。
文字コードを表現するには16進数を用いるのが便利である.下の表では,横が16進数の2桁目,縦が16進数の1桁目を表し,赤字で10進数の値を表記している.
例えば大文字の「A」は,16進数では「0x41(0xは16進数という意)」,10進数では「65」で表される.
【文字コード表】
00 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | |
0 | NUL 0 | DLE 16 | SP 32 | 0 48 | @ 64 | P 80 | ` 96 | p 112 |
1 | SOH 1 | DC1 17 | ! 33 | 1 49 | A 65 | Q 81 | a 97 | q 113 |
2 | STX 2 | DC2 18 | " 34 | 2 50 | B 66 | R 82 | b 98 | r 114 |
3 | ETX 3 | DC3 19 | # 35 | 3 51 | C 67 | S 83 | c 99 | s 115 |
4 | EOT 4 | DC4 20 | $ 36 | 4 52 | D 68 | T 84 | d 100 | t 116 |
5 | ENQ 5 | NAK 21 | % 37 | 5 53 | E 69 | U 85 | e 101 | u 117 |
6 | ACK 6 | SYN 22 | & 38 | 6 54 | F 70 | V 86 | f 102 | v 118 |
7 | BEL 7 | ETB 23 | ' 39 | 7 55 | G 71 | W 87 | g 103 | w 119 |
8 | BS 8 | CAN 24 | ( 40 | 8 56 | H 72 | X 88 | h 104 | x 120 |
9 | HT 9 | EM 25 | ) 41 | 9 57 | I 73 | Y 89 | i 105 | y 121 |
A | LF 10 | SUB 26 | * 42 | : 58 | J 74 | Z 90 | j 106 | z 122 |
B | VT 11 | ESC 27 | + 43 | ; 59 | K 75 | [ 91 | k 107 | { 123 |
C | FF 12 | FS 28 | , 44 | < 60 | L 76 | \ 92 | l 108 | | 124 |
D | CR 13 | GS 29 | - 45 | = 61 | M 77 | ] 93 | m 109 | } 125 |
E | SO 14 | RS 30 | . 46 | > 62 | N 78 | ^ 94 | n 110 | ~ 126 |
F | SI 15 | US 31 | / 47 | ? 63 | O 79 | _ 95 | o 111 | DEL 127 |
キーボードから文字列を入力すると,何文字入力されたかを画面に表示するプログラムを作成せよ。
ヒント:文字列の終わりには、必ずnull文字(¥0,0x00)置かれている。
文字列を先頭から一文字ずつ確認していき,ヌル文字だったら,その前までが文字列。
#include <stdio.h>
void main()
{
int i=0;
char str[100]; /* ヌル文字を除く 99 字分の文字の配列を確保 */
printf("文字を入力してください:");
scanf("%s", str); /* ここに注意,strに&がつかない! */
printf("入力された文字列は%sです¥n", str);
while(str[i]!=NULL){
i++;
}
printf("入力された文字数は,%dです¥n", i);
}
課題3のプログラムを応用して,入力した文字列を,反転して表示するプログラムを作成せよ。
例:入力:「This is」,出力:「si sihT」
#include <stdio.h>
void main()
{
int i=0, n;
char str[100]; /* ヌル文字を除く 99 字分の文字の配列を確保 */
printf("文字を入力してください:");
scanf("%s", str); /* ここに注意,strに&がつかない! */
printf("入力された文字列は%sです¥n", str);
while(str[i]!=NULL){
i++;
}
n = i;
printf("入力された文字数は,%dです¥n", n);
for(i=n-1; i >= 0; i--){
printf("%c", str[i]);
}
}