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;
}
为什么输什么出来的都是笑脸额。。
请看看哪里错了
全部评论
有注释:
#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
我不是很清楚为什么那样该,但是改了之后对了。
把 while(a[i]=getchar()!='\n')
改成:
while( (a[i]=getchar())!= '\n')
而且你的结束输入语句也是错的,假如我输入了 ENDBGDERHJ
该不该结束呢?
建议你使用scanf 或者 gets 输入语句 ,然后使用strlen 计算输入字符串的长度 。而且用这两个输入函数也不会出现 我刚才的疑问了。
while(a[i]=getchar()!='\n')
赋值的顺序从右到左。。如果(a[i]=getchar())不加括号,就是“getchar()不是回车”为真,a[i]=1。ASCII对应soh,所以你看到了笑脸。
如果学过字符串,那就用String,用来判断end比较有效
如果用scanf 可以写两遍,,diyi个读换行,,第二个读 END
您可能感兴趣的社区主题
评论
选购仪器 上yiqi.com
仪器网络推广
品牌网上传播
长按识别二维码查看信息详情