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;} 展开
我的 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;} 展开
展开全部
其他的不说,你的程序首先输出应该保留有空格
这是我根据你的改的,可以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;
}
这是我根据你的改的,可以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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询