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

uva-10082 – WERTYU

2013年09月07日 ⁄ 综合 ⁄ 共 1174字 ⁄ 字号 评论关闭

题目分析:

            题目很简单,就是键盘上的字母错了一位,要求还原错误的文章。

算法分析:

           我主要分了三部分,数字,大写字母,还有其他字符。设置对应的匹配数组。

代码:

#include<stdio.h>
#include<string.h>

/*char digit[12],upercase[27],ch[15],match[15];*/
char str[1000][200];

void print(int n)
{
 int i;
 for(i=0;i<n;i++)
  printf("%s/n",str[i]);
}

int main()
{
 /*
 freopen(".in","r",stdin);
 freopen(".out","w",stdout);
 */
 int i,j,len,k,n;
 char digit[]={'9','`','1','2','3','4','5','6','7','8'};
 char upercase[]={'*','V','X','S','W','D','F','G','U','H','J','K','N','B','I','O','*','E','A','R','Y','C','Q','Z','T','*'};
 char ch[]={'-','=','[',']','//',';','/'',',','.','/'};
 char match[]={'0','-','P','[',']','L',';','M',',','.'};
 i=0;
 while(1)
 {
  if(gets(str[i])==NULL)
   break;
  i++;
 }
 n=i;
 
 for(i=0;i<n;i++)
 {
  len=strlen(str[i]);
  for(j=0;j<len;j++)
  {
   if(str[i][j]==' ')
    continue;
   else if(str[i][j]>='0'&&str[i][j]<='9')
    str[i][j]=digit[str[i][j]-'0'];
   else if(str[i][j]>='A'&&str[i][j]<='Z')
    str[i][j]=upercase[str[i][j]-'A'];
   else
   {
    for(k=0;k<10;k++)
    {
     if(str[i][j]==ch[k])
      str[i][j]=match[k];
    }
   }
  }
 }
 print(i);
 return 0;
}
 思考;

       本题主要是数组初始化的时候,我遇到点问题。首先数组必须在定义的时候初始化,害得我去掉了原来的两个子函数,现在代码很难看。还有就是字符转义的问题。‘/’,''',这些字符要用‘/’进行转义。

【上篇】
【下篇】

抱歉!评论已关闭.