我想仅使用递归将字符 "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);
}
我是编程初学者 我想打印这个数组作为字母 "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);
}