黑马程序员——for循环的使用与理解
Console.WriteLine("请输入要打印菱形的行数(不能是偶数)");---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
//保存用户输入的数字
int num=int.Parse(Console.ReadLine());
//判断用户输入的是否为奇数
while(num%2==0)
{
Console.WriteLine("只能输入奇数,请从新输入");
num = int.Parse(Console.ReadLine());
}
//打印菱形的上半部
for (int i=1; i<=(num+1)/2;i++ )
{
for (int k = i; k <= (num - 1) / 2; k++)
{
Console.Write(" ");
}
for (int j=1;j<=2*i-1 ;j++ )
{
Console.Write("*");
}
Console.WriteLine();
}
//打印菱形的下半部分
for (int i=1;i<=(num-1)/2 ;i++ )
{
for (int k=1;k<=i ;k++ )
{
Console.Write(" ");
}
for (int j = 1; j <= num-2*i;j++ )
{
Console.Write("*");
}
Console.WriteLine();
}
Console.ReadKey();
使用for双重循环打印菱形。首先让用户输入一个打印菱形的行数,只有在奇数的情况下才能构成菱形,所以提示用户只能输入奇数。
比方用户输入的是9,num=9;那么我们需要打印出9行并且菱形的最长(*)也是9;
根据用户输入的数字来进行分析,
旁边自己打出来的图,我们从图中来找出它的循环规律,菱形是由两个等腰三角形组成,一正,一倒
从总行数来看一共是9行,从第五行往上面看(*)号是一个等腰三角形,从第六行向下看是(*)是个倒立等腰三角形 第一行 ####*
那么我们分两部把它打印出来,先看上面五行,打印五行那么外层循环5次, 第二行 ###***
外层次数 #次数 *次数 第三行 ##*****
外层循环第1次 内层打印(#)循环4次 内层打印(*)循环1次 1 4 1 第四行 #*******
外层循环第2次 内层打印(#)循环3次 内层打印(*)循环3次 2 3 3 第五行 *********
外层循环第3次 内层打印(#)循环2次 内层打印(*)循环5次 3 2 5 第六行 #*******
外层循环第4次 内层打印(#)循环1次 内层打印(*)循环7次 4 1 7 第七行 ##*****
外层循环第5次 内层打印(#)循环0次 内层打印(*)循环9次 5 0 9 第八行 ###***
列出了循环规律,从左边的数字来找出它的循环条件,先看外层循环条件,通常用for循环5次循环条件这样写 第九行 ####*
(int i=1;i<=5;i++),但用户输入的是num=9;找出5和9之间的关系,5=(9+1)/2,把表达式内的5替换
可以得到外层的条件表达式(int i=1;i<(num+1)/2),再来看内曾循环打印(#) 当i=1时 #循环4次
当i=2时 #循环3次,从数字找出的循环条件(int k=i;k<=4;k++),同样找出4和9之间的关系,4=(9-1)/2,
将其替换,得出条件表达式(int k=i;k<=(num-1)/2;k++),循环体内打印出(#)
内层循环打印(*) 当i=1时 *循环1次 当i=2时 *循环3次 当i=3时 *循环5次......
可以看出i和j的关系,j=2*i-1;循环条件表达式(int j=1;j<=2*i-1;j++),循环体内打印*,在(*)for循环外部(})下面加上一个换行,上半部打印完成
下半部是打印一个到三角形
外层次数 #次数 *次数
外层循环第1次 内层打印(#)循环1次 内层打印(*)循环7次 1 1 7
外层循环第2次 内层打印(#)循环2次 内层打印(*)循环5次 2 2 5
外层循环第3次 内层打印(#)循环3次 内层打印(*)循环3次 3 3 3
外层循环第4次 内层打印(#)循环4次 内层打印(*)循环1次 4 4 1
列出规律,同样从左边数字找出循环条件,外层循环表达式(int i=1;i<=4;i++),找出4和9之间的关系,4=(9-1)/2,在表达式中替换(int i=1;i<=(num-1)/2;i++)
内层#的表达式(int k=1;k<=i;k++),循环体打印出(#)
内层循环* j和i的关系 j=num-2*i 内层循环*的条件表达式(int j=1;j<=num-2*i),循环体打印出(*),在(*)for循环外部(})下面加上一个换行,下半部打印完成
总结:
(除foreach遍历循环外)所有的循环都必须有着一定的规律,while,do{}while,for循环都是找寻到它的规律后,利用规律编写循环条件,编写循环条件是最为重要的,
最后在来填写循环的代码;有循环就必须要有跳出循环语句或跳出循环条件,不然会成为死循环。
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
详细请查看:<a href="http://edu.csdn.net" target="blank">http://edu.csdn.net</a>
黑马程序员——for循环的使用与理解的更多相关文章
- 黑马程序员-循环引用问题和weak
使用weak reference(弱引用)来避免retain cycle 对一个对象发送retain消息会创建对这个对象的强引用(strong reference).如果两个对象都有一个强引用指向对方 ...
- 黑马程序员—C语言的函数、数组、字符串
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.函数 定义:函数是代码复用的一种机制. 函数的基本语法: 返回类型 函数名 ( 参数类型 参 ...
- 黑马程序员:轻松精通Java学习路线连载1-基础篇!
编程语言Java,已经21岁了.从1995年诞生以来,就一直活跃于企业中,名企应用天猫,百度,知乎......都是Java语言编写,就连现在使用广泛的XMind也是Java编写的.Java应用的广泛已 ...
- 黑马程序员——【Java高新技术】——代理
---------- android培训.java培训.期待与您交流! ---------- 一.“代理概述”及“AOP概念” (一)代理概述 1.问题:要为已存在的多个具有相同接口的目标类的各个方法 ...
- 黑马程序员+SQL基础(上)
黑马程序员+SQL基础 ---------------<a href="http://edu.csdn.net"target="blank">ASP ...
- 黑马程序员+Winform基础(上)
黑马程序员+Winform基础 ---------------<a href="http://edu.csdn.net"target="blank"> ...
- 黑马程序员:Java基础总结----泛型(高级)
黑马程序员:Java基础总结 泛型(高级) ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 泛型(高级) 泛型是提供给javac编译器使用的,可以限定集合中的输入类型 ...
- 黑马程序员:Java基础总结----类加载器
黑马程序员:Java基础总结 类加载器 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 类加载器 Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个 ...
- 黑马程序员:Java基础总结----静态代理模式&动态代理
黑马程序员:Java基础总结 静态代理模式&动态代理 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 静态代理模式 public class Ts { ...
随机推荐
- 后一个div无法遮挡住前一个有img的div
这个标题实在是我无奈之下才取出来的,毕竟我文采有限~ 今天我遇到的一个eggpain的问题: 前提:当页面上有两个没有background的div,大小一样,绝对定位在同一个地方(让第二个遮挡住第一个 ...
- (转)这个API很“迷人”——新的Fetch API
原文:https://hacks.mozilla.org/2015/03/this-api-is-so-fetching 原标题是This API is So Fetching,Fetching也可以 ...
- mysql之导入与导出
SELECT INTO…OUTFILE语句把表数据导出到一个文本文件中,并用LOAD DATA …INFILE语句恢复数据.但是这种方法只能导出或导入数据的内容,不包括表的结构,如果表的结构文件损坏, ...
- Jmeter外部函数引用
Jmeter外部函数引用 1.Beanshell引用Jmeter变量 添加用户自定义变量,输入变量名称和变量值,添加Debug sampler,用于输出初始变量值.
- 《深入理解Nginx》阅读与实践(三):使用upstream和subrequest访问第三方服务
本文是对陶辉<深入理解Nginx>第5章内容的梳理以及实现,代码和注释基本出自此书. 一.upstream:以向nginx服务器的请求转化为向google服务器的搜索请求为例 (一)模块框 ...
- js 模块开发之一(模块开发价值)
首先引用我们的今天的主角 ----<前端模块化开发的价值> 1,前端开发最常见的两个问题 ---命名冲突和文件依赖 2,对于命名冲突的基本解决办法就是学习其他语言的习惯,添加命名空间 va ...
- 循序渐进Python3(二) -- 数据类型
数据类型 一.数字(int) Python可以处理任意大小的正负整数,但是实际中跟我们计算机的内存有关,在32位机器上,整数的位数为32位,取值范围为 -2**31-2**31-1,在64位系统上,整 ...
- DrawingControl控件在Add Page时报故障的问题
Visio二次开发用到了Drawing Control控件.在控件上添加新页面时,visual编译器报内存保护故障“尝试读取或写入受保护的内存.这通常指示其他内存已损坏.”,这个问题困扰了我很久,最后 ...
- 图表Echarts的使用
Echarts是一个纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表. 本文内容为讲解使用ECharts3.x版本绘制中国地图统计信息. 基本步骤: 1.下载ec ...
- andorid Activity和Service音乐播放器
AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xm ...