2017-09-21 1 views
-6

char[]配列を使用してstd::cinから文字を読み取ろうとしています。私はそれがstd::cinから配列を認識していない出力char型配列を使用している

Enter your age in years: 
19 
Enter your name in years: 
Your age in months is: 228 
Your name is: 

として何を得る

#include <iostream> 
#include <conio.h> 
#include <iomanip> 

using namespace std; 

int main() {  
    int age, years; 
    char name[20]; 

    cout << "Enter your age in years: " << endl; 

    cin >> years; 
    cout << "Enter your name in years: " << name[15] << endl; 
    age = years * 12; 

    cout << " Your age in months is: " << age << endl; 

    cout << "Your name is: " << name[15] << endl; 

    return 0; 
} 

そしてここに:ここで

は単純なプログラムです。

誰でも手助けできますか?

+2

'' cin'で 'name'を使用せず、' cout'でのみ使用します。また、 'name [15]'は 'name'の1文字です。全体の名前を表示するには 'cout << name'を使います。 –

答えて

1
#include <iostream> 
#include <conio.h> 
#include <iomanip> 

using namespace std; 

int main(){ 
    int age , years ; 

    char name[20]; 

    cout <<"Enter your age in years: "<< endl; 
    cin >> years; 

    cout <<"Enter your name in years: " <<endl; 
    cin >> name; 
    age = years*12; 
    cout << " Your age in months is: " << age <<endl; 
    cout << "Your name is: "<< name <<endl; 

    return 0; 
} 

あなたのコードを持つ2つの違いがあります:私はあなたが< < COUT

を考えたと仮定してい

cin << name; 
(...) 
cout << name << endl; 

< <名[15 "あなたの名前を入力しますが" ] < <エンド;

入力を求めます。これはcoutの機能ではありません。 Coutはコンソール上のものを表示しますが、入力を求めません。それはcinの仕事です。

また、[15]を配列名の後に置かないと、配列の15番目の文字が出力されます。入力された名前が長さ15に達していない限り、ガベージ文字になります。

0
int age, years; 
char name[20]; 
cout << "Enter your age in years: " << endl; 
cin >> years; 
cout << "Enter your name in years: " << endl; 
age = years * 12; 
cin >> name; 
cout << " Your age in months is: " << age << endl; 
cout << "Your name is: " << name << endl; 
cin.get(); 
+2

通常、匿名コードの行を単にポストするのではなく、解決策を説明する方がいいです。 [良い答えを書くにはどうすればいいですか]と[コードベースの回答を完全に説明する](https://meta.stackexchange.com)を読むことができます。/questions/114762/explain-entire-%E2%80%8C%E2%80%8Bcode-based-answers) –

関連する問題