Comments
Description
Transcript
課題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 を足すと小文字のコードになることがわかる. 注意:このような課題に適したライブラリ関数もあるが,ここではそれら を使用せずにプログラムを作成せよ.