从代码顶部开始工作但令人惊讶的是最后一个cin.get(con)不等待输入并终止程序接受任何输入,为什么会发生这种情况,请指导我的代码有什么问题 -
#include<iostream.h>
#include<conio.h>
#include <string.h>
struct country
{
char country[30];
char capital[30];
float income;
};
void main()
{
country c[3];
clrscr();
for( int i=0; i<3 ; i++)
{
cout << "\n Country's name : ";
cin.ignore();
cin.getline(c[i].country, 30);
cout << "\n Country's capital :";
cin.getline(c[i].capital,30);
cout << "\n Per capita income :";
cin >> c[i].income;
}
char ch = 'y';
char cap[30];
int flag = 0;
cin.ignore();
cout << "\n Enter Capital name : ";
cin.getline(cap, 30);
for(int k=0; k<3 ; k++)
{
flag = 0;
if(strcmp(c[k].capital,cap)==0)
{
flag = 1;
}
if(flag==1)
{
cout<< "\n" << c[k].country << "\t" << c[k].capital << "\t" << c[k].income << "\n\n" ;
}
}
char con[30];
cout << "\n Enter Country name : ";
cin.getline(con,30);
for(int m=0; m<3 ; m++)
{
flag = 0;
if(strcmp(c[m].country,con)==0)
{
flag = 1;
}
if(flag==1)
{
cout << c[m].capital << "\t" << c[m].income << "\n" ;
}
}
}
答案 0 :(得分:0)
合并cin.operator<<
和getline
会导致奇怪的行为。所以,这个代码应该改变
cout << "\n Country's capital :";
cin.getline(c[i].capital,30);
cout << "\n Per capita income :";
cin >> c[i].income;
可能
cout << "\n Country's capital :";
cin.getline(c[i].capital,30);
char buf[50]; //I don't know how long your floats are
cout << "\n Per capita income :";
cin.getline(buf);
c[i].income = atof(buf); //#include <cstdlib>