注册 登录
编程论坛 C++教室

求大神看看。。。。这个break为什么跳不出来?

天坑 发布于 2012-11-22 15:39, 428 次点击
#include<iostream>
using namespace std;
int main()
{
    char a[100] ;
    for(int i=0;i<100;i++)
    {  a[i]=cin.get();
       if(a[i]=='END')
       break ;
       else
       {if(a[i]=='A'||a[i]=='W'||a[i]=='F')
         a[i]='I';
      if(a[i]=='C')
         a[i]='L';
     if(a[i]=='M')
         a[i]='o';
     if(a[i]=='S')
         a[i]='v';
     if(a[i]=='D'||a[i]=='P'||a[i]=='G'||a[i]=='B')
         a[i]='e';
     if(a[i]=='L')
         a[i]='Y';
    if(a[i]=='X')
        a[i]='u'; }}
       for(int j=0;j<100;j++)
           cout<<a[j];
cout<<endl;
return 0;
}
跪求!!
7 回复
#2
yuccn2012-11-22 16:00
if(a[i]=='END') -> if (strcmp(a,"END") == 0)
#3
rjsp2012-11-22 16:38
看这种不排版的代码,对眼睛绝对是一种折磨
另外,除了2楼说的,逻辑也多处错乱,a没有字符串尾部的'\0',所以不可以用strcmp比较;a[i]=='C'时a[i]='L',a[i]=='L'时a[i]='Y',干嘛不直接写成a[i]=='C'时a[i]='Y'?如果a没cin.get()到100个字符,你想cout<<a[j]啥个随机值?
#4
mmmmmmmmmmmm2012-11-22 22:50
楼主 按crtl+z 可以跳出来的
#5
mmmmmmmmmmmm2012-11-22 22:55
用string修改了一下 供参考
程序代码:
#include<iostream>
#include <string>
using namespace std;

int main()
{
    string a;
    while (cin >> a)
    {
        string::size_type i=0;
        for ( ; i!=a.size(); i++)
        {
            if(a[i]=='A'||a[i]=='W'||a[i]=='F')
                a[i]='I';
            if(a[i]=='C')
                a[i]='L';
            if(a[i]=='M')
                a[i]='o';
            if(a[i]=='S')
                a[i]='v';
            if(a[i]=='D'||a[i]=='P'||a[i]=='G'||a[i]=='B')
                a[i]='e';
            if(a[i]=='L')
                a[i]='Y';
            if(a[i]=='X')
                a[i]='u';
        }
        cout<<a<<endl;

    }

    return 0;
}
#6
zxd5432012-11-23 23:34
  if(a[i]=='END')//a[]字符类型 只能存一个字符
           break ;
#7
天剑山2012-11-24 14:24
汗...应该是和文件结束符比较吧?貌似不是END吧?
#8
lyj1232012-11-25 16:33
同意楼上。。。应该是和文件结束符比较!!
    还有没有用文件流的话与文件结束符比较在键盘上做不到,除非手动地输入(就不用比较了)
或者用重定向\管道的方法来实现
1