您的位置:首页 > 编程语言 > C语言/C++

c++ 华为练习 四 删除字符串中的指定字符

2014-04-06 00:23 302 查看
#include <iostream>
using namespace std;
int main(void){
char a[100];
char b[100];
cin.getline(a,100);
cin.getline(b,100);
int an=0;
//int bn=0;
bool charninb[26];
for(int i=0;i<100;i++){
if(a[i]!='\0')an++;
if(b[i]!='\0'){
//  bn++;
if(b[i]>='a'&&b[i]<='z'){
charninb[b[i]-'a']=false;
}
}
}
char out[100];
int k=0;
for(int i=0;i<an;i++){
if(charninb[a[i]-'a'])
out[k++]=a[i];
}
out[k]='\0';
cout<<out<<endl;
cin>>a;
return 0;

}
不知道它用的声明高端的测试用例,使我这个答案出错了额,华为究竟用的什么用例呢,就算我把它改为 在一行 输入两个句的情况,用cin读入,读每一行时连对应所有的字符包括空格都删除,用cin.getline读入,甚至尝试读入长度10000的字符串,结果都错了。那是哪里有问题呢?
我还对连续输入多行,一行为a,一行为b的情况也进行了判断,还是无法得到正确结果。
#include <iostream>
using namespace std;
int main(void){
char a[1000];
char b[1000];
// cin>>a;
//cin>>b;
cin.getline(a,1000);
cin.getline(b,1000);
//for(int i=0;i<80;i++)
// b[i]=a[i+80];
/*
char c;

int n=0;
while(cin>>c){
if(c!='\n'&&c!='\0'){
a[n++]=c;
}else
break;

}
a
='\0';
n=0;
while(cin>>c){
if(c!='\n'&&c!='\0'){
b[n++]=c;
}else
break;

}
b
='\0';
*/
int an=0;
//int bn=0;
bool charninb[126];
for(int i=0;i<1000;i++){
if(a[i]!='\0')an++;
if(b[i]!='\0'){
// bn++;
if(b[i]>=1&&b[i]<=126){
charninb[b[i]]=false;
}
}
}
char out[1000];
int k=0;
for(int i=0;i<an;i++){
if(charninb[a[i]])
out[k++]=a[i];
}
out[k]='\0';
cout<<out<<endl;
return 0;

}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 学习