【c++】C语言之输入行数,输出实心菱形和空心菱形

简介: C语言之输入行数,输出实心菱形和空心菱形

输出菱形

编程自动输出如下图形,由屏幕输入指定行数(奇数),实现后封装为函数,以行数作为参数值。

在这里插入图片描述

     
   输入一个n,表示左边两个菱形图形(实心和空心)的行数(或者一半行数)  
   利用循环语句实现输出。说明:此题相当于两个题,要打印出两个图。
  提示:第一个菱形分析*号个数和规律;第二题分析*出现位置及变化规律

做题思路

先输出上半部分,再输出下部分
这样就相当于输出一个正三角形和一个倒三角形。
并且正三角形的行数比倒三角形的行数多一行,多出的一行是两个三角形的线。

正三角形

for(i=1; i<=n; i++)//上半部分 
    {
        for(j=1; j<=n-i; j++)//"n-i"当前行第一个星号左边的空格数//
            cout << ' ';
        for(j=1; j<=2*i-1; j++)//"2*i-1"为当前行的星号数// 
            cout << '*';
        cout << endl;//换行//
    }

倒三角形

for(i=n; i>=1; i--)//下半部分
    {
        for(j=1; j<=n-i+1; j++)//"n-i"当前行第一个星号左边的空格数// 
            cout << ' ';
        for(j=1; j<=2*i-1; j++)//"2*i-1"为当前行的星号数// 
            cout << '*';
        cout << endl;//换行//
    }

改变两者的n

n_u=n/2+1;//上半部分行数
n_l=n/2;//下半部分行数 

在这里插入图片描述

代码:

#include <iostream>
using namespace std;
int main()
{
    int n,i,j,n_u,n_l;
    cout << "输入行数一个奇数:";
    cin >> n;
    n_u=n/2+1;//上半部分行数
    n_l=n/2;//下半部分行数 
    for(i=1; i<=n_u; i++)//上半部分 
    {
        for(j=1; j<=n_u-i; j++)//"n_u-i"当前行第一个星号左边的空格数//
            cout << ' ';
        for(j=1; j<=2*i-1; j++)//"2*i-1"为当前行的星号数// 
            cout << '*';
        cout << endl;//换行//
    }
    for(i=n_l; i>=1; i--)//下半部分
    {
        for(j=1; j<=n_l-i+1; j++)//"n_l-i"当前行第一个星号左边的空格数// 
            cout << ' ';
        for(j=1; j<=2*i-1; j++)//"2*i-1"为当前行的星号数// 
            cout << '*';
        cout << endl;//换行//
    }
}

空心菱形

做题思路

先输出上半部分,再输出下部分
这样就相当于输出一个正三角形和一个倒三角形。
并且正三角形的行数比倒三角形的行数多一行,多出的一行是两个三角形的线。

在实心的基础上改进
不同点在于*的输出

if(i==1)
            cout << '*';
        else{
            cout << '*';
            for(j=1; j<=2*(i-1)-1; j++)//"2*i-1"为当前行的星号数// 
                cout << ' ';
            cout << '*';
        }

结果

在这里插入图片描述

代码

#include <iostream>
using namespace std;
int main()
{
    int n,i,j,n_u,n_l;
    cout << "输入行数一个奇数:";
    cin >> n;
    n_u=n/2+1;//上半部分行数
    n_l=n/2;//下半部分行数 
    for(i=1; i<=n_u; i++)//上半部分 
    {
        for(j=1; j<=n_u-i; j++)//"n_u-i"当前行第一个星号左边的空格数//
            cout << ' ';
        
        if(i==1)
            cout << '*';
        else{
            cout << '*';
            for(j=1; j<=2*(i-1)-1; j++)//"2*i-1"为当前行的星号数// 
                cout << ' ';
            cout << '*';
        }
        
        cout << endl;//换行//
    }
    for(i=n_l; i>=1; i--)//下半部分
    {
        for(j=1; j<=n_l-i+1; j++)//"n_l-i"当前行第一个星号左边的空格数// 
            cout << ' ';
        if(i==1)
            cout << '*';
        else{
            cout << '*';
            for(j=1; j<=2*(i-1)-1; j++)//"2*i-1"为当前行的星号数// 
            cout << ' ';
            cout << '*';
        }
        
        cout << endl;//换行//
    }
}
目录
相关文章
|
3月前
|
C语言
用c语言画菱形( ̄_ ̄ )
用c语言画菱形( ̄_ ̄ )
16 0
|
3月前
|
C语言
C语言第二十五弹--打印菱形
C语言第二十五弹--打印菱形
|
4月前
|
C语言
【C语言刷题】水仙花数、打印菱形、求和
【C语言刷题】水仙花数、打印菱形、求和
31 0
|
5月前
|
C语言
C语言之实现矩阵(3行3列)的转置(即行列互换)
C语言之实现矩阵(3行3列)的转置(即行列互换)
173 0
|
8月前
|
C语言
【C语言】输入行数,打印上下对称的菱形
【C语言】输入行数,打印上下对称的菱形
77 0
|
9月前
|
C语言
C语言:打印菱形
题目:打印菱形 背景:无。 思路:采用两个 for 循环,利用数学知识,推出规律
45 0
C语言:打印菱形
|
9月前
|
C语言
C语言刷题系列——8.矩阵的行/列互换
C语言刷题系列——8.矩阵的行/列互换
56 0
|
10月前
|
算法 C语言
C语言练级之路num4(有关各种菱形的打印)(用的都是基础的算法),会了这些图形的打印,从此再无你不会用的循环,给你理解的透透的
1.第一题(边框菱形的打印) 2.第二题边框 菱形的进阶 3.第三题(数字菱形的打印) 4.第四题:(空心菱形) 5.第五题(实心菱形): 6.第六题:(外带一个杨氏三角的再一次打印)
|
11月前
|
C语言
C语言打印菱形
C语言打印菱形
57 0
|
11月前
|
C语言
C语言典型例题七——菱形图
菱形图 C语言输出菱形图的原理:循环控制空格数和“*”的数量 空格数由菱形的对角线长减1除2开始,逐行减1,减至0后再逐行加1 *的数量由1开始,逐行加2,当空格数为0后,逐行减2,减至1,结束循环。