题目:
先来看一下源程序和运行结果:
//作者:wsg
//时间:2017年8月11日
#include <stdio.h>
int main(int argc, char *argv[])
{
char ch;
LOOP:
printf("请输入一个大写字母:\n");
scanf("%c", &ch);
while((getchar()) != '\n'); //scanf()的行缓冲
int num = ch; 将字符转换成ASCII码对应的数字
if(num>=65 && num<=90) //是大写字母才执行以下程序(大写字母A-Z对应的ASCII码值为65-90)
{
printf("该字母的ASCII值为:%d\n", num);
int i,j;
for(j=65; j<=num; j++) //从第一个字母开始,循环递增打印
{
for(int k=num-j; k>=0; k-- ) //判断应该输入的空格
{
printf(" ");
}
for(i=65; i<=j; i++) //打印正序输出,如ABCD
{
printf("%c",i);
}
for(i=j-1; i>=65; i--) //打印逆序输出,如CBA
{
printf("%c",i);
}
printf("\n");
}
}
else
{
printf("ERROR!请重新输入!\n");
printf("\n");
}
goto LOOP; //goto 无条件转换,实现程序不会自动退出的功能
return 0;
}
结果:
本程序主要的部分是3个for循环,空格+正序+逆序输出保证了每一行结果的正确性。
还有一个知识点就是字符可以自动转为成相应的ASCII码值,整形数字也可以自动转换成ASCII码表对应的字符。
例如:
(1)字符转数字:
#include <stdio.h>
int main()
{
char ch = getchar();
printf("ASCII码对应的数字是:%d\n", ch);
return 0;
}
(2)数字转字符:
#include <stdio.h>
int main()
{
int nu;
scanf("%d", &nu);
printf();
return 0;
}
最后的最后,附上ASCII码表: