3

これは私のコードです:

int main(void)
{

    int i, j, k, n;
    char userLatter, space;
    printf("please enter an uppercase letter:\n");
    scanf("%c", &userLatter);
    n = 9;

    for (i = 0; i < 5; i++)
    {
        space = ' ';
        for (j = 5; j > i; j--)
        {
            ++space;
        }


        for (k = 0; k <= i ; k += 1)
        {
            printf("%c%c%c", space, userLatter, space);
        }
        printf("\n");
    }

}

スペース文字を印刷できるようにするために何をすべきか教えてください。

ありがとう!

4

2 に答える 2

6

次の行を使用して、スペースを別のものに変え続けます。

++space;

それが何をすることを期待していましたか?複数のスペースの文字列にしようとしていますか

printf書式指定子を使用して、文字を左に埋め込むことができます。これを試して:

int width = 4;
char letter = 'A';
printf( ":%*c:\n", width, letter );

これは、3 つのスペースと文字 A を出力します。

:   A:

また、単純にスペースを入れたい場合は、フォーマット文字列にスペースを入れるだけでよいことを忘れないでください。有名なように:

printf( "Hello, world!\n" );

そこにスペースがあることに注意してください。

于 2013-01-23T20:42:52.327 に答える
1

これは Java ではありません。StringsにはありませんC。または、 を使用しますchar[]。それが自己であるとは言えず、連結すること++spaceを期待することはできません。で言っているのと同じです。私が正しくない場合、これを行うとASCII値に1が追加されます。は文字であり、一度に 1 つの文字しか保持できません。複数の文字を保持する場合は、配列にする必要があります。代替案は次のとおりです。space++spacespace = space + 1Cspace

char space[5]; //This would be done at the top when you initialize it
/* Many lines of code later */
for(j = 5; j > i; j--){
    space[j] = ' ';
}

参考までに、nまったく何もせず、スペースを無駄にしています。申し訳ありませんが、OCDの感覚がうずきました。

于 2013-01-23T20:56:50.407 に答える