本题目要求读入2个整数n和m,m表示小金字塔的行数,n代表大金字塔的层数。然后输出多层金字塔。
输入格式:
在一行中层数n和 小金字塔的行数m。
输出格式:
对每一组输入,显示对应的图案
输入样例:
在这里给出一组输入。例如:
2 3
输出样例:
在这里给出相应的输出。例如:
*
***
*****
* *
*** ***
***** *****
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
总共有n*m行,从建立个大循环,每行前面打印空格递减1,
然后从大层金字塔从第二行开始要在中间打印空格倒金字塔,
大金字塔n的层数对应每行要循环j次(若第2层 即要打印“* ”* “,这两个循环),但注意最右边的空格不能打出来,不然不会通过
代码如下
#include<stdio.h>
int main(){
int n,m,i,k,cnt,j=1,q,g,l,sum;
scanf("%d%d",&n,&m);
q=n*m; //q为总行数
for(i=1;i<=q;i++){ //i为运行到第i行
for(k=1;k<=q-i;k++)
printf(" ");
cnt=i%m;
if(cnt==0){
cnt=m;
//j表示大层,cnt表示小层
}
for(l=1;l<=j;l++){
for(k=1;k<=2*cnt-1;k++)
printf("*");
sum=2*(m-cnt)+1;
while(sum--&&l!=j){
//sum--是打印多少空格,l=!j是避免最右边打多余的空格
printf(" ");}
}
printf("\n");
if(cnt==m) j++;
}
return 0;
}