第2回 文字を扱う (5/11)

課題1:

変数の値を十進数で65から90まで1ずつ変化させていったとき,対応する文字を表示するプログラムを作成しなさい。
<注意> 1から変数を変化させると,大変な事になります。

#include <stdio.h>
void main()
{
    int i;

    for(i=65; i<=90; i++){
        printf("%d番目の文字は,%c¥n", i, i);
    }
}


課題2:

上のプログラムを用いて,アルファベット以外の文字(#や@など)の文字コードを調べ,文字と対応するコードを5組以上,答えなさい。

文字コードを表現するには16進数を用いるのが便利である.下の表では,横が16進数の2桁目,縦が16進数の1桁目を表し,赤字で10進数の値を表記している. 例えば大文字の「」は,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

課題3:

キーボードから文字列を入力すると,何文字入力されたかを画面に表示するプログラムを作成せよ。
ヒント:文字列の終わりには、必ず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);
}
 

課題4:

課題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]);
    }

}