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. 效果图
时间: 2024-12-11 15:29:05