ZOJ 1884 大神帮忙 找不到问题所在一直WA

题目http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1884我的CODE#include<std... 题目 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1884
我的 CODE
#include<stdio.h>
int main(){
char a[]="`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";
char c[100];
int i,j,k;
i=0;
while(gets(c)){
for(i=0;c[i];i++){

for(k=1;k<=46;k++){
if(c[i]=='Q'||c[i]=='A'||c[i]=='Z'||c[i]=='`'||c[i]=='~'){
printf("%c",c[i]);
break;
}
if(c[i]==a[k]){
c[i]=a[k-1];
printf("%c",c[i]);
break;}
}
}
printf("\n");
}

return 0;}
展开
 我来答
macwor1d
2012-01-03 · TA获得超过577个赞
知道小有建树答主
回答量:243
采纳率:0%
帮助的人:231万
展开全部
其他的不说,你的程序首先输出应该保留有空格
这是我根据你的改的,可以AC(ZOJ上如果用GCC编译提交需要去掉注释)

#include<stdio.h>
//定义字符与键盘映射,其实`QAZ可以不写出来
char keymap[][20]=
{"`1234567890-=",
"QWERTYUIOP[]\\",
"ASDFGHJKL;'",
"ZXCVBNM,./"};

int main()
{
char str[500];//题目没有说字符串长度,尽量开大些
int i = -1, j, k;
while(gets(str))
{
if(i!=-1) printf("\n");//不要打印多余的换行符,特别是读入最后一组数据,虽然题目没有要求
i = -1;
while(str[++i]!='\0')
{
for(j=0; j<4; j++)
{
k = 0;
while(keymap[j][++k]!='\0') //第一列无视掉
{
if(str[i]==keymap[j][k])
str[i] = keymap[j][k-1];//找到对应字符,直接用左边字符替换
}
}
}
printf("%s",str);//打印结果
}

return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式