打印金子塔的三个循环
做过点题目的都知道,这种题至少要三个for循环来实现,首个for控制行数,内部两个控制空格和打印内容,总结为如下:
for(int i=1;i<=n;i++){ for(int j=0;j<n-i;j++){ printf(" "); } for(int k=;k<=2*i-1;i++){ printf("*"); } printf("\n"); }
|
倒金字塔与正的类似,内部两个语句相同,但是控制行数的语句不同。
for(int i=n;i>0;i--){ for(int j=0;j<n-i;j++){ printf(" "); } for(int k=;k<=2*i-1;i++){ printf("*"); } printf("\n"); }
|
所以菱形就是将这两种代码加起来(这里的n指的是行数/2),但要注意只是简单的加起来的话,会有一行重复,所有下一行要写i=n-1
for(int i=1;i<=n;i++){ for(int j=0;j<n-i;j++){ printf(" "); } for(int k=;k<=2*i-1;i++){ printf("*"); } printf("\n"); } for(int i=n-1;i>0;i--){ for(int j=0;j<n-i;j++){ printf(" "); } for(int k=;k<=2*i-1;i++){ printf("*"); } printf("\n"); }
|
金子塔的输出内容
上面讲了金字塔的大致输出格式,现在我们细分到金字塔的特殊样式,例如数字,字母,变化的数字和字母。(我们接下来的演示都是正金字塔)
最基础的 字符金字塔
#include<stdio.h>
int main(){ int n; scanf("%d",&n); for(int i=1;i<=n;i++){ for(int j=0;j<n-i;j++){ printf(" "); } for(int k=;k<=2*i-1;i++){ printf("*"); } printf("\n"); } return 0; }
|
改变的金字塔
不同于输出同一种字符形式的金子塔,变化的金字塔要在控制输出内容上在加上for语句来控制输出形式的变化
递增数字的金字塔
#include<stdio.h>
int main(){ int n; scanf("%d",&n); for(int i=1;i<=n;i++){ for(int j=0;j<n-i;j++){ printf(" "); } for (int k=1; k<=i; k++) { printf("%d",k); } for (int k =i-1;k>=1; k--) { printf("%d", k); } printf("\n"); } return 0; }
|
相较于普通的输出,数字金字塔多了两个for语句来控制数字的递增和递减。
字母金字塔
#include<stdio.h>
int main(){ int n; scanf("%d",&n); for(int i=1;i<=n;i++){ for(int j=0;j<n-i;j++){ printf(" "); } for (int k=1; k<=i; k++) { printf("%c",'A' + k - 1); } for (int k =i-1;k>=1; k--) { printf("%c", 'A' + k - 1); } printf("\n"); } return 0; }
|
相较于上一个金字塔,我们在输出的时候改边了输出变量的值,也就是说我们递增或是递减的形式不变,通过改变变量由输出数字变为输出字母