首页 > 试题广场 >

X形图案

[编程题]X形图案
  • 热度指数:50062 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。

输入描述:
多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。


输出描述:

针对每行输入,输出用“*”组成的X形图案。

示例1

输入

5

输出

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

输入

6

输出

*    *
 *  * 
  **  
  **  
 *  * 
*    *
#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
    int n = 0;
    int i = 0;
    int j = 0;

    while (scanf("%d", &n) != EOF)
    {
        for (i = 0; i < n; i++)
        {
            for (j = 0; j < n; j++)
            {
                //正反对角线为*,其余为空格
                if (i == j || i + j == n - 1)
                {
                    printf("*");
                }
                else
                {
                    printf(" ");
                }
            }
            printf("\n");
        }
    }

    return 0;
}

编辑于 2024-03-19 12:53:19 回复(0)
#include <stdio.h>

int main() {
    int n;
    while(scanf("%d", &n) != EOF){
        for(int y=1; y<=n; y++){
            for(int x=1; x<=n; x++){
                if(x==y){
                    printf("*");
                }else if(x==-y+n+1){
                    printf("*");
                }else{
                    printf(" ");
                }
            }
            printf("\n");
        }
    }
    return 0;
}
发表于 2024-01-29 20:17:07 回复(0)
#include<stdio.h>
int main()
{
    int row = 0;
    while(scanf("%d",&row)!=EOF)
     {
            for (int i = 0; i < row; i++)
        {
                for (int j = 0; j < row ; j++)
                {
                    if (j == i || j + i == row-1)
                        {
                            printf("*");
                        }
                    else
                        {
                            printf(" ");
                        }
                }
            printf("\n");
        }
    }
	
}

编辑于 2024-01-24 11:58:47 回复(0)
int main()
{
	int a = 0;
	printf("请输入你要打印x的值:");
	scanf("%d",&a);
	for (int i = 0; i < a; i++)//行
	{
		//列
		for (int j = 0; j < a; j++)
		{
			if (i + j == a - 1 || i == j)
			{
				printf("*");
			}
			else
			{
				printf(" ");
			}
		}
		printf("\n");
	}
	return 0;
}

发表于 2023-12-12 10:54:22 回复(0)
#include <stdio.h>

int main()
{
    int input = 0;
    while (scanf("%d", &input) != EOF)
    {
        for(int i=0;i<input;i++)//i为行
        {
            for(int j=0;j<input;j++)//j为列
            {
                char a = ' ';
               if(i==j || i+j==input-1)
               {
                a='*';
               }
               printf("%c",a);

            }
            printf("\n");
        }

    }
    return 0;
}
编辑于 2023-12-02 14:59:41 回复(0)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
    int n = 0;
    while (scanf("%d", &n) != -1)
    {
        for (int i = 0; i < n / 2; i++)
        {
            int a = i;
            while (a)
            {
                printf(" ");
                a--;
            }
            printf("*");
            int c = n - 2 - 2 * i;
            while (c > 0)
            {
                printf(" ");
                c--;
            }
            printf("*\n");
        }
        if (n % 2 == 1)
        {
            int o = n / 2;
            while (o)
            {
                printf(" ");
                o--;
            }
            printf("*\n");
        }
        for (int i = n / 2; i > 0; i--)
        {
            int a = i - 1;
            while (a > 0)
            {
                printf(" ");
                a--;
            }
            printf("*");
            int c = n - 2 - 2 * (i - 1);
            while (c > 0)
            {
                printf(" ");
                c--;
            }
            printf("*\n");
        }
    }
    return 0;
}
发表于 2023-12-02 13:34:19 回复(0)
#include <stdio.h>
int main()
{
    int n;
    while(scanf("%d",&n) !=EOF)
    {
        int i;//控制行
        for(i=1;i<=n;i++)
        {
            int j;//控制列
            for(j=1;j<=n;j++)
            {
                if(i == j||j == n+1-i)//*所在的位置,只有这两种情况
                {
                    printf("*");
                }
                else {
                printf(" ");//中间补空格
                }
            }
            printf("\n");//打印完一行之后进行换行
        }
    }
    return 0;
}

发表于 2023-11-05 09:42:31 回复(0)
#include <stdio.h>

int main() {
    int n=0;
    while(~scanf("%d",&n))
    {
        for(int i=0;i<n;i++)
        {
            for(int j =0;j<n;j++)
            {
                if((i==j)||(i+j==n-1))
                printf("*");
                else
                printf(" ");
               
            }
            printf("\n");
        }
    }
    return 0;
}
发表于 2023-09-03 14:46:47 回复(0)
#include<stdio.h>
int main() {

    int a = 0;
    while (scanf("%d", &a) == 1) {
        int left = 1;
        int right = a;
        for (int i = 1; i <= a; i++) {

            for (int j = 1; j <= a; j++) {
                if (j == left || j == right)
                    printf("*");
                else printf(" ");
            }
            printf("\n");
            left++;
            right--;
        }
    }
    return 0;
}

发表于 2023-06-17 22:59:39 回复(0)
#include <stdio.h>

