首页 > 代码库 > 两种思路打印出字母组成的对称金字塔
两种思路打印出字母组成的对称金字塔
1. 编程环境:ubuntu下使用vi编辑器编写的程序,通过gcc编译。
2. 实现现象:在终端屏幕打印出由指定的A-Z字母,组成的对称金字塔。仅提供打印出大写字母图形。
3. C代码
#if 1 /*思路:先输出每行空格,再输出每行的升序降序字母*/ #include <stdio.h> int main(void) { int a,b,c; char top; printf("请输入A---Z\n"); scanf("%c",&top); if(top>=‘A‘ && top<=‘Z‘) { a=top-‘A‘; } else { printf("输入错误"); } //b控制换行 for(b=0;b<=2*a;b++) { //打印空格 for(c=0;c<a-b;c++) printf(" "); for(c=a;c>2*a-b;c--) printf(" "); if(b<=a) { //打印前面顺序的部分 for(c=0;c<=b;c++) printf("%c",‘A‘+c); for(c=b-1;c>=0;c--) printf("%c",‘A‘+c); } else { //打印后面逆序的部分 for(c=0;c<=2*a-b;c++) printf("%c",‘A‘+c); for(c=2*a-b-1;c>=0;c--) printf("%c",‘A‘+c); } printf("\n"); } return 0; } #else /*思路:先输出上半部分的空格,升序降序字母; 再输出下半部分的空格,升序降序字母。 */ #include<stdio.h> int main(void) { char ch,charA = ‘A‘; int i,j,div; printf("Input a char A-Z:"); scanf("%c",&ch); if(ch >= ‘A‘ && ch <= ‘Z‘) { div = ch - ‘A‘; //上半部分循环总次数 for(i = 1;i <= div+1;i++) { //每行空格数 for(j = i;j <= div;j++) printf(" "); //每行字母升序循环次数 for(j = 0;j < i;j++) printf("%c",charA++); charA--; //每行字母降序循环次数 for(j = 0;j < i-1;j++) printf("%c",--charA); printf("\n"); } //下半部分循环总次数 for(i = 1;i <= div;i++) { //每行空格数 for(j = 0;j < i;j++) printf(" "); //每行字母升序循环次数 for(j = 0;j <= div-i;j++) printf("%c",‘A‘+j); //每行字母降序循环次数 for(j = div-i;j > 0;j--) printf("%c",‘A‘+j-1); printf("\n"); } } else printf("Input error\n"); return 0; } #endif
4. 效果图
两种思路打印出字母组成的对称金字塔
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。