>

아래에 작성된 프로그램이 있습니다. char 배열을 어떻게 뒤집는지를 이해하지 못합니다. 나는 그것이 잘 작동한다는 것을 의미합니다. 사용자가 char 배열에 저장된 문자열을 뒤집어 놓았지만 어떻게 작동하고 순서를 바꾸는 지 알고 싶습니다. 기본적으로 첫 번째 for 루프를 이해하지 못하고 본문에 명령문이 없으며 for 루프의 첫 번째 부분이 누락되었습니다. 일반적이거나 어려운 단어가 아닌 간단하고 쉬운 단어로 설명하십시오. 나는 영어 원어민이 아닙니다. 고마워요.

#include <iostream>
using namespace std;
int main()
{
    char name[99];
    int counter=0;
    cin >> name;
    for(;name[counter]!='\0'; counter++)
    {}
    cout << "\nName: ";
    for (;counter > 0; counter--)
    {
        cout << name[counter-1];
    }
}

  • 답변 # 1

    C 문자열이 널 ( '\ 0')로 종료되었습니다. 첫 번째 루프는 counter 를 증가시킵니다.   name 에 포함 된 문자열의 끝까지  발견되었습니다. 널 문자로 표시됩니다. 중요한 부분은 counter 입니다  첫 번째 for 외부에서 선언  루프는 두 번째 루프가 실행될 때 범위 내에서 동일한 값으로 유지됩니다. 두 번째 루프는 name 에서 문자열의 끝에서 시작됩니다.  첫 문자를 인쇄 할 때까지 문자를 인쇄합니다.

  • 답변 # 2

    프로그램에서 First For 루프는 name 변수의 문자 수를 아는 것입니다. 작동 방식을 설명하겠습니다.
    For 루프는
    와 같은 기본 구조를 가지고 있습니다     for (i = 10;i>0;i--)
        {           
    //에 대한 신체 부위     }
    첫 번째 부분 i = 0은 초기화이고 두 번째 부분은 조건이며 세 번째 부분은 증분/감소입니다.
    프로그램에서 카운터 값을 0으로 이미 초기화했습니다.
    이 루프는 문자 수를 세기위한 것이므로 모든 루프 수 변수가 증가한 후에 증가합니다. 신체 부위에는 아무것도 쓸 필요가 없습니다.

    첫 번째 for 루프 수 변수를 완료 한 후 이름 변수의 문자와 동일한 값을 갖습니다.
    두 번째 루프에서는 count에 이미 일부 값이 저장되어 있으므로 count 값을 초기화 할 필요가 없습니다.

    지금 이해합니다 .. !!

  • 답변 # 3

    0에서 카운터를 시작합니다.

    for(;name[counter]!='\0'; counter++){}
    
    

    위의 for 루프는 카운터가 '\ 0'에 도달 할 때까지 카운터를 증가시킵니다.이 시점에서 카운터는 이름으로 입력 한 문자 수로 증가합니다. 예 : 헬로 카운터를 입력 한 경우 5시에 있습니다.

    for (;counter > 0; counter--){cout << name[counter-1]; }

    위의 for 루프에서 카운터 값을 5로 시작한 다음 카운터의 첫 번째 반복이 5이기 때문에 배열의 각 문자를 거꾸로 인쇄하여 시작합니다. 이름이 [4] 인 경우 o를 계산 한 다음 카운터가 감소합니다. 인쇄 이름 [3] = l, 다음 이름 [2] = l, 그런 다음 name [1] = e이고 name [0] = h입니다. 참고 : 카운터 값이 n이면 n-1을 인쇄합니다. 따라서 카운터가 1로 감소하면 name [0]을 인쇄합니다. 그런 다음 카운터는 결국 0으로 감소하여 루프가 거짓이됩니다. 또한 배열 요소 자체를 반전시키지 않고 반대로 반전 인쇄합니다.

  • 답변 # 4

    #include <iostream>
    using namespace std;
    int main()
    {
        char name[99];
        int counter=0; // variable to store the number of characters in name.
        cin >> name;
        // the for loop is counting each letter until the end of the string, storing the result in counter.
        for(;name[counter]!='\0'; counter++)
        {}
        cout << "\nName: ";
        // if the name you entered was "Billy" counter would = 5
        for (;counter > 0; counter--)
        {
            // since counter = 5 counter subtracts 1 to get to the "5th" spot in the array which is when counter = 4
            // name[0] = B
            // name[1] = i
            // name[2] = l
            // name[3] = l
            // name[4] = y
            // now starting from position 4 in the array counter-- subtracts 1 
            // from counter each time it runs through the loop to get to each previous letter.
            cout << name[counter-1];
        }
    }
    
    

  • 이전 vba와 함께 Excel에서 마지막으로 사용 된 셀을 찾는 오류
  • 다음 mysql - 데이터 유형이 텍스트 인 atable 열에 qoutes를 삽입 할 수 있습니까