我是编程初学者,我想将此数组打印为字母“ a”应替换字母“ z”并打印更新的字符串
#include <iostream>
char strng(char[],int);
using namespace std;
int main() {
char s[]="all in all";
int i=0;
char result;
//cout<< sizeof(s);
result=strng(s,i);
cout<<result;
return 0;
}
char strng (char name[],int i) {
if(!name){
return (0) ;
}
else if(name[i]=='a'){
name[i]='z';
return (strng(name ,i++));
}
}
答案 0 :(得分:1)
#include <iostream>
#include <string>
#include <cstring>
void replaceChar(char *ptr, int len){
if(len == 0 ){
if( (*(ptr+len)) == 'a' ){
(*(ptr+len)) = 'z';
}
}
else{
if((*(ptr+len)) == 'a'){
(*(ptr+len)) = 'z';
}
replaceChar(ptr, len-1);
}
}
int main() {
char str[] = "Mandar";
puts(str);
replaceChar(str,strlen(str) - 1);
puts(str);
}
答案 1 :(得分:0)
您的函数实现太复杂且无效。
例如在此语句中
if(!name){
return (0) ;
需要检查name
是否等于nullptr,而您需要检查name [i]是否等于终止符'\0'
。
if(!name[i]){
return (0) ;.
由于return语句中使用的后递增运算符
return (strng(name ,i++));
该函数在递增之前使用i
的相同值进行调用。
该函数应返回指向修改后的字符串的指针,其返回类型应为char *
。
可以按照演示程序中所示的以下方式定义函数
#include <iostream>
char * replace_char( char *s, char source = 'a', char substitution = 'e' )
{
if ( *s )
{
if ( *s == source ) *s = substitution;
replace_char( s + 1, source, substitution );
}
return s;
}
int main()
{
char s[]="all in all";
std::cout << s << '\n';
std::cout << replace_char( s ) << '\n';
return 0;
}
其输出为
all in all
ell in ell