2020-11-19
程序员文章站
2022-06-23 21:19:37
打印菱形(C语言版)循环版问题描述从键盘输入正整数n(2<=n<=9),要求输出由数字组成的菱形图案输入描述一个正整数n(2<=n<=9)输出描述由数字组成的菱形图案样例输入4样例输出 1 121 123211234321 12321 121 1对于此题,我们的要解决的问题有两个:1、空格如何从上到下先减再增;2、数字如何从左到右先增再减。且我们对于数字后面的空格只需用换行解决。我们来观察一下样例输出,空格从第一行的3哥到第四行的0个...
打印菱形(C语言版)循环版
问题描述
从键盘输入正整数n(2<=n<=9),要求输出由数字组成的菱形图案
输入描述
一个正整数n(2<=n<=9)
输出描述
由数字组成的菱形图案
样例输入
4
样例输出
1
121
12321
1234321
12321
121
1
对于此题,我们的要解决的问题有两个:1、空格如何从上到下先减再增;2、数字如何从左到右先增再减。且我们对于数字后面的空格只需用换行解决。
我们来观察一下样例输出,空格从第一行的3哥到第四行的0个再到第七行的3个,这个数字3等于4-1,归纳一下,空格是从第一行的n-1个到第n行的0个再到第2n-1行的n-1个;数字第一行只有1,第二行从1到2再到1,第三行从1到3再到1,第四行从1到4再到1,第五行与第三行一样,第六行与第二行一样,第七行于第一行一样,归纳一下,第一行只有1,第二行从1到2再到1,依次类推,第n行是从1到n再到1,第n+1行到第2n-1行与第1行到第n-1行顺序相反,所以,数字是从1到“行数”再到1。
最后我们只要将此图形拆分一下,分为上n行与下n-1行,将空格、数字、换行交替输出就好。
以下是源码:
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int m=n;// 用m代替n进行迭代循环
if(2<=n&&n<=9){
int i,j;
for(i=1;i<=n;i++){//准备打印前n行
for(j=1;j<=m-1;j++) printf(" ");//先打印n-1个空格,然后空格以1递减
m--;
for(j=1;j<=i;j++) printf("%d",j);//打印数字从1到行数
for(j=i-1;j>=1;j--) printf("%d",j);//打印数字从行数-1到1
printf("\n");//一行结束,换行,
}//此时m=0
for(i=n-1;i>=1;i--){//准备打印后n-1行,注意此时i的初始值是n-1
for(j=1;j<=m+1;j++) printf(" ");//先打印一行,然后空格以1递增
m++;
for(j=1;j<=i;j++) printf("%d",j);//打印数字从1到行数
for(j=i-1;j>=1;j--) printf("%d",j);//打印数字从行数-1到1
printf("\n");//一行结束,换行,
}
}
return 0;
}
本文地址:https://blog.csdn.net/qq_51774464/article/details/109821532
上一篇: 粒子系统优化:Mesh模式下的优化策略
下一篇: 那私下里我们还是父子吗