#include"iostream"
using namespace std;
//华为笔试题1
//简单题:给出一个字符串(字符数最大为128),删除非字母字符,并将大写字母转为小写字母。最后输出字符串。
//比如:输入...dfgDFSFNJ.f(ds 输出:dfgdfsfnjfds
void main(){
char str[128];
cin>>str;
char* s=str;
int len=strlen(str);
int j=0;
while(len){
if((*s>='A'&& *s<='Z')||(*s>='a'&& *s<='z')){
if((*s>='A'&& *s<='Z')){
*s=*s+('a'-'A');
}
*(str+j)=*s;
j++;
}
len--;
s++;
}
*(str+j)='\0';
cout<<str;
}
//对于字符串处理:对c来讲,基本思路一个一个字符来处理会非常方便。
/*其他做法
1、直接打印
for(int i=0;i<128;i++){ //因为这里最大数量给定
if((*s>='A'&& *s<='Z')||(*s>='a'&& *s<='z')){
if((*s>='A'&& *s<='Z')){
*s=*s+('a'-'A');
}
cout<<*s; //华为平台有个小bug,输出可以一个一个打印;
}
}
2、再建立一个堆(数组),用来存放复合要求的字符---这种做法很常见,很多时候都可以用这种思想
但是有缺点:浪费内存。
char nchar[128];
while(i<len){
if((*s>='A'&& *s<='Z')||(*s>='a'&& *s<='z')){
if((*s>='A'&& *s<='Z')){
*s=*s+('a'-'A');
}
nchar[str+j]=*s;
j++;
}
i++;
s++;
}
*(str+j)='\0';
cout<<str;
*/
华为笔试题1
最新推荐文章于 2024-09-07 17:43:58 发布