控制台打印三角形、菱形

一、 打印三角形

要求:

打印如下类似的三角形

            *

          ***

        *****

      *******

 

效果:

1

 

思路:

(1) 空格每往下一层少一个。

(2) *是奇数数列,(i – 1)* 2 + 1

 

核心代码:

for(int i = 1; i <= layer; i++) {
    
for(int j = 1;j <= (layer - i); j++) {
    cout
<<" ";
    }

    
for(int k = 1; k <= (i - 1* 2 + 1; k++) {
    cout
<<"*";
    }
    cout
<<"\n";
}

 

 

 二、 打印菱形

要求:

打印如下类似的菱形

          *

        ***

      *****

        ***

          *

 

效果:

2

思路:

(1) 空格是对称的,中间层(例如要求中的菱形,中间层为3)的空格为0,而两边的空格数则为当前层数减去中间层的绝对值。

(2) *也是对称的,中间层数减去空格数,就等于如上奇数数列的i.

 

核心代码:

for(int i = 1; i <= layer; i++) {
    
int j;
        
    
for(j = 1;j <= abs(i - mid); j++) {
    cout
<<" ";
    }

    
for(int k = 1; k <= (mid - j) * 2 + 1; k++) {
    cout
<<"*";
    }

    cout
<<"\n";
}

 

 

三、所有代码:

 

ExpandedBlockStart.gif代码
//GeometryTest.cpp
//powered by Alan
//2010.09.18

#include
<iostream>

using namespace std;

//画三角形
void DrawTri();
//画菱形
void DrawDia();

int main() {
    
int type = 0;
    
    cout
<<"选择您需要的图形:\n";
    cout
<<"   1.三角形\n";
    cout
<<"   2.菱形\n";
    
    cin
>>type;
    
    
while(!(cin.good() && type == 1 || type == 2)) {
        cin.clear();
        cin.ignore(
1024,'\n');
        cout
<<"输入的图形类型不正确重新输入:\n";
        cin
>>type;
    } 
    
    
switch(type) {
        
case 1:
            DrawTri();
            
break;
        
case 2:
            DrawDia();
            
break;
        
default:
            cout
<<"输入的图形类型不正确重新输入:\n";
            
break;
    }
    
    
    
return 0;
}

void DrawTri() {
    
//记录层数
    int layer = 0;
    
    cout
<<"输入层数:\n";
    cin
>>layer;
    
while(!(cin.good() && layer > 1)) {
            cin.clear();
            cin.ignore(
1024,'\n');
            cout
<<"输入的层数类型不正确或层数小于2,请重新输入:\n";
            cin
>>layer;
    }
    
    cout
<<layer<<"层三角形:\n";
    
for(int i = 1; i <= layer; i++) {
        
for(int j = 1;j <= (layer - i); j++) {
            cout
<<" ";
        }
        
for(int k = 1; k <= (i - 1* 2 + 1; k++) {
            cout
<<"*";
        }
        cout
<<"\n";
    }
    
}

void DrawDia() {
    
//记录层数
    int layer = 0;
    
//记录中间层
    int mid;
    
    cout
<<"输入层数:\n";
    cin
>>layer;
    
while(!(cin.good() && layer > 3 && (layer%2 != 0))) {
            cin.clear();
            cin.ignore(
1024,'\n');
            cout
<<"输入的层数类型不正确或层数小于3或层数不为基数,请重新输入:\n";
            cin
>>layer;
    }
    
    mid 
= (layer + 1)/2;
    
    cout
<<layer<<"层菱形:\n";
    
for(int i = 1; i <= layer; i++) {
        
int j;
        
        
for(j = 1;j <= abs(i - mid); j++) {
            cout
<<" ";
        }
        
for(int k = 1; k <= (mid - j) * 2 + 1; k++) {
            cout
<<"*";
        }
    
        cout
<<"\n";
    }
}

 

 

转载于:https://www.cnblogs.com/icescut/archive/2010/09/22/triangle_diamon.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《React Native 精解与实战》书籍连载「React Native 网络请求与列表绑定」

此文是我的出版书籍《React Native 精解与实战》连载分享&#xff0c;此书由机械工业出版社出版&#xff0c;书中详解了 React Native 框架底层原理、React Native 组件布局、组件与 API 的介绍与代码实战&#xff0c;以及 React Native 与 iOS、Android 平台的混合开发底层原理…

在CloudBees上开发,测试和部署独立应用程序

CloudBees是一个云平台&#xff0c;为您的应用程序提供存储库&#xff0c;CI服务&#xff08;Jenkins&#xff09;和服务器。 因此&#xff0c;您需要开发&#xff0c;测试和部署所有内容。 有很多选项&#xff0c;例如存储库可以是Git或SVN&#xff0c;对于服务器&#xff0c;…

第五次实验

数组和指针 1. 设N个整数有序&#xff08;由小到大&#xff09;存放在一维数组中。编写函数binarySearch(),实现使用二分查找算法在一维数组中 查找特定整数item。如果找到&#xff0c;返回item在数组元素中的下标&#xff1b;如果item不在数组中&#xff0c;则返回-1。 实现方…

《React Native 精解与实战》书籍连载「Node.js 简介与 React Native 开发环境配置」

此文是我的出版书籍《React Native 精解与实战》连载分享&#xff0c;此书由机械工业出版社出版&#xff0c;书中详解了 React Native 框架底层原理、React Native 组件布局、组件与 API 的介绍与代码实战&#xff0c;以及 React Native 与 iOS、Android 平台的混合开发底层原理…

React.js 入门与实战课程思维导图

原文发表于我的技术博客 我在慕课网的「React.js 入门与实战之开发适配PC端及移动端新闻头条平台」课程已经上线了&#xff0c;在这里分享了课程中的思维导图&#xff0c;供大家参考。 原文发表于我的技术博客 此导图为课程中整理的重要知识点以及大纲导图&#xff0c;供大家学…

Webpack 2 视频教程 002 - NodeJS 安装与配置

原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」。 Webpack 作为目前前端开发必备的框架&#xff0c;Webpack 发布了 2.0 版本&#xff0c;此视频就是基于 2.0 的版本讲解的。 这个基本就是目前国内最好的 Webpack 2.0 最好的学习视频了&#xff0c;…

vue+elementUI 添加多个可以全选的多选框

elementUI-checkbox官网&#xff1a;https://element.eleme.cn/#/zh-CN/component/checkbox 一、要做上面这种效果&#xff0c;首先要了解全选框中indeterminate 状态和v-model的变量的关系 参考 -Dayer-&#xff1a; <el-checkbox :indeterminate"isIndeterminate&…

WMI in C#[强类型操作]

C# 进行WMI操作的内容封装在System.Management.dll中&#xff0c;具体的在MSDN有详细描述&#xff0c;默认是用[“**’]去读取和设置属性等。 此处介绍一个自动生成强类型的包装软件&#xff0c;这样处理起来就简单了很多&#xff0c;不用在反复的查看参数等信息了。 1、 使用W…

2019年ipa发布苹果应用商店审核指南

https://baijiahao.baidu.com/s?id1623886553597961077&wfrspider&forpc ipa 发布审核指南 说明&#xff1a; 本指南为初版&#xff0c;旨在帮助非技术人员快速了解苹果ipa发布审核流程非技术的审核专员发布审核只需处理 &#xff08;五&#xff09;、iTunes connect …

GridView生成序号

一个经常碰到的情况&#xff1a;GridView需要添加一个序号列&#xff0c;并且从1开始自动编号。而数据库中的ID往往是不连续的&#xff08;会有记录被删除的情况&#xff09;&#xff0c;我们无法绑定现有字段作为编号。因此我们需要手动给GridView编号。 思路&#xff1a;在Gr…

[前端优化]使用Microsoft Ajax Minifier对资源文件进行压缩优化

在前端优化中&#xff0c;js、css等文件的优化一般都是压缩的优化&#xff0c;进行合并、减小体积以达到减小请求的目的。 今天发现了一个集成在VS中的压缩插件&#xff0c;使得压缩变得比较快捷。 配置方法 首先需要去下载Microsoft Ajax Minifier&#xff0c;一路安装就可以&…

手把手教你用 elementUI 实现导航栏

elementUI导航栏官网 1. 安装 elementUI 2. 文件准备 3. 配置路由 4. 导航栏代码 一、安装 elementUI npm i element-ui -S&#xff1b; 在 main.js 中注册组件&#xff1a; import ElementUI from element-ui; import element-ui/lib/theme-chalk/index.css; Vue.use(Elem…

vuex+element 从后台获取数据写导航栏-菜单权限

主要用到 vuex、router.beforeEach、router.addRoutes()。vuex 的使用方法可以看我的另一篇博客&#xff1a;vue笔记&#xff08;四&#xff09;vuex。 顺便安利一个 在线视频转gif图。 因为第一次用到 router.addRoutes()&#xff0c;在做这个需求的时候遇到了很多问题&…

P3393 逃离僵尸岛 最短路dijkstra

题目描述 小a住的国家被僵尸侵略了&#xff01;小a打算逃离到该国唯一的国际空港逃出这个国家。 该国有N个城市&#xff0c;城市之间有道路相连。一共有M条双向道路。保证没有自环和重边。 K个城市已经被僵尸控制了&#xff0c;如果贸然闯入就会被感染TAT...所以不能进入。由其…

JavaFX技巧7:使用CSS颜色常量/派生颜色

在使用FlexCalendarFX时&#xff0c;我不得不定义一组颜色以可视化不同颜色的不同日历的控件。 每个日历不仅提供一种颜色&#xff0c;还提供几种&#xff1a;用于取消选择/选定/悬停状态的背景和文本颜色。 颜色曾在多个地方使用过&#xff0c;但为了简洁起见&#xff0c;我仅…

import() 动态加载component组件失败

在写 vueelement 从后台获取数据写导航栏 时&#xff0c;当我加载动态路由&#xff0c;import() 总是失败。 假设 path: “/views/Home.vue”&#xff0c;name: “Home”。 一、使用 import() 语法加载组件 参考&#xff1a;“Cookysurongbin”的 解决vue动态路由异步加载im…

进入登录页时,用户名输入框自动聚焦、按enter键让密码框聚焦,完整输入信息后登录

让element-ui的输入框聚焦的4种方式 思路&#xff1a;&#xff08;可以跳过这一步看完整代码——完整代码&#xff09; 1. 进入页面时&#xff0c;用户名输入框就要获取焦点&#xff0c;使用 自定义指令 聚焦更方便。当然也可以用 ref 在 mounted() 钩子函数中让输入框聚焦。 …

vue-cli安装步骤

vue-cli脚手架模板是基于node下的npm来完成安装的所以首先需要安装node 条件&#xff1a; node在4.以上&#xff0c;npm在3以上 安装 指令&#xff1a; 1、 npm install -g vue-cli在全局下安装vue-cli # 安装 vue-cli npm install -g vue-cli# 初始化 webpack 项目 vue in…

使用Java编写简单的老虎机游戏

无论游戏多么简单或复杂 &#xff0c;Java都能胜任&#xff01; 在这篇文章中&#xff0c;让我们看一下Java编程的初学者如何制作一个简单而功能齐全的老虎机。 老虎机已经存在很长时间了&#xff0c;但是它的娱乐价值似乎并没有减弱。 InterCasino是第一个在1996年向世界提供…

html笔记(二)html4+css2.0(元素类型、css精灵、宽度自适应、BFC、浏览器相关概述、css统筹)

大标题小节一、元素类型1. 元素分类2. 置换和非置换元素3. 元素类型转换二、css精灵三、宽高自适应1. 宽度自适应2. 高度自适应3. 最小高度自适应4. 高度塌陷及解决办法5. 元素的高度自适应屏幕的高度四、BEC概念应用1. 常见定位方案2. 触发BFC3. BFC特性及应用4. BFC概念五、浏…