1

彼らが印刷するためにそれをするように求めていること:

F
FE
FED
FEDC
FEDCB
FEDCBA

私は印刷することができました:

F
FF
FFF
FFFF
FFFFF

このコードで:

int main()
{
    int count, count2;

    char letterToPrint = 'F';

    for (count = 0; count < 5; count++)
    {
        for (count2 = 0; count2 <= count; count2++)
        {
            printf("%c", letterToPrint);
        }
        printf("\n");
    }
}

for前の文字を印刷してからデクリメントするために2番目のループに追加できるものはありますか、それとも別のループが必要ですか?

4

8 に答える 8

5

'F'C の文字 (および型などの両方の文字リテラル) は通常の整数値であるため、それらを使用して通常の算術演算を実行したり、 from から までループしたりできることを思い出してcharください。'F''A'

このような:

for (int i = 'F'; i >= 'A'; i--)
{
    for (int c = 'F'; c >= i; c--)
        printf("%c", c);
    printf("\n");
}
于 2013-01-23T10:29:48.360 に答える
3

に変更printf("%c", letterToPrint);するだけprintf("%c", letterToPrint - count);

ただし、次のように、putchar代わりに使用する必要があります。printf
putchar(letterToPrint - count);

于 2013-01-23T10:32:25.487 に答える
3

内側のループの値を変更しletterToPrint、外側のループの開始時にリセットするだけです。

int main()
{
    int count, count2;
    for (count = 0; count < 5; count++)
    {
        char letterToPrint = 'F'; // MOVED
        for (count2 = 0; count2 <= count; count2++)
        {
            printf("%c", letterToPrint--);
            //                        ^^
        }
        printf("\n");
    }
}
于 2013-01-23T10:29:56.223 に答える
2

ちょうどそれの一体のために:

for(int i = 20; i >= 0 ; i-=4)
{
    printf("%X\n", 0xFEDBCA >> i);
}
于 2013-01-23T10:35:08.257 に答える
1

印刷する行数は (int)('F'-'A')であるため、このソリューションを任意の文字に一般化することもできます。

void printCharPattern(char startChar)
{
int count, count2;
char letterToPrint = starChar;
int no_of_lines = (int)startChar-(int)'A'+1;

for (count = 0; count < no_of_lines; count++)
{   
    letterToPrint = start_char;
    for (count2 = 0; count2 <= count; count2++)
    {
        printf("%c", letterToPrint--);
    }
    printf("\n");
}
}
于 2013-01-23T10:39:03.413 に答える
0

最初のforループの後に別の文字differLetterを宣言します。differLetter=latterToPrintprintfを宣言します。laterToPrintの代わりにdifferLetter

于 2013-01-23T10:30:58.650 に答える
0

そして、与えられた文字が「G」または「Z」の場合はどうなりますか?より一般的なアルゴリズム

#include <stdio.h>

int main() {
  char letter = 'F';

  int i=0,j;
  do {
    for (j=0 ; j<=i ; j++) printf("%c", letter-j);
    printf("\n");
  } while (letter-i++ > 'A');

  return 0;
} 
于 2013-01-23T10:33:25.493 に答える
0

内側のループで letterToPrint をデクリメントし、外側のループで初期化します。

于 2013-01-23T10:29:24.927 に答える