2023/08/04

“福”字倒着贴,寓意“福到”。不论到底算不算民俗,本题且请你编写程序,把各种汉字倒过来输出。这里要处理的每个汉字是由一个 N × N 的网格组成的,网格中的元素或者为字符 @ 或者为空格。而倒过来的汉字所用的字符由裁判指定。

输入格式:
输入在第一行中给出倒过来的汉字所用的字符、以及网格的规模 N (不超过100的正整数),其间以 1 个空格分隔;随后 N 行,每行给出 N 个字符,或者为 @ 或者为空格。

输出格式:
输出倒置的网格,如样例所示。但是,如果这个字正过来倒过去是一样的,就先输出bu yong dao le,然后再用输入指定的字符将其输出。

输入样例 1:
$ 9
 @  @@@@@
@@@  @@@ 
 @   @ @ 
@@@  @@@ 
@@@ @@@@@
@@@ @ @ @
@@@ @@@@@
 @  @ @ @
 @  @@@@@
输出样例 1:
$$$$$  $ 
$ $ $  $ 
$$$$$ $$$
$ $ $ $$$
$$$$$ $$$
 $$$  $$$
 $ $   $ 
 $$$  $$$
$$$$$  $ 
输入样例 2& 3
@@@
 @ 
@@@
输出样例 2:
bu yong dao le
&&&
 & 
&&&
import java.util.Scanner;
public class Main{
    public static void main(String[]args)
    {
        Scanner sc=new Scanner(System.in);
        String x=sc.next();
        int n=sc.nextInt();
        boolean flag=true;
        String[] w=new String[n];
        sc.nextLine();
        for(int i=0;i<n;i++)
        {
            w[i]=sc.nextLine();
        }
        for(int i=0;i<n;i++)//横行转置
        {
            int j=n-1-i;
            StringBuilder sb=new StringBuilder(w[i]);
            if(!w[i].equals(w[j]))
            {
                flag=false;
            }
            w[i]=sb.reverse().toString();
        }
        for(int i=0;i<n;i++)
        {
            StringBuilder sb=new StringBuilder(w[i]);
            for(int j=0;j<w[i].length();j++)
            {
                char indexchar=w[i].charAt(j);
                if(indexchar!=' ')
                {
                    sb.replace(j,j+1,x);
                }
            }
            w[i]=sb.toString();
        }
        if(flag)
        {
            System.out.println("bu yong dao le");
        }
        for(int i=n-1;i>=0;i--)
        {
            System.out.println(w[i]);
        }
    }
}
“666”是一种网络用语,大概是表示某人很厉害、我们很佩服的意思。最近又衍生出另一个数字“9”,意思是“6翻了”,实在太厉害的意思。如果你以为这就是厉害的最高境界,那就错啦 —— 目前的最高境界是数字“27”,因为这是 3 个 “9”!

本题就请你编写程序,将那些过时的、只会用一连串“6666……6”表达仰慕的句子,翻译成最新的高级表达。

输入格式:
输入在一行中给出一句话,即一个非空字符串,由不超过 1000 个英文字母、数字和空格组成,以回车结束。

输出格式:
从左到右扫描输入的句子:如果句子中有超过 3 个连续的 6,则将这串连续的 6 替换成 9;但如果有超过 9 个连续的 6,则将这串连续的 6 替换成 27。其他内容不受影响,原样输出。

输入样例:
it is so 666 really 6666 what else can I say 6666666666
输出样例:
it is so 666 really 9 what else can I say 27

这题用了两种方法,第一种测试点上有一点小错误,开始的时候的想法来做的,步骤比较繁琐

然后第二种是看了看网上的思路然后自己再写了一遍,由于Java和C数组不太一样,所以还是得有自己的想法进行修改的

import java.util.Scanner;
public class Main {
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);
        String a=sc.nextLine();
        int num=0,m=0,s=0,l=0;//记录字符组合数
        for(int i=0;i<a.length();i++)
        {
            if(a.charAt(i)==' ')
            {
                num++;
            }
        }
        StringBuilder sb1=new StringBuilder(a);
        num++;//字符组合数比空格数多1
        for(int i=0;i<num;i++)
        {
            int n=0;//6的数量
            s=m;//组合的开始位置
            boolean flag=true;
            StringBuilder sb2=new StringBuilder();//创建空串
            for(int j=m;j<sb1.length();j++)
            {
                m++;//下次录入的开始位置
                if(i!=num-1)
                {
                l=m-1;//这个组合的结束位置
                }
                else
                    l=m;
                if(sb1.charAt(j)!=' ')
                {
                sb2.append(sb1.charAt(j));
                }
                else
                {
                break;//记录完一个字符组合
                }
            }
            for(int j=0;j<sb2.length();j++)
            {
                if(sb2.charAt(j)!='6')
                {
                    flag=false;//字符中有除了6以外的数字做标记
                }
            }
            if(flag)
            {
                for(int j=0;j<sb2.length();j++)
                {
                    if(sb2.charAt(j)=='6')
                    {
                        n++;
                    }
                }
            }
            if(n>3&&n<9)
            {
                sb1.replace(s,l,"9");
                m=m-sb2.length()+1;
            }
            else if(n>9)
            {
                sb1.replace(s,l,"27");
                m=m-sb2.length()+2;
            }
        }
        System.out.println(sb1);
    }
}
import java.util.Scanner;
public class Main{
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);
        String a=sc.nextLine();
        StringBuilder sb=new StringBuilder(a);
//这里给加长一个非6的字符,java不像C超出数组范围就会报错,这就会导致最后一个元素很可能不会打印出来
        sb.append(" ");
        a=sb.toString();
        int count=0;
        for(int i=0;i<a.length();i++)
        {
            if(a.charAt(i)=='6')
            {
                count++;
                continue;
            }
            if(count>9)
            {
                System.out.print("27");
            }
            else if(count>3)
            {
                System.out.print("9");
            }
            else
            {
                for(int j=0;j<count;j++)
                {
                    System.out.print("6");
                }
            }
            if(i!=a.length()-1)//设置加长的部分一定不会打印
            System.out.print(a.charAt(i));
            count=0;
        }
    }
}

 

posted @ 2023-08-04 18:19  伐木工熊大  阅读(22)  评论(0编辑  收藏  举报