• 天梯---福到了


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

    输入格式:

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

    输出格式:

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

    输入样例 1:

    $ 9
     @  @@@@@
    @@@  @@@ 
     @   @ @ 
    @@@  @@@ 
    @@@ @@@@@
    @@@ @ @ @
    @@@ @@@@@
     @  @ @ @
     @  @@@@@

    输出样例 1:

    $$$$$  $ 
    $ $ $  $ 
    $$$$$ $$$
    $ $ $ $$$
    $$$$$ $$$
     $$$  $$$
     $ $   $ 
     $$$  $$$
    $$$$$  $ 

    输入样例 2:

    & 3
    @@@
     @ 
    @@@

    输出样例 2:

    bu yong dao le
    &&&
     & 
    &&&

    第一次没过,只拿了11分

    代码如下:

     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5     char c;
     6     int n,i,g;
     7     scanf("%c %d",&c,&n);
     8     char str1[100][100],str2[100][100];
     9     getchar();
    10     for(i=0;i<n;i++)
    11     {
    12         gets(str1[i]);
    13     }
    14     int a,b,t=1;
    15     a=n-1;
    16     b=n-1;
    17     for(i=0;i<n;i++)
    18     {
    19         for(g=0;g<n;g++)
    20         {
    21             str2[i][g]=str1[a][b--];
    22         }
    23         b=n-1;
    24         a--;
    25     }
    26     for(i=0;i<n;i++)
    27     {
    28         for(g=0;g<n;g++)
    29         {
    30             if(str1[i][g]!=str2[i][g]) t=0;
    31             if(str2[i][g]!=' ') str2[i][g]=c;
    32         }
    33     }
    34     if(t) printf("bu yong dao le
    ");
    35     for(i=0;i<n;i++)
    36     {
    37         puts(str2[i]);
    38     }
    39     return 0;
    40 }

    后来改了一点点,不用puts输出,一个字符一个字符地输出,就过了...............

    代码如下:

     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5     char c;
     6     int n,i,g;
     7     scanf("%c %d",&c,&n);
     8     char str1[101][101],str2[101][101];
     9     getchar();
    10     for(i=0;i<n;i++)
    11     {
    12         gets(str1[i]);
    13     }
    14     int a,b,t=1;
    15     a=n-1;
    16     b=n-1;
    17     for(i=0;i<n;i++)
    18     {
    19         for(g=0;g<n;g++)
    20         {
    21             str2[i][g]=str1[a][b--];
    22         }
    23         b=n-1;
    24         a--;
    25     }
    26     for(i=0;i<n;i++)
    27     {
    28         for(g=0;g<n;g++)
    29         {
    30             if(str1[i][g]!=str2[i][g]) t=0;
    31             if(str2[i][g]=='@') str2[i][g]=c;//这里也改了,但感觉没影响
    32         }
    33     }
    34     if(t) printf("bu yong dao le
    ");
    35     for(i=0;i<n;i++)
    36     {
    37         for(g=0;g<n;g++)
    38         {
    39             printf("%c",str2[i][g]);//这里改了
    40         }
    41         printf("
    ");
    42     }
    43     return 0;
    44 }

    上面用了gets,交C编译器能过

    用getline的,参考下面的:

     1 #include <bits/stdc++.h>
     2 const int INF=0x3f3f3f3f;
     3 typedef long long LL;
     4 const double eps =1e-8;
     5 const int mod=1e9+7;
     6 const int maxn=1e5+10;
     7 using namespace std;
     8 
     9 string str[105];
    10 
    11 int main()
    12 {
    13     #ifdef DEBUG
    14     freopen("sample.txt","r",stdin);
    15     #endif
    16     
    17     int n,m;
    18     char c;
    19     cin>>c>>n;
    20     getchar();
    21     for(int i=0;i<n;i++)
    22         getline(cin,str[i]);
    23     int flag=0;
    24     for(int i=0;i<n;i++)
    25     {
    26         for(int j=0;j<n;j++)
    27         {
    28             if(str[i][j]!=str[n-i-1][n-j-1]) flag=1;
    29         }
    30     }
    31     if(flag==0) cout<<"bu yong dao le"<<endl;
    32     for(int i=n-1;i>=0;i--)
    33     {
    34         for(int j=n-1;j>=0;j--)
    35         {
    36             if(str[i][j]=='@') cout<<c;
    37             else cout<<' ';
    38         }
    39         cout<<endl;
    40     }
    41     
    42     return 0;
    43 }

    -

  • 相关阅读:
    重载与复写的区别
    Linux常用的网络命令
    JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
    Java中重载与复写的区别、super与this的比较
    JAVA中extends 与implements区别
    Android控件系列之Button以及Android监听器
    Could not find SDK_Root\tools\adb.exe 的解决方法
    路由知识普及和经验分享
    abort函数
    细说Cookie
  • 原文地址:https://www.cnblogs.com/jiamian/p/10625070.html
Copyright © 2020-2023  润新知