他们要求打印的内容:
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
循环中添加一些内容来打印上一个字母然后递减它,还是会再次循环?
答案 0 :(得分:5)
请记住,C中的字符(两个字符文字,例如'F'
和char
类型)都是正常的整数值,因此您可以使用它们执行常规算术,例如从'F'
循环到'A'
。
像这样:
for (int i = 'F'; i >= 'A'; i--)
{
for (int c = 'F'; c >= i; c--)
printf("%c", c);
printf("\n");
}
答案 1 :(得分: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");
}
}
答案 2 :(得分:3)
只需将printf("%c", letterToPrint);
更改为printf("%c", letterToPrint - count);
你应该使用putchar
而不是printf
,但是给予:
putchar(letterToPrint - count);
答案 3 :(得分:2)
只是为了它:
for(int i = 20; i >= 0 ; i-=4)
{
printf("%X\n", 0xFEDBCA >> i);
}
答案 4 :(得分: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");
}
}
答案 5 :(得分:0)
在内循环中减少letterToPrint并在外循环中初始化它。
答案 6 :(得分:0)
声明另一个char differLetter 在第一个for循环之后说differeLetter = laterToPrint printf differLetter而不是laterToPrint
答案 7 :(得分: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;
}