int main()
{
    int n = 0;
    int i = 0;
    int j = 0;
    int k = 0;

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

    return 0;
}
发表于 2023-06-01 18:17:52 回复(0)
#include <stdio.h>

int main() {
    int a;
    while (scanf("%d", &a) != EOF) {
        for (int i = 0; i < a; i++) {
            for (int j = 0; j < a; j++) {
                if((i == j) || (j == a - i - 1))
                {
                    printf("*");
                }else{
                    printf(" ");
                }
            }
            printf("\n");
        }
    }
    return 0;
}
发表于 2023-03-02 09:26:11 回复(1)
挑战最长最笨方法。
#include <stdio.h>

int main() {
    int n;
    while (scanf("%d", &n) != EOF) 
    {
        int num;
        if (n % 2 == 0) 
        {
            num = (n - 2) / 2;
            for (int i = 1; i <= num; i++) 
            {
                for (int j = 1; j <= i - 1; j++)    //输出首部i-1个空格
                { 
                    printf(" ");
                }
                printf("*");
                for (int k = 1; k <=n - 2-2*(i-1);k++)     //输出中间n-2个空格
                { 
                    printf(" ");
                }
                printf("*");
                for (int j = 1; j <= i - 1; j++)       //输出尾部i-1个空格
                {
                    printf(" ");
                }
                printf("\n");
            }

            for(int count =1;count<=2;count++)
            {
                for(int l=1;l<=num;l++)
            {
                printf(" ");
            }
                printf("**");
                for(int l=1;l<=num;l++)
            {
                printf(" ");
            }
                printf("\n");
            }


            for (int i = 1; i <= num; i++) {
                for (int j = 1; j <= num - i; j++)     //第i行首部输出num-i个空格
                { 
                    printf(" ");
                }
                printf("*");
                for (int k = 1; k <= n-2-2*(num-i);k++)     //输出中间n-2-2*(num-i)个空格
                { 
                    printf(" ");
                }
                printf("*");
                 for (int j = 1; j <= num - i; j++)     //第i行尾部输出num-i个空格
                { 
                    printf(" ");
                }
                printf("\n");
            }

        }
        else
        {
            num = (n - 1) / 2;
            for (int i = 1; i <= num; i++) 
            {
                for (int j = 1; j <= i - 1; j++) 
                { //输出首部i-1个空格
                    printf(" ");
                }
                printf("*");
                for (int k = 1; k <= n - 2-2*(i-1);k++) 
                { //输出中间n-2*i个空格
                    printf(" ");
                }
                printf("*");
                for (int j = 1; j <= i - 1; j++) 
                { //输出尾部i-1个空格
                    printf(" ");
                }
                printf("\n");
            }
            for(int l=1;l<=num;l++)
            {
                printf(" ");
            }
            printf("*");
            for(int l=1;l<=num;l++)
            {
                printf(" ");
            }
            printf("\n");

            for (int i = 1; i <= num; i++) {
                for (int j = 1; j <= num - i; j++) 
                { //第i行输出首部num-i个空格
                    printf(" ");
                }
                printf("*");
                for (int k = 1; k <= n-2-2*(num-i);k++) 
                { //输出中间2*i个空格
                    printf(" ");
                }
                printf("*");
                   for (int j = 1; j <= num - i; j++) 
                { //第i行输出尾部num-i个空格
                    printf(" ");
                }
                printf("\n");
            }

        }
    }
}

发表于 2023-02-26 17:35:23 回复(2)
#include <stdio.h>

int main()
{
    int n = 0;
    int i = 0, j = 0;
    while (scanf("%d", &n) != EOF)
    {

        for (i = 0; i < n; i++)
        {
            for (j = 0; j <= n; j++)
            {
                if (j == i + 1 || j == n - i)
                    printf("*");
                else
                    printf(" ");

            }

            printf("\n");

        }

    }
    return 0;
}

发表于 2023-02-24 17:52:05 回复(1)
#include <stdio.h>
int main() {
    int number = 0;
    char arr[20][20] = { 0 };
    while (scanf("%d", &number) == 1) {
        for (int i = 1; i <= number; i++) {
            for (int j = 1; j <= number; j++) {
                if (i - 1 == j - 1) {
                    arr[i - 1][j - 1] = '*';
                } else if (i + j == number + 1) {
                    arr[i - 1][j - 1] = '*';
                } else {
                    arr[i - 1][j - 1] = ' ';
                }
            }
        }

        for (int x = 0; x < number; x++) {
            for (int y = 0; y < number; y++) {
                printf("%c", arr[x][y]);
            }
            printf("\n");
        }
    }
    return 0;
}
发表于 2023-01-18 09:25:33 回复(0)
#include <stdio.h>
int main() {
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        int i=0;
        int j=0;
        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
            {
                if(i==j)
                {
                    printf("*");
                }
                else if(i+j==n-1)
                {
                    printf("*");
                }
                else
                {
                    printf(" ");
                }
            }
            printf("\n");
        }

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

问题信息

上传者:牛客309119号
难度:
38条回答 3060浏览

热门推荐

通过挑战的用户

查看代码