C言語浙江大学バージョン「C言語プログラミング(第3版)」質問セット演習8〜8文字移動(10ポイント)

 

この質問では、入力文字列の最初の3文字を最後に移動する関数を作成する必要があります。

関数インターフェイスの定義:

void Shift( char s[] );

それらの中にchar s[]は、ユーザーによって渡された文字列があり、タイトルの長さは3以上であることが保証されています。関数Shiftは、必要に応じて変換後も文字列に存在する必要がありs[]ます。

審判員のテスト手順の例:

#include <stdio.h>
#include <string.h>

#define MAXS 10

void Shift( char s[] );

void GetString( char s[] ); /* 实现细节在此不表 */

int main()
{
    char s[MAXS];

    GetString(s);
    Shift(s);
    printf("%s\n", s);
	
    return 0; 
}

/* 你的代码将被嵌在这里 */

入力サンプル:

abcdef

出力例:

defabc

// 1。質問がある場合は、メッセージを残して指摘してください、ありがとうございます!

// 2。より良いアイデアがある場合は、メッセージを残すこともできます。ありがとうございます!

void Shift(char s [])
{int i、j、k、n;
    n = strlen(s); // strlen()は、終了文字「\ 0」を除いて、指定された文字列sの長さを計算するために使用されます。
    for(i = 0; i <3; i ++)//入力文字列の最初の3文字を最後に移動します。つまり、3回ループします
    {k = s [0]; //最初の要素を取り出します
        for( j = 1; j <n; j ++)// 2番目の値から、前の値を割り当てます
            s [j-1] = s [j];
        s [n-1] = k; //数が取り出されます最後に移動
    }
}

 

おすすめ

転載: blog.csdn.net/L_Z_jay/article/details/106165656