使用for循环打印abc大写和小写c ++

print abc upercase and lowercase c++ using for loop

我是 c++ 的新手,我想使用控制台应用程序像这样打印 "abc" 小写和大写。

Aa 

Aa, Bc 

Aa, Bc, Cc 

Aa, Bc, Cc, Dd  

以此类推Zz

我的简单代码是:

{ 
char abc;
for(abc = 'A'; abc <= 'Z'; abc++){
    cout<< abc <<",";
}
return 0;
}  

谢谢。

不要使用 (char)(abc+32) 作为(叹息)赞成评论的建议。这么一小段代码存在几个问题:

  • 你不应该使用幻数。这里 32 是一个神奇的数字。它是什么?它从何而来?在 ASCII 编码中它是 'a' - 'A'。如果你需要写这个数字,不要写32,写'a' - 'A'。但是我们接下来会看到,这个数字有问题:

  • 使用 'a' - 'A' 进行大小写转换仅适用于 ASCII 编码。 C++ 没有指定 char 使用 ASCII,尽管它是最常用的编码。底线:它不是便携式的。如果你使用它,在某处断言使用的编码是ASCII

  • 在 C++ 中你应该避免 C 风格的转换,例如(char)(...)。请改用 static_cast

在 C++ 中进行大小写转换的简单可移植方法是使用 std::toupper and std::tolower:

static_cast<char>(std::tolower(abc))

不幸的是,由于 C 的遗留问题,这些函数适用于 int 数据类型(尽管大多数情况下它们将其解释为 char),因此您需要转换。

其实很简单的逻辑。你需要循环如下:

#include<iostream>

int main()
{
    for(int i = 0; i < 26; i ++){
        for(int j = 0; j <= i; j++)
            std::cout<<(char)(65 + j)<<(char)(65 + j + 32)<<", ";
        std::cout<<std::endl;
    }
    return 0;
}

修改你之前的工作我建议有一个循环 26 次的外循环。并使用 tolower 将大写字母转换为小写字母,但由于它 returns 是一个整数,因此您应该将其转换为 char.

char abc;
int j;
for(int i = 0;i<26;i++)
{
    j = 0;
    for(abc = 'A'; abc <= 'Z' && j<=i; abc++){
        cout<< abc <<static_cast<char>(std::tolower(abc));
        if(j+1 <= i)
            cout<<", ";
        j++;
    }
    cout<<endl<<endl;
}