用循环打印出多种三角形

打印一排*,很简单,打印下图

也很简单,代码如下:

 1 public class Work10_3 {
 2
 3     /**
 4      * @param args
 5      */
 6     public static void main(String[] args) {
 7         // TODO Auto-generated method stub
 8         int a=0;
 9         while(a<4){
10             int i=0;
11             while(i<10){
12                 System.out.print("*");//打印*不换行
13                 i++;
14             }
15             System.out.println("");//换行
16             a++;
17         }
18     }
19 }

可是昨天想了好久都没想到怎样做到下面图片的样子,今天突然就有了灵感

代码很简单,就是昨天想破了脑袋都想不出来,好笨啊我

第一行打印一个*,第二行行打印两个*,大三行打印三个*,这样分析就找到规律了,定义一个a=1,外层循环实现打印几行,定义一个i=0,

实现内层循环打印*,当a=1时是第一行,想让内层打印一个*,那么内层循环条件是i<1,这样就打印一个*,当a=2时,是第二行,想让内

层打印两个*,那么内层就是i<2,这样又不难看出i<a,于是代码如下:

 1 public class Work10 {
 2     /**
 3      * @param args
 4      */
 5     public static void main(String[] args) {
 6         // TODO Auto-generated method stub
 7         int a=1;
 8         while(a<25){
 9             int i=0;
10             while(i<a){
11                 System.out.print("*");//打印*不换行
12                 i++;
13             }
14             System.out.println("");//换行
15             a++;
16         }
17     }
18 }

很简单的代码,还可以改进一下。

有了一个灵感之后,就不能浪费,要充分锻炼自己的才能,

于是我又打印了一条斜线

这是往右斜着的

让内层打印空格(和上面内层打印*一样),外层打印一个*,和刚才外层有些微小区别

代码如下:

 1 public class Work10_1 {
 2
 3     /**
 4      * @param args
 5      */
 6     public static void main(String[] args) {
 7         // TODO Auto-generated method stub
 8         int a=1;
 9         while(a<25){
10             int i=0;
11             while(i<a){
12                 System.out.print(" ");//打印空格不换行
13                 i++;
14             }
15             System.out.print("*\n");//打印*后换行
16             a++;
17         }
18     }
19
20 }

这是往左斜着的,内层我定义i=25,a=1时打印24个空格,然后打印*换行,当a=2时,打印23个空格,然后打印*换行。。。。。代码如下:

 1 public class Work10_2 {
 2
 3     /**
 4      * @param args
 5      */
 6     public static void main(String[] args) {
 7         // TODO Auto-generated method stub
 8         int a=1;
 9         while(a<25){
10             int i=25;
11             while(i>a){
12                 System.out.print(" ");//打印空格不换行
13                 i--;
14             }
15             System.out.print("*\n");//打印*后换行
16             a++;
17         }
18     }
19
20 }

只有做不到的,没有想不到的,看下图

和上面一样的方法,一个内层while打印空格,另一个打印*,

这个也很简单,要是之前的我肯定不会这么说,现在知道怎么做了,就感觉简单了,

代码如下:

 1 public class Work10_4 {
 2
 3     /**
 4      * @param args
 5      */
 6     public static void main(String[] args) {
 7         // TODO Auto-generated method stub
 8         int a=1;
 9         while(a<25){
10             int i=25;
11             while(i>a){
12                 System.out.print(" ");//打印空格不换行
13                 i--;
14             }
15             int b=0;
16             while(b<a){
17                 System.out.print("*");//打印*不换行
18                 b++;
19             }
20             System.out.println("");//换行
21             a++;
22         }
23     }
24
25 }

收回刚才的话啊 下面这个我没想到,就是改了下代码就变这样了,其实我想做一个等腰三角形的

代码如下:

 1 public class Work10_5 {
 2     public static void main(String[] args) {
 3         // TODO Auto-generated method stub
 4         int a=0;
 5         while(a<25){
 6             int i=25;
 7             while(i>a){
 8                 System.out.print(" ");//打印空格不换行
 9                 i--;
10             }
11             int b=0;
12             while(b<a){
13                 System.out.print("*");
14                 b+=2;//这里和上面的不一样
15             }
16             System.out.println("");
17             a++;
18         }
19     }
20 }

这个等腰三角形不好做啊 试了几次没有做出来,我要在定义一个变量试一试…

原来真是需要添加一个变量,添加以后瞬间就做出来了

分析一下,第一行先打印好多空格,然后一个*,第二行空格减少一个,*增加两个,因为增加的速度不一样,所以需要两个变量分别控制两个内层循环,空格的打印和之前的都一样, 只是打印*的速度要增加,代码如下:

 1         // TODO Auto-generated method stub
 2         int a=1;
 3         int c=1;
 4         while(a<25){
 5             int i=25;
 6             while(i>a){
 7                 System.out.print(" ");
 8                 i--;
 9             }
10             int b=0;
11             while(b<c){
12                 System.out.print("*");
13                 b++;
14             }
15             System.out.println("");
16             a++;
17             c+=2;
18         }
19     

然后我又想打印一个倒三角,然后很轻松就打印出来了

