C++编程练习题,不知道错在哪里,运行时出现win32未启动,实在是不知道怎么改了,求赐教?

C++编程练习题,不知道错在哪里,运行时出现win32未启动,实在是不知道怎么改了,求赐教?

问题描述:

定义students结构,包括学号和成绩,并通过键盘输入学生个数n以及n个学生的学号和成绩。从键盘输入学号,查找该学生是否在这n个学生当中。若找到该学生,则显示出相应的成绩。要求写一个函数search来完成查找功能。
提示:
(1)学号(id)、成绩(score);
(2)void search(const students *s, int n, int ID);
(3)对于n进行判断,如果小于1,则不用查找;
(4)查找要考虑找到和没找到两种情况。

#include<iostream>
#include<string>
using namespace std;
struct students
{ int id;
  double score;
};
void search(const students *s, int n, int id);
int main()
{ int i,n,id,score;
  students p[n];
  cout<<"input students' number:";
  cin>>n;
  for(i=0;i<n;i++)
  {cout<<"input id:";
   cin>>p[i].id;
  }
  for(i=0;i<n;i++)
  {cout<<"input score:";
   cin>>p[i].score;
  }
 if(n>1) search(p,n,id); 
}
void search(const students *s,int n,int id)
{ int b,i;
  students p[n];
  s=p;
  cout<<"enter the id to search:";
  cin>>b;
{
  for(i=0;i<n;i++)
  {if(s[i].id==b) 
  { cout<<"the student's score is:"<<s[i].score;} 
  }
   if(i==(n-1)) 
   cout<<"not found";
  }
}

帮你改了下,你再看看

#include<iostream> 
#include<cstring>
using namespace std;
struct students
{ int id;
  double score;
};
void search(const students *s, int n, int ID );
int main()
{ int i,id,score,n;
  cout<<"input students' number:";
  cin>>n;
  students p[n];
  for(i=0;i<n;i++)
  {cout<<"input id:";
   cin>>p[i].id;
  }
  for(i=0;i<n;i++)
  {cout<<"input score:";
   cin>>p[i].score;
  }
  cout<<"enter the id to search:";
  cin>>id;
 if(n>1) search(p,n,id); 
}
void search(const students *s,int n,int ID)
{
    int i;
{
  for( i=0;i<n;i++)
  {
    if(s[i].id==ID) 
    {
        cout<<"the student's score is:"<<s[i].score<<endl;
        break;
    }
  }
  if(i==n-1)
  {
      cout<<"not found"<<endl;
  }
}
} 

你的n应该在p[n]前输入,记住,还有你的search函数对于指针的用法有些问题,你按照我的代码看看