1 条题解

  • 0
    @ 2025-4-12 21:33:45

    C :

    #include<stdio.h>
    #include<string.h>
    
    int main()
    {
    	int i,j,n,m,x,k,ha;
    	scanf("%d",&x);
    	while(x-->0){
    		scanf("%d%d",&m,&n);
    		k=1;
    		while(n>0){
    			for(i=k;i<=m;i++)
    			{
    				ha=0;
    				for(j=1;j<=m;j++)
    				{
    					if(i==j||i==m-j+1){printf("X");ha++;}
    					else printf(" ");
    					if(ha==2||(i==j&&i==m/2+1))break;
    				}
    				printf("\n");
    			}
    			if(k==1)k=2;
    			n--;
    		}
    		printf("\n");
    	}
    	return 0;
    }
    

    C++ :

    #include<stdio.h>
    int main()
    {
        int t;
        int a,b;
        int i,j,k;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d%d",&a,&b);
            for(i=1;i<=b;i++)
            {
                if(i%2==1)
                //当是第奇数个小图形的时候,就将小图形完全输出 
                {
                    for(j=1;j<=a;j++)
                    {
                        for(k=1;k<=a;k++)
                        {
                            if(k==j||k==a-j+1)
                                printf("X");
                            else
                                printf(" ");
                            if((j<=a/2&&k==a-j+1)||(j>a/2&&k==j))
                                break;//避免输出多余的空格 
                        }
                        printf("\n");
                    }
                }
                else
                {//当是第偶数个小图形的时候,将小图形首尾各截去一行再输出 
                    for(j=2;j<=a-1;j++)
                    {
                        for(k=1;k<=a;k++)
                        {
                            if(k==j||k==a-j+1)
                                printf("X");
                            else
                                printf(" ");
                            if((j<=a/2&&k==a-j+1)||(j>a/2&&k==j))
                                break;
                        }
                        printf("\n");
                    }
                }
            }
            if(b%2==0)//如果一共有偶数个小图形,那么在最后就需要再加一个尾,即小图形的最后一行 
            {
                for(i=1;i<=a;i++)
                {
                    if(i==1||i==a)
                        printf("X");
                    else
                        printf(" ");
                }
                printf("\n");
            }
            if(t!=0)
                printf("\n");
        }
        return 0;
    } 
    
    • 1

    信息

    ID
    400
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者