帮忙改下吧
我希望实现这样的功能
输入
START
NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX
END
输出
IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSES
输入
START
N BTZQI WFYMJW GJ KNWXY NS F QNYYQJ NGJWNFS ANQQFLJ YMFS XJHTSI NS WTRJ
END
输出
I WOULD RATHER BE FIRST IN A LITTLE IBERIAN VILLAGE THAN SECOND IN ROME
输入
ENDOFINPUT
退出
我的代码是下面的,错了,帮忙改下
#include <stdio.h>
#include <string.h>
char a[27]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char b[27]="VWXYZABCDEFGHIJKLMNOPQRSTU";
int main()
{
int i,j;
char c[105];
while(gets(c))
{
if(strcmp("START",c)==0)continue;
else if(strcmp("ENDOFINPUT",c)==0)break;
getchar();
scanf("END\n");
for(i=0;c[i]!='\0';i++)
for(j=0;j<26;j++)
if(c[i]==a[j]){c[i]=b[j];break;}
printf("%s\n",c);//continue;
}
return 0;
}
[解决办法]
下面代码满足楼主要求,并给出了注释,供楼主参考:
#include <stdio.h>#include <string.h>char a[27]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";char b[27]="VWXYZABCDEFGHIJKLMNOPQRSTU";int main(){ int i; char c[105] = {0}; // 要初始化 // 下面while循环的作用: // 1. 如果不输入"START"就一直循环("ENDOFINPUT"除外),并给出提示信息 // 2. 如果输入"ENDOFINPUT",就直接退出程序 while(gets(c)) { if((strcmp("START", c)) != 0 && (strcmp("ENDOFINPUT", c) != 0)) { printf("Please input \"START\" to start...\n"); } else if(strcmp("ENDOFINPUT", c) == 0) { return 0; } else { break; } } // 下面的while是进行翻译方面的工作 memset(c, 0, 105); // 字符串清0 while(gets(c)) { if(strcmp("ENDOFINPUT", c) == 0) break; for(i = 0; c[i] != 0; ++i) { if(c[i] < 65 || c[i] > 90) continue; // 非A ~ Z的字符一律保持不变。这是必要的,比如空格这样的字符处理 c[i] = (c[i] + 21 - 'Z') > 0 ? (c[i] - 5) : (c[i] + 21); // 具体翻译工作 } printf("%s\nEND\n", c); memset(c, 0, 105); // 字符串清0 } return 0;}
[解决办法]