• 叠筐【打印】


                                                       N - 叠筐(点击)

    需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。

    Input

    输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;

    Output

    输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。

    Sample Input

    11 B A
    5 @ W

    Sample Output

     AAAAAAAAA 
    ABBBBBBBBBA
    ABAAAAAAABA
    ABABBBBBABA
    ABABAAABABA
    ABABABABABA
    ABABAAABABA
    ABABBBBBABA
    ABAAAAAAABA
    ABBBBBBBBBA
     AAAAAAAAA 
    
     @@@ 
    @WWW@
    @W@W@
    @WWW@
     @@@ 

    思路:

    根据实例可以看出 输出图形为中心对称图形 所以我将它分为1/4 只要将坐上方的图形打印出来 然后将其输入数组 再根据对称的关系将另外的3/4 表示出来就可以了

    但是题目出得有点坑 平时做题最后一般是不能留出空格的(听同学说的)

    第一次提交答案错误 仔细一看发现在第二个输出的时候 @并不是在最外层 试了几个例子 发现是因为没判断n与输出的关系(代码细解释)。

    代码:

    #include<stdio.h>
    int judge(int n)
    {
        if(((n+1)/2)%2==0){
            return 1;
        }
        return 0;
    }
    int main()
    {
        int n,mid,k,k1,k2,flag=0,j,i;
        char a[85][85],ch[5];
        while(scanf("%d",&n)!=EOF){
            gets(ch);                //怕多次输入用%c+getchar()会不好掌控 就将输入的字符 存进数组
            mid=(n+1)/2;
            k=judge(n);          
            k1=1,k2=1;
            if(flag){                
                printf("
    ");    //保证格式符合题目要求 (每两个图形之间加空行而不是图形最后加空行)
            }
            flag++;
            if(n==1){
                printf("%c
    ",ch[1]);
            }
            else{
                while(k1!=mid+1){
                    for(j=k1;j<=mid;j++){
                        if(k1%2!=0){                      
                            if(k){
                                a[k1][j]=ch[3];    //   输入顺序是先横着一行然后竖着一行(看图片)
                            }
                            else{
                                a[k1][j]=ch[1];
                            }
                        }
                        else{           //开始就因为没判断 是将哪个图形存入奇数行 哪个存入偶数行
                            if(k){      //因为当n为5时是将中心放在外面 而为11时是将另一个放在外面
                                a[k1][j]=ch[1];
                            }
                            else{
                                a[k1][j]=ch[3];
                            }
                        }
                    }
                    for(i=k2;i<=mid;i++){
                        if(k2%2!=0){
                            if(k){
                                a[i][k2]=ch[3];
                            }
                            else{
                                a[i][k2]=ch[1];
                            }
                        }
                        else{
                            if(k){
                                a[i][k2]=ch[1];
                            }
                            else{
                                a[i][k2]=ch[3];
                            }
                        }
                    }
                    k1++,k2++;
                }
                for(i=1;i<=mid;i++){
                    for(j=mid;j<=n;j++){
                        a[i][j]=a[i][2*mid-j];       // 第一次对称 将右上部分补全
                    }
                }
                for(i=mid;i<=n;i++){
                    for(j=1;j<=n;j++){
                        a[i][j]=a[2*mid-i][j];       //第二次对称是将下半部分补全
                    }
                }
                for(i=1;i<=n;i++){
                    for(j=1;j<=n;j++){
                        if(((i==1)||(i==n))&&((j==1)||(j==n))){ 
                            printf(" ");      
                        }
                        else{                      //输出并挖去四个角上的图案
                            printf("%c",a[i][j]);
                        }
                    }
                    printf("
    ");
                }
            }
        }
        return 0;
    }
    

    图像:( ①、②在一个while循环中)

               注:①和②时一次while完成的

  • 相关阅读:
    Attribute+Reflection,提高代码重用
    类型安全的EventHandlerList
    简单一招,使解决方案下的项目版本号统一
    T-SQL 随机返回特定行数据和分页查询
    2013年中国系统架构师大会随想
    C#实现在注册表中保存信息
    滤镜
    蒙版
    图层样式和混合模式
    布尔运算
  • 原文地址:https://www.cnblogs.com/ldu-xingjiahui/p/12407477.html
Copyright © 2020-2023  润新知