浅谈输出实心菱形和空心菱形

来源:互联网 发布:java多线程互斥锁 编辑:程序博客网 时间:2024/04/28 12:43
/*  *
   ***
  *****
 *******
  *****
   ***
    *
首先根据要输入的符号递增递减情况把图形分为上下两个三角形
对于上述图形可以分为4行正三角形和3行倒三角,反之亦可
可以发现每行都是先输出空格再输出*,可以循环进行
细心可以发现对于空格来说由上到下依次减1,对于*是依次递增2
倒三角反之,
假设用 i 表示行数
       j 表示输出符号数(包括空格和*)
两者之间存在线性关系  j=a*i+b
下来是要确定a和b的值
a为正数  随着行数递增符号数递增(递增几个a就是那个数)
a为负数  随着行数递增符号数递减  (同上)
对于 b 值得确定要用代入具体值来求得
对于此图 上4行正三角
空格 i=1,j=3  由j=-i+b  求出 j=4-i
*    i=1,j=1  由j=2*i+b 求出 j=2*i-1
         下3行倒三角
空格 i=1,j=1  由j=i+b   求出 j=i 
*    i=1,j=5  由j=-2i+b 求出 j=-2*i+7


代码如下*/

/**********************************************************************   * Copyright (c)2015,WK Studios * Filename:     * Compiler: GCC,VS,VC6.0  win32   * Author:WK   * Time: 2015 1 23 ************************************************************************/ #include <stdio.h># define N 4 void main(){int i=0,j=0;for(i=1;i<=N;i++){for(j=0;j<=N-i;j++){printf(" ");}for(j=0;j<2*i-1;j++){printf("*");}printf("\n");}for(i=1;i<=N-1;i++){for(j=0;j<=i;j++){printf(" ");}for(j=1;j<=-2*i+7;j++){printf("*");}printf("\n");}}

下面给出一个实现打印空心菱形的代码:

#include <iostream>#include <string>using namespace std;void PriTriangle(int n){for(int i=1;i<=n;++i) { for(int j=1;j<=n-i;++j) { cout<<" "; } for(int k=1;k<=2*i-1;++k) { if(i==1 || i==n) cout<<"*"; else { if(k==1 || k==2*i-1) cout<<"*"; else cout<<" "; } } cout<<"\n";}}void main(){cout<<"please input a number: ";int n;cin>>n;PriTriangle(n);}


0 0
原创粉丝点击