这个就不多说了,代码如下:

 1 public class Work10_6 {
 2
 3     /**
 4      * @param args
 5      */
 6     public static void main(String[] args) {
 7         // TODO Auto-generated method stub
 8         int a=1;
 9         int c=1;
10         while(a<25){
11             int i=25;
12             while(i>a){
13                 System.out.print(" ");
14                 i--;
15             }
16             int b=0;
17             while(b<c){
18                 System.out.print("*");
19                 b++;
20             }
21             System.out.println("");
22             a++;
23             c+=2;
24         }
25     }
26
27 }

还能把这写三角形组合起来,有多种组合方式,下面提供一种做参考:

代码如下:

 1 public class Work10_13 {
 2
 3     /**
 4      * @param args
 5      */
 6     public static void main(String[] args) {
 7         // TODO Auto-generated method stub
 8         int a=1;
 9         int c=1;
10         while(a<20){
11             int i=20;
12             while(i>a){
13                 System.out.print(" ");
14                 i--;
15             }
16             int b=0;
17             while(b<c){
18                 System.out.print("*");
19                 b++;
20             }
21             System.out.println("");
22             a++;
23             c+=2;
24         }
25         int d=0;
26         int e=39;
27         while(d<20){
28             int i=0;
29             while(i<d){
30                 System.out.print(" ");//打印空格不换行
31                 i++;
32             }
33             int b=0;
34             while(b<e){
35                 System.out.print("*");
36                 b++;
37             }
38             System.out.println("");
39             d++;
40             e-=2;
41         }
42     }
43 }

------------------------------------------------------------------------------------------------------------------------------------------------------------

转载请注明出处!

时间: 2025-01-07 18:01:44

用循环打印出多种三角形的相关文章

如何用一层for循环打印出一个二维数组

常规通过两层for循环可以比较轻松打印二维数组. 代码如下: #include <stdio.h> #define ROWS 3 #define COLS 3 int main() { int a[ROWS][COLS]={1,2,3,4,5,6,7,8,9}; for(int i=0;i<ROWS;i++) { for(int j=0;j<COLS;j++) printf("%d ",a[i][j]); printf("\n"); } re

使用for循环打印矩形和三角形、菱形、空心菱形

打印矩形 **************************************************************************************************** public class Demo3_712 { public static void main(String args[]){ for(int i=1;i<=10;i++){ //控制行 for(int j=1;j<=10;j++){ //控制列 System.out.print(&

python_字典元素的循环打印

#定义一个字典dic = {'name':'wusan','pwd':27,'sex':'女'} #循环打印出默认的字典元素,实际为key值for item in dic:    print(item) #循环打印出字典中的key值for item in dic.keys():    print(item) #循环打印出字典中的value值     for item in dic.values():    print(item) #循环打印出字典中的键值对for item in dic.item

JavaScript-页面打印正方形,各种三角形与菱形

一.   正方形 a)   在第一个for循环中控制,一共输出几行.依靠的是,每次输出一行,就会在后面输出一个换行符<br>; b)   在第二个for循环中控制每行输出几个五角星.这样的话,就可以每一行中打印10个五角星. c)   当i=0;时,进入第一个循环,然后给j赋值为0,就会进入第二个循环,开始打印.打印10 个之后,结束第二个for循环,打印一个换行符.此时第一行的五角星就打印完毕了. d)   以此类推,打印10行.因为每行打印10个,进而形成了正方形. 注:为什么小于10,反

Python 中使用 for、while 循环打印杨辉三角练习(列表索引练习)。

Python中使用for while循环打印杨辉三角练习(列表索引练习). 杨辉三角是一个由数字排列成的三角形数表,一般形式如下: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 ....................... 杨辉三角最本质的特征是,它的两条斜边都是由数字1组成的,而其余的数则是等于它肩上的两个数之和. 方法一: __author__ = 'Brad' n = int(input('请输入你想打印杨辉三角

两种思路打印出字母组成的对称金字塔

1. 编程环境:ubuntu下使用vi编辑器编写的程序,通过gcc编译. 2. 实现现象:在终端屏幕打印出由指定的A-Z字母,组成的对称金字塔.仅提供打印出大写字母图形. 3. C代码 #if 1 /*思路:先输出每行空格,再输出每行的升序降序字母*/ #include <stdio.h> int main(void) { int a,b,c; char top; printf("请输入A---Z\n"); scanf("%c",&top); i

022给定一个字符串类型(string)表示的小数,打印出它的二进制表示(keep it up)

给定一个字符串类型(string)表示的小数,打印出它的二进制表示. 这个题注意字符串的合法性. 不过下面的代码没有处理那种无限循环的小数, 当出现无限循环小数时,while(other>0)可能永久为true 代码: #include <iostream> #include <string> std::string to_binary_string(const std::string& vNumStr) { std::string::size_type Pos =

循环打印菱形字母

要求:打印出一个菱形的字母,从字母A开始. 代码: package com.huawei.mianshi; public class Demo2 { private static int LINE = 4; public static void main(String[] args) { run(); } private static void run() { //从大写字母A开始 char A = 'A'; //循环的次数i=1代表第一行 for (int i = 1; i <= LINE;

打印出大小为n的数组(可能有重复元素)里所有可能的组合

Input: {1, 2, 3, 4}, r=2 Output: {1, 2}, {1, 3}, {1, 4}, {2, 3}, {2, 4} and {3, 4}. package recursion; import java.util.ArrayList; import java.util.Collections; public class Print_all_possible_combinations_of_r_elements_in_a_given_array_of_size_n { /