#include "stdio.h"
int _tmain(int argc, _TCHAR* argv[])
{
char ch;
int sum, num, line;
printf ("Please enter a Capital Letter: (q to quit)\n");
while (scanf("%c", &ch) == 1)
{
if (ch >= 'A' && ch <= 'Z')
{
for (num = ch - 'A' + 1, sum = 1; num; num--, sum++)
{
printf("%c", num+ 'A');
for (line = 1; line < sum; line++)
printf ("%c", 'A' + line);
for (line -= 2; line >= 0; line--)
printf ("%c", 'A' + line);
printf ("\n");
}
}
else
printf ("into"); //就是这里, if结束后程序进入这里
}
return 0;
}单步发现,其实while (scanf("%c", &ch) == 1)会走两遍,第一遍是输入的字符,第二遍是0x0A,为什么会这样?
楼主如果输入一堆字符进去
这些字符首先被存储在输入缓冲区中
这些字符就包括你输入的大写字符和acii码为0xA(VT垂直制表符)
然后你的这句scanf("%c", &ch)
就把字符一个一个的按顺序取出来
就是这么回事
是因为你输入了一个字符之后按下了回车键,第二次scanf("%c", &ch) 接收的是回车键。