我用c ++编写了这段代码
#include <iostream>
using namespace std;
char convert1 (char x[])
{
for ( int i =0; i<5;i++)
{
if ( i/2 ==0 )
x[i] =tolower(x[i]);
else
x[i] = toupper(x[i]);
return x[i];
}
}
int main()
{
char z[] = "REDCA";
cout<<convert1(z);
return 0;
}
它会工作,但它总是只打印第一个字母R的小案例。但我想打印这样的完整单词 rEdCa
所以我该怎么修改呢
答案 0 :(得分:3)
您想要if(i%2 == 0)
而不是if(i/2 == 0)
(可能是拼写错误)。
此外,您只返回x[i]
,这是一个char
。更好的想法是使用std::string
而不是char *
,但您也可以使用char *
。 (我不会提供完整的代码,因为我们在您之前的问题中已经确定,这是您的任务,您应该这样做,而不是我们。)
答案 1 :(得分:1)
convert1
的返回值为char
。因此,cout << convert1(x)
会看到char
,因此您只能获得第一个r
。
你可能想要这样的东西:
template<size_t S>
char const* convert1(char (&x)[S])
{
for(int i = 0; i < S; ++i)
{
if(i%2 ==0) {
x[i] = tolower(x[i]);
} else {
x[i] = toupper(x[i]);
}
}
return x;
}
想要更好,请使用std::string
。