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循环中添加一些东西来打印前一个字母然后减少它,还是需要另一个循环?

4

8 回答 8

5

请记住,C 中的字符(字符文字'F'char类型)都是正常的整数值,因此您可以使用它们执行正常的算术运算,例如循环 from 'F'to '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

您只需要更改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 回答
3

只需更改printf("%c", letterToPrint);printf("%c", letterToPrint - count);

您可能应该使用,putchar而不是printf,给出:
putchar(letterToPrint - count);

于 2013-01-23T10:32:25.487 回答
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

在内部循环中递减 letterToPrint 并在外部循环中对其进行初始化。

于 2013-01-23T10:29:24.927 回答
0

在第一个 for 循环之后声明另一个字符differLetter 说differLetter=latterToPrint printf distinctLetter 而不是latterToPrint

于 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 回答