#include<iostream>
#include<iomanip>
#include<string>
#define N 3
using namespace std;
struct student
{
string name;
char id;
string gender;
union
{
char vision;
struct
{
float weight;
float height;
}figue;
}body;
}idcard[N];
main()
{
int i;
for(i=0;i<N;i++)
{
cout<<"姓名:";
cin>>idcard[i].name;
cout<<"性别:";
cin>>idcard[i].gender;
cout<<"学号:";
cin>>idcard[i].id;
if(idcard[i].gender=="男")
{
cout<<"视力情况:";
cin>>idcard[i].body.vision;
}
if(idcard[i].gender=="女")
{
cout<<"身高:";
cin>>idcard[i].body.figue.height;
cout<<"体重:";
cin>>idcard[i].body.figue.weight;
}
cout<<endl<<endl;
}
}
看起来你是想输入一个字符串。但是,char型是字符,而不是字符串。你需要把char id改为char id[21](数字可以按需要修改,记得要比可能的最大值多1),或者改成string id也行。
关于为何if判断出错:char型只接受一个字符。你输入20210210后,只有字符2被送入了id成员。循环体开始下一轮后,cin把0210210都作为姓名送入了指定位置,所以你的程序直接跑到了性别输入那里。
char id; 改为 int id; 即可