Mister-小方


私信TA

用户名:1104986125

访问量:236948

签 名:

如此英俊为哪般

等  级
排  名 3
经  验 35431
参赛次数 1
文章发表 68
年  龄 19
在职情况 学生
学  校 大连交通大学
专  业 车辆工程

  自我简介:

解题思路以及注意事项:

代码比较长,大家可以静下心来直接看代码,有详细注释                    x         x

小图形的样子由a决定,比如a=3,则小图形的样子是x x     a=5就是      x  x

                                                                                x                            x

                                  共占三行                                x x                        x  x      共五行

                                                                                                         x         x

如果是第奇数个小图形,完全输出,偶数就得截去最上面和最下面的

实例代码:

    #include<stdio.h>  
    int main()  
    {  
        int t;  //t表示有几组数据
        int a,b;  //a,b分别是样子和重复次数
        int i,j,k;  //都是用来循环的
        scanf("%d",&t);  //给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;  
    }

看看大家还有什么不懂的,请在下方评论区留言

 

0.0分

0 人评分

  评论区

if((j<=a/2&&k==a-j+1)||(j>a/2&&k==j))这一步是在判断什么啊
2019-03-20 16:46:33
这个厉害啊,唯一的缺点就是图形不是连续打印出来的;
2018-12-11 15:58:48
最后那个 if(t!=0)  
                printf("\n");  
        }  
   为什么还要换行呀?
2018-08-11 09:36:43
在最后有  if(t!=0)  
                printf("\n");  
        }  ,为什么要有这一步呀?
2018-08-11 09:35:52
有个for掉了个{
2017-08-13 20:51:13
  • «
  • 1
  • »