課題8-1

課題 8-1
課題8-1
#include
次のステップに従って,プログラムを作成せよ.
<stdio.h>
Step 1.
要素数 100 の char 型文字配列を宣言する.
Step 2.
この文字配列に文字列をキーボードより入力する.但
し,入力可能な文字数は 99 文字以下である.また,英数
int main(void)
{
char s[100];
int i = 0;
字記号のみを入力し,漢字等の日本語文字列は入力しな
いものとする.
Step 3. 入力された文字列とその文字数を表示する.
Step 4. このプログラムの実行例は次の通り.
99 文字以下の文字列を入力してください kandai
入力された文字列は kandai で,その文字数は 6 文字
printf("99文字以下の文字列を入力してください.");
scanf("%s", s);
while (s[i] != 0)
{
i++;
}
です.
printf("入力された文字列は%sで,その文字数は%d文字です.¥n", s, i);
}
課題8-2
課題 8-2
#include
<stdio.h>
int main(void)
{
char s[100], t[100];
int i = 0, j;
printf("99文字以下の文字列を入力してください.");
scanf("%s", s);
// 文字列の長さを求めるループ
while (s[i] != 0)
{
i++;
}
// 文字列sの長さはiなので,逆順に文字列tに代入する.
for (j = 0; j < i; j++)
{
t[j] = s[(i - 1) - j];
}
99 文字までの文字列を入力し,その文字を逆順に入れ替え
た文字列を出力するプログラムを作成せよ.
このプログラムの実行例は次の通り.
99 文字以下の文字列を入力してください kandai
入力された文字列は kandai で,これをひっくり返
すと iadnak です.
i-6 i-5 i-4 i-3 i-2 i-1
i=6
s[0] s[1] s[2] s[3] s[4] s[5] s[6]
'k'
'a'
'n'
'd'
'a'
'i'
0
(i-1)-j
t[0]
t[1]
t[2]
t[3]
t[4]
t[5]
t[6]
j=0 j=1 j=2 j=3 j=4 j=5 j=6
=i
printf("入力された文字列は%sで,これをひっくり返すと%sです.¥n", s, t);
t[i] = 0; // 文字列tの最後にゼロを挿入する.
}
課題8-3
課題 8-3
99 文字までの文字列を入力し,アルファベットの小文字は大文字に,
#include
<stdio.h>
int main(void)
{
char s[100];
int i = 0;
printf("99文字以下の文字列を入力してください.");
scanf("%s", s);
while (s[i] != 0)
{
if (s[i] >= 'A' && s[i] <= 'Z')
{
s[i] = s[i] + 32;
}
else if (s[i] >= 'a' && s[i] <= 'z')
{
s[i] = s[i] - 32;
}
else
{
s[i] = '*';
}
i++;
}
printf("変換された文字列は%sです.¥n", s);
}
アルファベットの大文字は小文字に,またアルファベット以外の文字
はアスタリスク’*’に変換した文字列を出力するプログラムを作成せ
よ.
このプログラムの実行例は次の通り.
99 文 字 以 下 の 文 字 列 を 入 力 し て く だ さ い .
abcABC123sDFgh#"x32YY=
変換された文字列は ABCabc***SdfGH**X**yy*です.
Press any key to continue
ヒント: アスキーコード表をよく眺めると,アルファベット大文
字・小文字のコード値の範囲がわかる.また,大文字のコード
値に 32 を足すと小文字のコードになることがわかる.
注意:このような課題に適したライブラリ関数もあるが,ここではそれら
を使用せずにプログラムを作成せよ.