首页 > 试题广场 >

带空格直角三角形图案

[编程题]带空格直角三角形图案
  • 热度指数:43674 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的带空格直角三角形图案。


输入描述:

多组输入,一个整数(2~20),表示直角三角形直角边的长度,即“*”的数量,也表示输出行数。



输出描述:

针对每行输入,输出用“*”组成的对应长度的直角三角形,每个“*”后面有一个空格。

示例1

输入

5

输出

        * 
      * * 
    * * * 
  * * * * 
* * * * *
示例2

输入

4

输出

      * 
    * * 
  * * * 
* * * *
#include<stdio.h>
int main()
{
    int n;
    while( scanf("%d",&n) != EOF )
    {
        for( int i = 0 ; i < n ; i++ )
        {
            for( int j = 2 * i ; j < 2 * ( n - 1 ) ; j++ ) printf(" ");
            for( int m = i ; m >= 0 ; m--) printf("* ");
            printf("\n");
        }
    }
    return 0;
}

发表于 2022-06-16 12:48:33 回复(0)
#include<iostream>
using namespace std;
int main(){
    int n;
    while(cin>>n){
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                if(i+j>n-2)
                    cout<<"* ";
                else
                    cout<<"  ";
            }
            cout<<"\n";
        }
    }
}
发表于 2021-12-27 11:48:06 回复(0)
#include<stdio.h>
int main()
{
    int n,i,j;
    while(~scanf("%d\n",&n))
    {
        for(i=0;i<n;i++)
        {
            for(j=i+1;j<n;j++)
            {
                printf("  ");
            }
            for(j=-1;j<i;j++)
            {
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}
发表于 2021-07-19 22:37:10 回复(0)
#include<stdio.h>
int main(){
    int n,i,j;
    while(~scanf("%d",&n)){
        for(i=0;i<n;i++){
            for(j=0;j<n;j++){
               if(j<n-i-1) printf("  ");
               else printf("* ");
            }printf("\n");
        }
    }
}

发表于 2021-06-02 17:36:34 回复(2)
import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()) {
            int num = sc.nextInt();
            int count = 1;
            for(int i=num;i>0;i--) {
                for(int j = i-1;j>0;j--){
                    System.out.print("  ");
                }
                for(int k = 0;k < count;k++ ) {
                    System.out.print("* ");
                }
                System.out.println();
                count++;
            }
        }
    }
}

发表于 2020-12-30 20:27:23 回复(0)
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int n = sc.nextInt();
            for (int i = 1; i <=n; i++) {
                System.out.println(String.join("", Collections.nCopies(n-i, "  "))+
                        String.join("", Collections.nCopies(i, "* ")));
            }
        }
    }
}

发表于 2020-04-22 09:55:57 回复(0)
#include <stdio.h>
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF){
        int i,j;
        for(i=0;i<n;i++){
            for(j=0;j<n;j++){
                if(i+j>=n-1) printf("* ");
                else printf("  ");
            }
            printf("\n");
        }
    }
}

发表于 2020-04-10 22:54:08 回复(2)
#include<stdio.h>
int main(){
    int num = 0;
    while(scanf("%d",&num)!=EOF){
        getchar();
        for(int i = 1;i <= num; i++){
            for(int j = num - i;j > 0;j--){
                printf("  ");
            }
            for(int k = 0;k < i; k++){
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}

发表于 2022-07-27 05:59:32 回复(0)
#include<stdio.h>
int main()
{
    int n=0;
    int i=0;
    int j=0;
    int k=0;
    char ch1='*';
    char ch2=' ';
    while(~scanf("%d",&n))
    {
        for(i=1;i<=n;i++)
        {
            for(j=0;j<n-i;j++)
            {
                printf("%c ",ch2);
            }
            for(k=0;k<i;k++)
            {
                printf("%c ",ch1);
            }
            printf("\n");
        }
        
        
    }
    
    return 0;
}

发表于 2022-05-18 18:37:08 回复(0)
#include<stdio.h>
int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                if(j<n-i-1){
                    printf("  ");
                }
                else{
                    printf("* ");
                }
            }
            printf("\n");
        }
    }
}

发表于 2022-02-24 21:32:41 回复(0)
#include<stdio.h>


