Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語で文字列の逆順パターンを出力するプログラム


文字列 str が与えられたとき、その逆順パターンを出力するのがこの記事の課題です。パターンは逆順で増加的に表示され、文字列が尽きた後は残りの部分を「*」で埋めます。

例えば、文字列「abcd」を入力した場合、1行目には「a」、2行目には「c b」、3行目には「* * d」を出力します。

入力: str[] = { "abcd" }
出力: a
      c b
      * * d

説明

  • 1行目に1文字を出力します。
  • 2行目に2文字を逆順に出力します。
  • 3行目に3文字を逆順に出力します。文字列が3文字未満の場合は、残りの空白を「*」で埋めます。
入力: str[] = {"tutorialspoint"}
出力:

C言語で文字列の逆順パターンを出力するプログラム

使用するアプローチは以下の通りです

  • i=0 から文字列を走査し、「i<n && k<(n-i)*2」が真であるかどうかを確認します。
  • 変数 k を用意し、k を ((i*(i+1))/2)-1 に設定します。
  • k >= n-1 の場合は「* 」を出力し、そうでなければ文字列の値を逆順に出力します。

アルゴリズム

開始
関数 int reverse_it(char str[], int n) 内
    ステップ1→ i, j=0, k=0 を宣言・初期化する
    ステップ2→ ループ For i=0, i<n && k<(n-i)*2, i++
        k を ((i*(i+1))/2)-1 に設定する
        ループ For j=0, j<i && k<(n-i)*2, j++
            もし k >= n-1 ならば、
                「* 」を出力する
            それ以外ならば、
                「%c 」, str[k] を出力する
                k を1減らす
            ループ終了
        改行を出力する
    ループ終了
関数 int main(int argc, char const *argv[]) 内
    ステップ1→ 文字列 str[] を宣言・初期化する
    ステップ2→ size を sizeof(str)/sizeof(str[0]) として宣言・初期化する
    ステップ3→ 関数 reverse_it(str, size) を呼び出す
終了

サンプルコード

#include <stdio.h>
int reverse_it(char str[], int n) {
    int i, j=0 , k=0;
    for(i=0; i<n && k<(n-i)*2; i++) {
        // k の割り当て
        k = ((i*(i+1))/2)-1;
        for(j=0; j<i && k<(n-i)*2; j++) {
            // k が文字の総数より大きい場合、
            // 余分な文字を * で埋める
            if(k >= n-1)
                printf("* ");
            // 文字列を逆順に出力
            else
                printf("%c ",str[k]);
                k--;
        }
        // 逆順シーケンスの後の改行
        printf("\n");
    }
    return 0;
}
// メイン関数
int main(int argc, char const *argv[]) {
    char str[] = {"tutorialspoint"};
    int size = sizeof(str)/sizeof(str[0]);
    reverse_it(str, size);
    return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます −

C言語で文字列の逆順パターンを出力するプログラム

  1. 【C言語】六角形パターンを出力するプログラムの作成方法

    本記事では、整数「n」が与えられたとき、その値をもとにアスタリスク(*)で構成された六角形パターンを生成し、画面に出力するC言語プログラムを解説します。ループと条件分岐を組み合わせることで、きれいな六角形の図形をテキストベースで描くことができます。 実行例 入力:n = 5 の場合の出力は以下のようになります。 入力:n = 4 の場合の出力は以下のようになります。 プログラムの基本的なアプローチ このプログラムでは、六角形パターンを以下の手順で作成しています。 ユーザーから整数「n」を入力として受け取ります。 パターン全体を「上部」「中央部」「下部」の3つの部分に分割して考えます。

  2. Cプログラムで行列を対角パターンに沿って数値出力する方法

    この課題は、n×nの行列を対角パターンで出力することです。 例えば n が 3 の場合、対角パターンに従って行列を出力すると、次のような配置になります。 そして、実際の出力結果は以下の通りです。 実行例 Input: 3 Output: 1 2 4 3 5 7 6 8 9 Input: 4 Output: 1 2 4 7 3 5 8 11 6 9 12 14 10 13 15 16 考え方 一見すると、「数値 n を受け取り n×n の行列を生成し、それを対角方向に走査しながら別の行列へ値を格納する」というアプローチが思い浮かびます