печатать abc upercase и строчные c ++, используя для цикла - PullRequest
0 голосов
/ 31 октября 2018

Я новичок в 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;
}  

Спасибо.

Ответы [ 3 ]

0 голосов
/ 31 октября 2018

На самом деле это простая логика. Вам нужно зациклить следующим образом:

#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;
}
0 голосов
/ 31 октября 2018

Изменение того, что вы работали до того, как я предложил бы создать внешний цикл, который повторяется 26 раз. И использовать tolower, который преобразует прописные буквы в строчные, но так как он возвращает целое число, вы должны привести его к типу 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;
}
0 голосов
/ 31 октября 2018

Не используйте (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 и std::tolower:

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

К сожалению, из-за унаследованного C эти функции работают с типом данных int (хотя в основном они интерпретируют его как char), поэтому вам нужно преобразование.

...