0

私は何を間違えましたか?'if'を使用してすべての大文字を印刷するには、これが必要ですが、文字が複数回印刷されているため、問題が発生しています。助けていただければ幸いです:)

//Uppercase letters using if;
#include<iostream>
using namespace std;

int main()
{
    char character='A';
label1:
if(character>='A')
    if(character>='Z')
        goto label2;
    else
    {
        cout<<character<<endl<<character++<<endl;
        goto label1;
    }

label2:
    cout<<"End"<<endl;
    return 0;
}
4

4 に答える 4

3

character変数を2回増やします。この回答は、技術的な間違いを示すためだけに投稿していますが、より大きな概念的なものがあります。それは、の使用ですgoto。C++の入門書を読むことをお勧めします。

//Uppercase letters using if;
#include<iostream>
using namespace std;

int main()
{
    char character='A';

label1:
if(character>='A')
    if(character>'Z'))
        goto label2;
    else
    {
        cout<<character<<endl;
        character++;
        goto label1;
    }

label2:
    cout<<"End"<<endl;
    return 0;
}
于 2013-01-05T21:50:02.657 に答える
2

少し遅いですが:

#include "stdafx.h"
#include<iostream>
#include <string>

using namespace std;

int main()
{
    string s("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
    if (1) goto label1;
    cout << "End" << endl;
    return 0;
label1:
    cout << s << endl;
    return 0;
}
于 2013-01-05T22:35:27.690 に答える
2

各文字を複数回印刷する理由は次のとおりです。

    cout<<character<<endl<<character++<<endl;
          ^^^^^^^^^        ^^^^^^^^^

character上記のそれぞれは、に書き込まれる結果になりcoutます。

于 2013-01-05T21:49:53.267 に答える
1

あなたのコードは2つのポイントを逃しました-

  1. 印刷していませんでしたZ
  2. 文字を2回印刷するcout<<character<<endl<<character++<<endl;

変更: if(character>='Z') -> if(character>'Z')

EDITED character ++(それはタイプミスでした) cout<<character<<endl<<character++<<endl; から-> cout<<character++<<endl;

于 2013-01-05T22:04:19.340 に答える