|
#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!='\0')an++;
if(b!='\0'){
// bn++;
if(b>='a'&&b<='z'){
charninb[b-'a']=false;
}
}
}
char out[100];
int k=0;
for(int i=0;i<an;i++){
if(charninb[a-'a'])
out[k++]=a;
}
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=a[i+80];
/*
char c;
int n=0;
while(cin>>c){
if(c!='\n'&&c!='\0'){
a[n++]=c;
}else
break;
}
a[n]='\0';
n=0;
while(cin>>c){
if(c!='\n'&&c!='\0'){
b[n++]=c;
}else
break;
}
b[n]='\0';
*/
int an=0;
//int bn=0;
bool charninb[126];
for(int i=0;i<1000;i++){
if(a!='\0')an++;
if(b!='\0'){
// bn++;
if(b>=1&&b<=126){
charninb[b]=false;
}
}
}
char out[1000];
int k=0;
for(int i=0;i<an;i++){
if(charninb[a])
out[k++]=a;
}
out[k]='\0';
cout<<out<<endl;
return 0;
}
|
|
|