我想仅使用递归将字符 "a" 替换为字符 "z"

i want to replace character "a" with character "z" using recursion only

我是编程初学者 我想打印这个数组作为字母 "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++));
        }
    }

你的函数实现过于复杂,无效。

比如在这个语句中

   if(!name){
        return (0) ;

检查name是否等于nullptr,而你需要检查name[i]是否等于空终止符'[=16=]'.

   if(!name[i]){
        return (0) ;.

由于在return语句中使用了post增量运算符

return (strng(name ,i++));

函数在递增之前用 i 的相同值调用自身。

并且该函数应 return 指向其 return 类型的修改字符串的指针应为 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
#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);
}