现在的位置: 首页 > 综合 > 正文

UVA 10082 WERTYU

2018年04月29日 ⁄ 综合 ⁄ 共 917字 ⁄ 字号 评论关闭

   这也算是一道水题吧,怎么说呢,就是一个灵活性的误差来源,制造误差的原因应该就是错位引起的,只要认真读好题,知道是哪一位发生了错位,错位后与错位前的关系,然后开两个字符数组,分别从头到尾依次比较就好了,遇到相同的就不断的更新,,,,应该就能很好的AC了。。。。

# include<cstdio>
# include<iostream>

using namespace std;

# define MAX 1000+10

int main(void)
{
  int i,j,a,b,m;
  char str1[MAX];//存放待输入的字符串
  char str2[]={'`','1','2','3','4','5','6','7','8','9',
                '0','-','=','Q','W','E','R','T','Y','U',
                'I','O','P','[',']','\\','A','S','D','F',
                'G','H','J','K','L',';','\'','Z','X','C',
                'V','B','N','M',',','.','/'};
  b=sizeof(str2);//因为一个字符占一个字节,所以说sizeof的字节数就是字符的长度
  //cout<<b<<endl;
  while(scanf("%c",&str1[0])==1)
   {
     for(i=1;str1[i-1]!='\n';i++)
        scanf("%c",&str1[i]);
     a=i-1;//不要写成a=sizeof(str1)的形式,否则后面会有乱码
     for(i=0;i<a;i++)
       {
         for(j=0;j<b;j++)
           {
             if( str1[i]==str2[j] )
               str1[i]=str2[j-1];//其实我们需要的是j-1位的字符
           }
       }
     for(i=0;i<a;i++)
        printf("%c",str1[i]);
     printf("\n");   
   }
  return 0;
}

在代码的字里行间里,我还写出了很多的注释,都是对每个相应步骤所做出来的调整,认真看看都能看懂,难度不大。

还应该注意一点,,在把键盘上的所有字符复制到字符串的过程中,一定要注意有些字符的输入和输出相对应,比如说 键盘上的 \,输入到字符串中就应该是 ‘ \\ ’。。。

抱歉!评论已关闭.