int student::inquire()
{   int number,i=0;
cout<<"你的学号为:";cin>>number;
for (i=0;i<q;i++)//q是总人数
{ if(stu[i].num==number){cout<<"学号:"<<stu[i].num<<endl<<"姓名:"<<stu[i].name<<endl;}}
return true;
}
或者:
int student::inquire()
{   int number,i=0;
cout<<"你的学号为:";cin>>number;
while(stu[i].num!=number)i++;
             {cout<<"学号:"<<stu[i].num<<endl<<"姓名:"<<stu[i].name<<endl;}
return true;
}生成成功了 但是运行这一块有问题 过不去
目的是为了查找到num,然后输入相关的一些列数值。不知原因谢谢回答!

解决方案 »

  1.   

    一调用这个函数 输入number后程序就自动退出了
      

  2.   

    第一个函数里q是多少?第二个函数while(stu[i].num!=number)i++;
    你的大括号打在下边,下边的函数就不是循环里的了,应该把i++放到大括号里,循环如果不打括号的话,只执行一句代码。而且逻辑也不对,你这个逻辑就是不等于的时候打印,等于的时候不打印,也没个循环结束值,逻辑有点混乱。
      

  3.   

    不懂别瞎说,while(stu[i].num!=number)i++;这样写是对的。
      

  4.   

    while(stu[i].num!=number)
    感觉像数组越界
    改成while(stu[i].num!=number || i < q)
      

  5.   

    输入前你的stu[i].num里有值吗?
      

  6.   

    我觉得你第一个Inquire没什么问题,如果学号在总人数q内,就找到相应学号然后输出并返回;如果输入的学号大于总数q,就没有输出并直接返回。但建议在找到相应学号后输出并添加break,以便跳出for循环,就不会白白执行很多次了
    但第二个Inquire因为while语句少条件,如果输入的学号大于总人数q,就肯定有问题。但是不能像10楼所说改成while(stu[i].num!=number || i < q),而应该改成
    while(stu[i].num!=number && i<q)i++;另外,我理解你如果能找到相应学号,就返回true;如果找不到,应该返回false;
    所以我将你的两个inquire改成int student::inquire()
    {
    int number,i=0;
    cout << "你的学号为:";cin >> number;
    for (i=0;i<q;i++)//q是总人数
    {
    if(stu[i].num==number)
    {
    cout << "学号:" << stu[i].num << endl << "姓名:" << stu[i].name << endl;
    break;
    }
    }
    if( i == q )
    return false;
    else
    return true;
    }int student::inquire2()
    {
    int number,i=0;
    cout<<"你的学号为:";cin>>number;
    while(stu[i].num!=number && i<q) i++;if( i < q )
    {
    cout<<"学号:"<<stu[i].num<<endl<<"姓名:"<<stu[i].name<<endl;
    return true;
    }
    else
    return true;
    }
      

  7.   

    不好意思,inquire2的最后一个return true;应该改为return false;
      

  8.   

    int i=0,NN=0;
    for (i=0;i<q+1;i++)  
    {
    if (stu[i].num==number)
    {
    cout<<"学号:"<<stu[i].num<<endl<<"姓名:"<<stu[i].name<<endl;NN=1;break;
    if(NN!=1) cout<<"no exist"<<endl;


    就可以了 呵呵 谢谢大家