int main()
{
    int n;
    while(~scanf("%d",&n)){
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                if(i+j<n-1)
                    printf("  ");
                else
                    printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}

发表于 2021-08-21 18:00:57 回复(0)
#include <iostream>
using namespace std;

int main()
{
    int n;
    while (cin >> n)
    {
        for (int i = 1; i <= n; ++i)
        {
            for (int j = n - i; j > 0; --j)
                cout << "  ";
            for (int k = i; k > 0; --k)
                cout << "* ";
            cout << endl;
        }
    }
    return 0;
}
发表于 2020-03-22 21:56:04 回复(0)
/*思路 : 仔细观察题目答案的输出可以发现 
每一次打印都是两个空格加上一个空格一个星号
先打印一行的内容 j=0;j<n-1-i;j++ 这是控制打印两个空格的代码
i是0的时候等于没减 i是1的时候减去1 i是2的时候减去2 i是3的时候减去3
(减去空格的个数)
j=0;j<=i;j++  这是控制星号的代码
i是从0进入来的 当i等于1的时候 打印一次 * i等于2的时候打印两次 * 
以此类推*/

# include <stdio.h>
int main()

{
    int n = 0;
    while(scanf("%d",&n)!=EOF)
    {
        //控制行数
        int i = 0;
        for(i = 0; i<n;i++)

        {
        //控制每行的两个空格 + 一个空格和一颗*
        int j = 0;
        for(j = 0; j<n-1-i;j++)
            {   
                printf("  ");
            }
        for(j = 0; j<=i; j++)
            {
                printf("* ");
            }
        printf("\n");
        }
        
    }
    return 0;
}

发表于 2024-06-01 16:50:15 回复(0)
#include <stdio.h>

int main() {
  int a;
  while(~scanf("%d",&a))
  {
  for(int i=1;i<=a;i++)//打印每一行;
  {
    for(int j=1;j<=a-i;j++)//打印每行空格;
    {
       printf("  ");//每次循环打印两个空格;
    }
     for(int m=1;m<=i;m++)//打印每行*号;
        {
            printf("* ");
        }
        printf("\n");//每行打印完后进行换行;
  }
    }

    return 0;
 
}

编辑于 2024-02-22 13:05:19 回复(0)
#include <stdio.h>

int main() {
    int n = 0;
    while (scanf("%d", &n) != EOF) {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n - 1 - i; j++) {
                printf("  ");
            }
            for (int j = 0; j <= i; j++) {
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}

编辑于 2024-01-08 19:29:38 回复(1)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
    int n = 0;
    while(scanf("%d", &n)!=-1)
    for (int i = 1; i <= n; i++)
    {
            int c = n - i;
            int d = i;
            int j = 0;
            for (j = 0; j < n - i; j++)
            {
                if (c)
                {
                    printf("  ");
                    c--;
                }
            }
            while (d)
            {
                printf("%s ", "*");
                d--;
            }
        printf("\n");
    }
    return 0;
}
发表于 2023-11-24 12:55:18 回复(0)
#include <stdio.h>
int main() 
{
    int n = 0;
    while(scanf("%d",&n) != EOF)
    {
        for(int i = 1; i <= n; i++)
        {
           for(int j = n -i; j > 0; j--)//空格数是逐行递减且为总行数-第几行数
           {
               printf("  "); //两个空格,很重要,否则格式写不对
           }
             for(int k = 1; k <= i;k++) // *的数量是跟行数对应的
           {
            printf("* ");
            
           }
         
           printf("\n");
        }
    }
    return 0;
}

发表于 2023-07-03 15:27:19 回复(0)
//如何做这道题,将行数,空格数,和星星数联系在一起,你会惊奇地发现,问题就解决了

#include <iostream>
using namespace std;

int main() {
    int n;
    while(cin>>n) {// 输入行数
for (int i=0;i<n;i++) {  //这是行数
    for (int j=n-1;j>i;j--) {  //第一点,先输出的是空格,找出输出空格和行数之间的关系,这一点很重要,前两个for循环完成对空格的输出
        cout<<"  ";
    }
    for (int k=0;k<=i;k++) {//这个for循环是输出星星,星星的循环和行数的循环,可以讲是一模一样的。
        cout<<"* ";
    }
//换行是在一次循环结束后使用的,所以加在这
    cout<<endl;
}
        }
    return 0;
}
发表于 2021-12-14 23:24:21 回复(0)
while True:
    try:
        n = int(input())
        for i in range(1,n+1):
            print('  '*(n-i)+'* '*i)
    except:
        break
这一题需要观察前面空格的规律;
发表于 2020-10-11 14:45:49 回复(0)
#include <stdio.h>

int main()
{
    int i, j, n;
    while(~scanf("%d", &n))
    {
        for(i = 0; i < n; i++)
        {
            for(j = n - 1; j > i; j--)
                printf("  ");
            for(j = 0; j <= i; j++)
                printf("* ");
            putchar(10);
        }
    }
}

发表于 2020-04-06 16:31:26 回复(1)