循环结构(打印图形专项练习)
提示:初学者在学习编程时最大的坏习惯就是不用草稿纸,眼高手低,拿到题目还没有想好算法就动手写程序,走一步看一步,这样写出的程序往往会存在各种各样的问题,最终浪费大量的时间去进行调试,学习到后期当问题较难没有思路时,便只能坐在电脑前发呆走神,数学练习没有草稿纸我们还可以在试卷上写写画画,编程如果没有草稿纸只能陷入空想,请同学们切忌切忌!!! 思考问题的过程中遇到困难,**笔**和**纸**将会是你最强大的武器,可以帮助你劈砍出你的算法思路。
本文设计意图:《打印图形》专项练习的编写是为了帮助学生进一步理解掌握循环嵌套的设计编写,重点是学会分析循环变量之间的关系
文章目录
- 1、矩形
- 2、直角三角形1
- 3、直角三角形2
- 4、直角三角形3
- 5、直角三角形4
- 6、等腰三角形1
- 7、等腰三角形2
- 8、菱形三法(三种方法都得会)
- 9、圆形
- 10、自主练习
1、矩形
打印图形如下
******
******
******
******
******
******
分析:不难想到使用循环嵌套来打印这个6行6列的图形矩阵,外层循环控制打印的行数,内层循环控制每行打印的个数,。
注意:每个“*”打印完后不换行,每一行打印完后需要换行
最终得到标程如下:
#include<bits/stdc++.h>
using namespace std;
int main(){for(int i=1;i<=6;i++){for(int j=1;j<=6;j++)cout<<"*";cout<<endl; }return 0;
}
2、直角三角形1
打印图形如下
*
**
***
****
*****
******
每行打印的*号个数随着行号的变化而变化,第i行就打印i个星号,故j=i
#include<bits/stdc++.h>
using namespace std;
int main(){for(int i=1;i<=6;i++){for(int j=1;j<=i;j++)cout<<"*";cout<<endl; }return 0;
}
3、直角三角形2
打印图形如下
******
*****
****
***
**
*
提示:本题没有上面两题容易直观地看出结果,此时就需要我们拿出草稿纸分析内外循环变量的取值变化情况
i | j |
---|---|
1 | 6 |
2 | 5 |
3 | 4 |
4 | 3 |
5 | 2 |
6 | 1 |
从上表中我们可以分析出内外循环变量的关系表达式:j=7-i
#include<bits/stdc++.h>
using namespace std;
int main(){for(int i=1;i<=6;i++){for(int j=1;j<=7-i;j++)cout<<"*";cout<<endl; }return 0;
}
4、直角三角形3
打印图形如下***************
******
提示:本题仍然是打印6行星号字符,但是每行先要打印空格,再打印“ * ”,故代码框架如下:
#include<bits/stdc++.h>
using namespace std;
int main(){for(int i=1;i<=6;i++){//打印空格 for(int k=1;_____;k++)cout<<" ";//打印星号 for(int j=1;_____;j++)cout<<"*";cout<<endl; }return 0;
}
再列出内外循环变量的取值变化情况
i | 空格k | 星号j |
---|---|---|
1 | 5 | 1 |
2 | 4 | 2 |
3 | 3 | 3 |
4 | 2 | 4 |
5 | 1 | 5 |
6 | 0 | 6 |
从上表中我们可以分析出内外循环变量的关系表达式如下:
k=6-i
j=i
故代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){for(int i=1;i<=6;i++){//打印空格 for(int k=1;k<=6-i;k++)cout<<" ";//打印星号 for(int j=1;j<=i;j++)cout<<"*";cout<<endl; }return 0;
}
5、直角三角形4
打印图形如下
*********************
列出内外循环变量的取值变化情况
i | 空格k | 星号j |
---|---|---|
1 | 0 | 6 |
2 | 1 | 5 |
3 | 2 | 4 |
4 | 3 | 3 |
5 | 4 | 2 |
6 | 5 | 1 |
从上表中我们可以分析出内外循环变量的关系表达式如下:
k=i-1
j=7-i
故代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){for(int i=1;i<=6;i++){//打印空格 for(int k=1;k<=i-1;k++)cout<<" ";//打印星号 for(int j=1;j<=7-i;j++)cout<<"*";cout<<endl; }return 0;
}
6、等腰三角形1
打印图形如下*************************
***********
列出内外循环变量的取值变化情况
i | 空格k | 星号j |
---|---|---|
1 | 5 | 1 |
2 | 4 | 3 |
3 | 3 | 5 |
4 | 2 | 7 |
5 | 1 | 9 |
6 | 0 | 11 |
从上表中我们可以分析出内外循环变量的关系表达式如下:
k=6-i
j=2*i-1
故代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){for(int i=1;i<=6;i++){//打印空格 for(int k=1;k<=6-i;k++)cout<<" ";//打印星号 for(int j=1;j<=2*i-1;j++)cout<<"*";cout<<endl; }return 0;
}
7、等腰三角形2
打印图形如下
************************************
列出内外循环变量的取值变化情况
i | 空格k | 星号j |
---|---|---|
1 | 0 | 11 |
2 | 1 | 9 |
3 | 2 | 7 |
4 | 3 | 5 |
5 | 4 | 3 |
6 | 5 | 1 |
从上表中我们可以分析出内外循环变量的关系表达式如下:
k=i-1
j=13-2*i
故代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){for(int i=1;i<=6;i++){//打印空格 for(int k=1;k<=i-1;k++)cout<<" ";//打印星号 for(int j=1;j<=13-2*i;j++)cout<<"*";cout<<endl; }return 0;
}
8、菱形三法(三种方法都得会)
打印图形如下*************************
************************************
方法一:: 图中可以看出k和j关于第6行对称,由此列出内外循环变量的取值变化情况
i | 空格k | 星号j | abs(i-6) |
---|---|---|---|
1 | 5 | 1 | 5 |
2 | 4 | 3 | 4 |
3 | 3 | 5 | 3 |
4 | 2 | 7 | 2 |
5 | 1 | 9 | 1 |
6 | 0 | 11 | 0 |
7 | 1 | 9 | 1 |
8 | 2 | 7 | 2 |
9 | 3 | 5 | 3 |
10 | 4 | 3 | 4 |
11 | 5 | 1 | 5 |
从上表中我们可以分析出内外循环变量的关系表达式如下:
k=abs(i-6)
j=11-2*abs(i-6)
故代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){for(int i=1;i<=11;i++){//打印空格 for(int k=1;k<=abs(i-6);k++)cout<<" ";//打印星号 for(int j=1;j<=11-2*abs(i-6);j++)cout<<"*";cout<<endl; }return 0;
}
方法二:因为菱形是对称图形,因此考虑将循环遍历i也取对称值-5至5,由此列出内外循环变量的取值情况如下
i | 空格k | 星号j |
---|---|---|
-5 | 5 | 1 |
-4 | 4 | 3 |
-3 | 3 | 5 |
-2 | 2 | 7 |
-1 | 1 | 9 |
0 | 0 | 11 |
1 | 1 | 9 |
2 | 2 | 7 |
3 | 3 | 5 |
4 | 4 | 3 |
5 | 5 | 1 |
从这张表中我们更加容易分析出内外循环变量的关系如下:
k=abs(i)
j=11-2*abs(i)
最终得到代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){for(int i=-5;i<=5;i++){//打印空格 for(int k=1;k<=abs(i);k++)cout<<" ";//打印星号 for(int j=1;j<=11-2*abs(i);j++)cout<<"*";cout<<endl; }return 0;
}
方法三:曼哈顿距离:标明两个点在标准坐标系上的绝对轴距总和,例如在平面上,坐标(x1,y1)的i点与坐标(x2,y2)的j点的曼哈顿距离为:
d(i,j)=|X1-X2|+|Y1-Y2|
不难看出,菱形中所有点至中心点(6,6)的曼哈顿距离均小于等于5
标程如下:
#include<bits/stdc++.h>
using namespace std;
int main(){for(int i=1;i<=11;i++){for(int j=1;j<=11;j++)if(abs(i-6)+abs(j-6)<=5)cout<<"*";elsecout<<" "; cout<<endl; }return 0;
}
自主练习:根据“曼哈顿距离”也可打印出等腰三角形,请同学们自行尝试
9、圆形
题目描述:打印一个半径为25的星号圆形。
提示:与“曼哈顿距离”打印菱形的原理类似
标程如下:
#include<bits/stdc++.h>
using namespace std;
int main(){for(int i=1;i<=50;i++){for(int j=1;j<=50;j++)if(abs(i-25)*abs(i-25)+abs(j-25)*abs(j-25)<=25*25)cout<<"*";elsecout<<" "; cout<<endl; }return 0;
}
提示:图形打印出来大家会看到一个不那么圆滑的“椭圆”,这是因为“ * ”的输出码(字形码)并非正方形而是一个长方形点阵,而且行与行之间也有一定的间隙。
10、自主练习
打印图形如下
************************************************************
***********
方法:参照本文之前所讲述的,首先列出内外循环变量的取值变化情况,再从表中分析出循环变量之间的关系表达式,算法设计完成后再编写代码。
循环结构(打印图形专项练习)相关推荐
- C语言 循环结构打印*号三角形
编写程序,使用循环结构语句打印输出如下图形 **************** #include<stdio.h> int main() {int i,j;for(i=0; i<4; ...
- c语言4位数求各位数的立方和,功能:使用循环结构求一个四位数的各位数字的立方和...
vb 使用循环结构,打印下列图案 有了,可能不是最好的算法,希望对你有帮助!DIMm,nASINTEGERDIMaASSTRINGDIMbASSTRINGform=1to4a="" ...
- 打印图形(循环嵌套专项练习)
本文的设计意图:<打印图形>专项练习的编写是为了帮助学生进一步理解掌握循环嵌套的设计编写,重点是学会分析循环变量之间的关系 提示:初学者在学习编程时最大的坏习惯就是不用草稿纸,眼高手低,拿 ...
- 利用for循环打印图形
利用for循环打印图形 利用for循环打印图形时,我们需要记住外层循环列,内层循环行,然后们需要做的不外乎是找到它们循环的规律罢了. 打印矩形图形 打印: ***** ***** ***** **** ...
- python用双重循环输出菱形_Python 使用双重循环打印图形菱形操作
如下所示: a = int(input("请输入菱形行数:")) m = a #空格 d = a #倒三角 for i in range(1, a + 1): # 先打印正三角 p ...
- c语言编程星阵直角三角形,C语言星阵图形使用FOR,WHILE,DO-WHILE 三种循环结构实现.doc...
* * * * * * * * * * * * * * * * * * * * * * * * * 以上星阵图形使用C语言FOR,WHILE,DO-WHILE 三种循环结构实现. [程序星阵1]for ...
- python中for循环打印菱形_Python 使用双重循环打印图形菱形操作
如下所示: a = int(input("请输入菱形行数:")) m = a #空格 d = a #倒三角 for i in range(1, a + 1): # 先打印正三角 p ...
- python用while打印菱形_Python 使用双重循环打印图形菱形操作
如下所示: a = int(input("请输入菱形行数:")) m = a #空格 d = a #倒三角 for i in range(1, a + 1): # 先打印正三角 p ...
- ios入门攻略 07篇 C语言基础【循环结构之for语句,打印九九乘法表】
for循环 语法: for(表达式1;表达式2;表达式3){ 循环体; } 语义:1.先执行表达式1,跳转到2 2.判断表达式2的结果是否为真,如果为真,跳转到3,否则跳转到5 3.执行循环体,执行完 ...
最新文章
- [转帖][实用]Linux 释放内存方法
- Week04-面向对象设计与继承
- Java洛谷P5461 赦免战俘讲解
- python是一种跨平台开源免费的高级动态编程语言吗_第1章 管中窥豹:Python概述免费阅读_Python程序设计开发宝典免费全文_百度阅读...
- cpu飙升 死循环_java排查一个线上死循环cpu暴涨的过程分析
- oracle imp 1403,Oracle中用exp/imp命令参数详解【转】
- PHP包含文件函数include、include_once、require、require_once区别
- 写给自己,2020的年终总结
- 自入行C++程序设计以来
- Linux:文件格式化与相关处理及sed工具
- 2020年净利润腰斩,麦格纳要转型“造车”?
- iOs LightBlue与cc2540 BLE开发板之间的通信实验 [原创, 多图]
- 在YUI3下打印Panel内容
- html超链接图标图片,HTML-标签:图片 超链接
- 雷达原理---时频分析--1.基本概念
- Endnote导出目标期刊的参考文献的格式
- 普中科技51单片机直流电机控制风扇调速
- 微信公众号前端40163解决办法
- 实验二 使用UML进行对ATM系统建模
- alios下载_AliOS Studio(阿里编程工具)
热门文章
- Java学习笔记,面向猴子记笔记2021/5/29更新
- 禅道发信配置(网易企业邮箱)
- 记录Flutter安装使用过程
- OpenWrt实现无线客户端之间的隔离
- PdfSharp -- 根据PDF模板导出PDF
- 拼多多 标题 html,拼多多的创意图和创意标题怎么测试?为什么要测试?怎样测试呢?...
- python爬虫爬取今日头条_爬取今日头条头条号文章数据
- 掌门教育市值再创新低:集体诉讼风险未解,近万名教师“无证”
- OpenCV + CPP 系列(九)颜色空间
- 【金猿产品展】北森一体化人才管理云平台:让中国企业拥有世界领先的人才管理能力...