首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

不知道什么东东,小弟我调了两三天了

2012-03-17 
不知道什么错误,我调了两三天了大家帮帮我啊`这里作业,我郁闷死了`调了很多天了`#include stdio.h#inclu

不知道什么错误,我调了两三天了
大家帮帮我啊`这里作业,我郁闷死了`调了很多天了`
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define   maxsize   20

typedef   struct   mark{
char   schoolname[10];
int   score;

}Mark;
typedef   struct   item   {
char   itemname[10];
int   itnum;   //项目编号
char   itsex;   //项目类男,女
Mark   amark[3];
}Item;

typedef   struct   school{
char   schoolname[10];
int   schoolnumber;
int   score;
int   mscore;
int   wscore;
}School;

int   menu(){
        int   selection=0;
        printf( "==============================================\n ");
printf( "退出重新选择请重新输入(0):\n ");
        printf( "要按学校编号输出请输入(1):\n ");
        printf( "要按学校总分排序输出请输入(2):\n ");
printf( "要按男子团体总分排序输出请输入(3):\n ");
        printf( "要按女子团体总分排序输出请输入(4):\n ");
printf( "要查询指定学校的指定项目请输入(5):\n ");
printf( "要按项目编号查询取得前三的学校请输入(6):\n ");
        printf( "要输入新项目请输入(7):\n ");
        scanf( "%d ",&selection);
        if(i> =0&&i <=7)
return   i;
else{
      printf( "您选择的选择有误,请重新输入!\n ");
                return   -1;
}

void   copy_schoolname(School   *as,Item   *pitem   ,int   i1,int   j1,   int   ns1){
        int   j;
j=0;
while(pitem[i1].itemname[j]!= '/0 '){
        as[ns1].schoolname[j]=pitem[i1].amark[j1].schoolname[j];
                j++;
}
}  

int   input_to_computer(Item   *pitem,int   *pc){  
        int   pos=0;
char   sx;
        printf( "请输入项目类别(男项目:m/女项目:w):   \n ");
        scanf( "%c ",&sx);
//scanf( "%c ",&sx);                                                                                                                                                 //@!#$#@$
while   ((sx!= 'w ')   &&   (sx!= 'W ')   &&   (sx!= 'm ')   &&   (sx!= 'M ')){
printf( "输入有误,请重输入!(男项目:m/女项目:w):\n ");
        scanf( "%c ",&sx);
}
pos=pc[0]++;
pitem[pos].itsex=sx;
if   ((sx== 'm ')   ||   (sx== 'M ')){
        pc[1]++;
}else{
        pc[2]++;
}
printf( "请输入要存储的项目名:   \n ");
scanf( "%s ",&(pitem[pos].itemname));
        printf( "请输入第一名的学校的校名:   \n ");
scanf( "%s ",&(pitem[pos].amark[0].schoolname));


pitem[pos].amark[0].score=5;
        printf( "请输入第二名的学校的校名:   \n ");
scanf( "%s ",&(pitem[pos].amark[1].schoolname));
pitem[pos].amark[1].score=3;
printf( "请输入第三名的学校的校名:   \n ");
        scanf( "%s ",&(pitem[pos].amark[2].schoolname));
pitem[pos].amark[2].score=2;
        pitem[pos].itnum=pc[0];   //用于自动生成项目编号,项目数的增加与项目的编号一致
return   pc[0];
}

int   read_data_from_file(Item   *   pitem,   int   *pc){
int   pos;
FILE   *fp;
fp=fopen( "e:\\scoreStat.txt ", "r ");
if   (fp==NULL){
                        return   0;

}
fscanf(fp, "%d%d%d\n ",&(pc[0]),   &(pc[1]),   &(pc[2]));
                for(pos=1;   pos <=pc[0];   pos++){
fscanf(fp, "%s%d%c%s%d%s%d%s%d\n ",&(pitem[pos].itemname),   &(pitem[pos].itnum),   &(pitem[pos].itsex),   \
&(pitem[pos].amark[0].schoolname),   &(pitem[pos].amark[0].score),   \
&(pitem[pos].amark[1].schoolname),   &(pitem[pos].amark[1].score),   \
&(pitem[pos].amark[2].schoolname),   &(pitem[pos].amark[2].score));

}    
        fclose(fp);
return   pc[0];
}

void   input_to_file(int   *pc,   Item   *pitem){
        FILE   *fp;
fp=fopen( "e:\\scoreStat.txt ", "w ");
if   (fp==NULL){
do{  
clearerr(fp);
fp=fopen( "e:\\scoreStat.txt ", "w ");
}while(fp!=NULL);
}
fprintf(fp, "%d%d%d\n ",pc[0],   pc[1],pc[2]);
for(int   i=1;   i <=pc[0];   i++){
        fprintf(fp, "%s%d%c%s%d%s%d%s%d\n ",pitem[i].itemname,   pitem[i].itnum,   pitem[i].itsex,   \
        pitem[i].amark[0].schoolname,   pitem[i].amark[0].score,   \
        pitem[i].amark[1].schoolname,   pitem[i].amark[1].score,   \
        pitem[i].amark[2].schoolname,   pitem[i].amark[2].score);
}
}
//   通过寻找项目里面的学校名来建立School
int   build_school(School   *as,Item   *pitem,   int   rc,int   mc,   int   wc){                                                                       //从as[1]开始存放
int   i,j,k,ns,nss;
nss=0;   //学校的个数
for(i=1;   i <=rc;   i++){
                for(j=0;   j <=2;   j++){      
ns=nss;
if(ns==0){
nss++;
copy_schoolname(as,pitem,   i,   j,   nss);     //
                                as[nss].schoolnumber=nss;
as[nss].score=pitem[i].amark[j].score;
if((pitem[i].itsex== 'm ')   ||   (pitem[i].itsex== 'M ')){
                                        as[nss].mscore=pitem[i].amark[j].score;//


}else{
        as[nss].wscore=pitem[i].amark[j].score;
}

ns=nss;
}else{
        while(ns> 0){    
        k=0;
        k=strcmp(as[ns].schoolname,   pitem[i].amark[j].schoolname);
        if   (k==0){   //已经找过并建立了School的,只记录项目名和加分数
                as[nss].score+=pitem[i].amark[j].score;
                if((pitem[i].itsex== 'm ')   ||   (pitem[i].itsex== 'M ')){
                                                                                as[nss].mscore+=pitem[i].amark[j].score;//
                }else{
                        as[nss].wscore+=pitem[i].amark[j].score;
                }
                break;
        }
        ns--;
        }
        if(ns==0){       //比较,没有找到相同的`,未建立
        nss++;
        copy_schoolname(as,pitem,   i,   j,   ns);//School   *as,   int   i1,int   j1,   int   ns1
        as[nss].schoolnumber=nss;
        as[nss].score+=pitem[i].amark[j].score;
        if((pitem[i].itsex== 'm ')   ||   (pitem[i].itsex== 'M ')){
                                                as[nss].mscore+=pitem[i].amark[j].score;//
        }else{
                as[nss].wscore+=pitem[i].amark[j].score;
        }
      }
}
}
}
return   nss;       //     返回学校数                                                                                                                               @@@
}


[解决办法]
出错是什么错误?把错误提示发上来
[解决办法]
首先改正两个错误:
int menu()中,函数结束处差一个后}


if(i> =0&&i <=7)
return i;

应为
if(selection> =0&&selection <=7)
return selection;
[解决办法]
这题..我好像帮一个人作过.
是一个学校的作业设计.

[解决办法]
断点+单步,


按照各个函数调试。

热点排行