欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

2020-11-19

程序员文章站 2022-03-08 07:59:49
打印菱形(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

相关标签: 笔记