C++ 试图使一个程序反转一个语句,使所有大写字母都小写,但它只反转

C++ 试图使一个程序反转一个语句,使所有大写字母都小写,但它只反转,c++,C++,代码会反转语句,但不会使大写字母变为小写。我对编码非常陌生,希望能得到一些帮助,谢谢!: #include<iostream> #include<cstring> using namespace std; int main () { char str[50], temp; int i, j, x; cout << "Enter a string : "; gets(str); j = strlen(str) - 1;

代码会反转语句,但不会使大写字母变为小写。我对编码非常陌生,希望能得到一些帮助,谢谢!:

#include<iostream>
#include<cstring>
using namespace std;
int main ()
{
    char str[50], temp;
    int i, j, x;
    cout << "Enter a string : ";
    gets(str);
    j = strlen(str) - 1;
    int size =  strlen(str)-1;
    for (x=0;x<=size;x++){
    if (str[x]>'z'){
        str[x]+'32';
    }

    }
    for (i = 0; i < j; i++,j--)
    {
        temp = str[i];
        str[i] = str[j];
        str[j] = temp;
    }

    cout << "\nReverse string : " << str;
    return 0;
}

#包括
#包括
使用名称空间std;
int main()
{
字符str[50],温度;
int i,j,x;

cout
str[x]+'32'
这只是一个表达式,它计算
str[x]
32'
的总和,后者是一个
char
文字。您可能想使用
str[x]+=32
str[x]
处的字符指定一个新值,该值等于
str[x]的旧值
加上数字
32
?(顺便说一句,这不是一个很好的方法来完成
std::toupper
会做得更好。)而且,
str[x]>'z'
可能是错误的。试一下
islower
测试。除了@Wyck说的,你的chdck
str[x]>“z”
没有任何意义。要查看字母是否为大写字母?请使用
if(str[x]>='A'&&str[x]通常会使用库函数
tolower
进行大小写转换。如前所述,条件不正确。大于
z
的ASCII字符是一些特殊字符,如
{124;}在中,你应该使用<代码> STD::String ,而不是基于No.Car */CODE >的NC结尾的C风格字符串。<代码>获取< /C> >已被从C和C++删除。它永远不应该被使用。请从C++学习C++。但是,你现在正在学习的不是正确的教你。也有一个提示:不要使用<代码>大小=strlen(str)-1并比较
x