cout<<\项目名称:\ cout<<\项目编号:\
cout<<\取前3名还是前5名:\ for(m=0;m<5;m++) {
fread(&s[i].a[j].range[m],sizeof(int),1,fp); if(s[i].a[j].range[m]!=0)
cout<<\名次:\ fread(&s[i].a[j].mark[m],sizeof(int),1,fp); if(s[i].a[j].mark[m]!=0)
cout<<\分数:\ }
   cout<  fclose(fp);                                        //关闭文件 }   void Menu()                                         //主菜单函数                                 {   int number;  do  {    Head();      MainMenu();    cout<<\ 请选择:\  cin>>number;   switch(number)   {     case 1:                                        //输入信息     system(\    Head();      cout<<\请输入运动会各学校信息:\     InfoInput();                              //信息输入模块     fsave();                                    //保存信息     system(\    break;     case 2:                                          //输出信息      system(\    InfoOutput();                             //信息输出模块     break;     case 3:                                          //查询信息     system(\    Inquiry();                                //信息查询模块      break;     case 4:                                          //调用信息      system(\    Head();      Read();                                   //调用信息模块     system(\    system(\    break;     case 5:                                         //“关于”模块     system(\    Head();      About();                                   //“关于”界面     system(\    system(\    break;     case 6:                                        //退出系统     system(\    Head();      cout<<\谢谢使用!\    exit(0);     default:                                       //其他      cout<<\对不起,无此功能,请输入正确的功能序号!\    system(\    system(\    break;   }   }while(1);  }   void main()                                             //主函数 {                             Menu();                                             //主菜单函数 }  四、时间复杂度分析:            用户输入信息时,采用三重循环进行输入,因此信息输入函数的时间复杂度为O(N*(M+W)*k)。利用冒泡排序法进行排序,采用二重循环,时间复杂度为O(N*N)。采用顺序存储结构,信息存放在数组的相应内存单元里,因此查询函数的时间复杂度为O(1)。写信息时可以一次全部写进去,读信息时也可以一次全部读出来,因此写文件函数和读文件函数的时间复杂度都为O(1)。    B一元多项式计算  一  实验任务:  能够按照指数降序排列建立并输出多项式; 能够完成两个多项式的相加、相减,并将结果输入; 一元多项式相加实验  已知 A( x )= a0 + a1x + a2x + ?? + anx 和B(x) = b0 + b1x + b2x +?? + amx ,并在 A( x ) 和 B( x ) 中指数相差很多,求 A( x ) = A( x ) + B(x) 。  程序以以下式子为例:   A(x)=2+3x+1x3    B(x)=1+3x+2x2+2x4+12x7+32x8+42x11+2x12 二 实验要求:  在上交资料中请写明:存储结构、多项式相加的基本过程的算法(可以使用程序流程图) 、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法; 三 算法设计介绍 1.存储结构分析  根据一元多项式的特点,要表示一个多项式,只要存储第i项以及ai的值,并且如果ai为0的话,该项就不用存储了,从而减少一个存储空间。在线性表中可以通过顺序和链式存储,并用Ti表示一个数据项Ti=(ai,i)。在存储空间分配量上两种结构是一致的,但如果两多项式相加的话需要频繁的做插入操作,顺序表的结构特性决定了插入操作的时间复杂度为O(n/2),链式表的时间复杂度为O(1),并且如果存储的是一个排好序的多项式的话,不需要双向查找,因此选择单链表存储。    2.相加算法分析  首先,由于两个多项式A(x)和B(x)的指数相差非常多,因此一定要把输入的多项式按照指数i排好序,防止过高的查找时间复杂度;其次,两个AB多项式同时从head开始查找,AB指数i相同的计算相加ai值存入A表,并且回收不需要的B空间,指数不同的,B指数小的节点插到A指数大的前面。以此往后推移。其时间复杂度为o(n)。   四 附程序源代码  一元多项式验证: #include typedef struct term //项的表示,多项式的项作为LinkList的数据元素 {   float coef; //系数  int expn; //指数  struct term *next;  }term;    term* CreatPolyn(term *P,int m) // 输入m项的系数和指数,建立表示一元多项式的有序链表P  {  2 n 2 m  if(m <= 0) return NULL;   term *h = P = (term*)malloc(sizeof(term)), *q;  P->coef = 0.0;  int i;   printf(\依次输入%d个非零项,请注意输入格式,系数和指数之间要有空格,ex:2 2 3 1\\n\  for (i = 1; i <= m; ++i) // 依次输入m个非零项  {    scanf(\  if(P->coef)    q = P;    P = P->next = (term*)malloc(sizeof(term));  }   q->next = NULL;  free(P);  return h; } // CreatPolyn    term* selsort(term *h) {   term *g, *p, *q;  if(!h) return NULL;  float f;   int i, fini = 1;   for(g = h;g->next&&fini;g = g->next)  {    fini = 0;    for(p = h,q = h->next;q;p = p->next,q = q->next)    if (p->expn < q->expn)    {      f = p->coef;i = p->expn;      p->coef = q->coef;p->expn = q->expn;     q->coef = f;q->expn = i;     fini = 1;    }  }   for(g = h,p = g->next;p;)   if(g->expn==p->expn)   {     g->coef += p->coef;    g->next = p->next;    q = p;     p = p->next;    free(q);    }else if(g->next)   {     g = g->next;    p = p->next;   }    return h; }   void PrintfPoly(term *P) {   term *q = P;  if(!q)  {    putchar('0');   return;  }   if(q->coef!=1)  {    printf(\   if(q->expn==1) putchar('X');    else if(q->expn) printf(\ }   else if(!q->expn) putchar('1');  else if(q->expn==1) putchar('X');  else printf(\ q = q->next;  while (q)  {    if(q->coef > 0) putchar('+');   if(q->coef!=1)   {     printf(\    if(q->expn==1) putchar('X');     else if(q->expn) printf(\  }    else if(!q->expn) putchar('1');   else if(q->expn==1) putchar('X');   else printf(\  q = q->next;  } }   Compare(term *a, term *b) {