仪器社区

C语言 简单编码 (如果访问到字符A,W,F就转化成I)

麟玲翎 2011-03-21
题目是: Z近Kingly对编码很感兴趣,于是从网上找了一些编码原则来对字符串做实验。由于Kingly一直很忙,所以希望你这位编程高手来替他解决这个问题。下面是编码原则:(1) 如果访问到字符A,W,F就转化成I;(2) 如果访问到字符C,M,S就分别转化成L,o,... 题目是: Z近Kingly对编码很感兴趣,于是从网上找了一些编码原则来对字符串做实验。由于Kingly一直很忙,所以希望你这位编程高手来替他解决这个问题。下面是编码原则:(1) 如果访问到字符A,W,F就转化成I;(2) 如果访问到字符C,M,S就分别转化成L,o,v;(3) 如果访问到字符D,P,G,B就转化成e;(4) 如果访问到字符L,X就分别转化成Y,u;(5) 其他字符均保持不变。(6) 遇到END就结束! Sample Input: A CMSD LMX END Sample Output: I Love You 我的程序是: #include #include int main() { int i=0,n=1; char a[100]; while(n) { while(a[i]=getchar()!='\n') i++; if(a[0]!='E' || a[1]!='N' || a[2]!='D') { for(n=0;n<=i;n++) { switch(a[n]) { case 'A':case 'W':case 'F': a[n]='I'; break; case 'C': a[n]='L'; break; case 'M': a[n]='o'; break; case 'S': a[n]='v'; break; case 'D':case 'P':case 'G':case 'B': a[n]='e'; break; case 'L': a[n]='Y'; break; case 'X': a[n]='u'; break; } } for(n=0;n<=i;n++) printf("%c",a[n]); printf("\n"); i=0; } else n=0; } return 0; } 为什么输什么出来的都是笑脸额。。 请看看哪里错了
评论
全部评论
zashi19810310
有注释:

#include
#include
int main()
{
int i=0,n=1;
char a[100];
while(n)
{
while((a[i]=getchar())!='\n') /* 加上括号 */
i++;
if(a[0]!='E' || a[1]!='N' || a[2]!='D')
{
for(n=0;n<=i;n++)
{
switch(a[n])
{
case 'A':case 'W':case 'F': a[n]='I'; break;
case 'C': a[n]='L'; break;
case 'M': a[n]='o'; break;
case 'S': a[n]='v'; break;
case 'D':case 'P':case 'G':case 'B': a[n]='e'; break;
case 'L': a[n]='Y'; break;
case 'X': a[n]='u'; break;
}
}
for(n=0;n<=i;n++)
printf("%c",a[n]);
/*printf("\n");*/
i=0;
}
else
n=0;
}
return 0;
}

如果考虑,ENDXXX 的问题,可以这样
把那个 if() 换成下面的:
if(strlen(a) == 3 && a[0] == 'E' && a[1] == 'N' && a[2] == 'D')
break;
else
6 0 2018-04-07 0条评论 回复
初心暖哭i
我不是很清楚为什么那样该,但是改了之后对了。
把 while(a[i]=getchar()!='\n')
改成:
while( (a[i]=getchar())!= '\n')

而且你的结束输入语句也是错的,假如我输入了 ENDBGDERHJ
该不该结束呢?

建议你使用scanf 或者 gets 输入语句 ,然后使用strlen 计算输入字符串的长度 。而且用这两个输入函数也不会出现 我刚才的疑问了。
4 0 2011-03-22 0条评论 回复
新航星洗涤设备
while(a[i]=getchar()!='\n')
赋值的顺序从右到左。。如果(a[i]=getchar())不加括号,就是“getchar()不是回车”为真,a[i]=1。ASCII对应soh,所以你看到了笑脸。
如果学过字符串,那就用String,用来判断end比较有效
15 0 2011-03-22 0条评论 回复
sfppscy72557
如果用scanf 可以写两遍,,diyi个读换行,,第二个读 END
15 0 2011-03-22 0条评论 回复
您可能感兴趣的社区主题
加载中...
发布 评论