UVA 10082 WERTYU

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



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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值