| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1700 人关注过本帖
标题:想询问一个报错,但不清楚原因,基于VC++
只看楼主 加入收藏
海潮浪帆
Rank: 2
等 级:论坛游民
帖 子:11
专家分:10
注 册:2020-2-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
想询问一个报错,但不清楚原因,基于VC++
#include <stdio.h>
#include <string.h>
#include <stdlib.h>//exit(0)

void sort(struct bz a[],int n,int m);

struct bz
{
   char no[6];
   char name[10];
   int cj[5];//total 也在
};

void main()
{
    FILE *fp;
    struct bz a[10000];
    int i,j,k,n,t,m,e;
    int b[10000];

    fp=fopen("fi.txt","r");
    if(fp==NULL)
    {
        printf("File open error.\n");
        exit(0);
    }

    i=0;
    while(!feof(fp))
    {
        fscanf(fp,"%s %s",a[i].no,a[i].name);//》》》》》空格???
         for(k=0,a[i].cj[5]=0;k<4;k++){    //0,1,2,3
            fscanf(fp,"%d",&a[i].cj[k]);
            a[i].cj[4]+=a[i].cj[k];         //4==总成绩
         }
    i++;
    }
    k=i;//k个人
    fclose(fp);
   
    //成绩读入完成
   
    for(j=0;j<5;j++){//01234.4是总成绩
        
        sort(a,k,j);//成绩比较,k是送入多少个人,j是哪一科
        b[j]=a[599].cj[j];//最后一个
        if(j<4){
            printf("科目%d的调档线是%d\n",j+1,b[j]);
        }else
            printf("总分分数线是:%d\n",b[j]);
    }
   

int sort(struct bz a[ ],int n,int m)//用来比较单独一科,n是人数,m是第几科 --------------报错;error C2143: syntax error : missing ';' before 'type'
{
    //struct bz b[1000];
    //int i,j;
    for(i=0;i<n-1;i++){
      for(j=i+1;j<n-2;j++)//next one
        if(a[i].cj[m]<a[j].cj[m]){
           a[n]=a[i];//用n作为临时变量
           a[i]=a[j];
              a[j]=a[n];
/*              b[i]=a[i];
              a[i]=a[j];
              a[j]=b[i];*/
              //a[i]<->a[j]
        }   
    }
}



请问是为什么呢?
搜索更多相关主题的帖子: for struct int 报错 sort 
2020-05-07 23:45
fulltimelink
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:171
专家分:752
注 册:2020-4-1
收藏
得分:10 
大括号不匹配
2020-05-08 01:42
海潮浪帆
Rank: 2
等 级:论坛游民
帖 子:11
专家分:10
注 册:2020-2-5
收藏
得分:0 
回复 2楼 fulltimelink
你好,能再指明一点吗?小白确实看不太懂
2020-05-08 09:10
fulltimelink
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:171
专家分:752
注 册:2020-4-1
收藏
得分:0 
回复 3楼 海潮浪帆
你在int sort函数前加个 }
另外 你声明的sort函数是void,定义的是int
sort函数里 i,j的志明也要去掉注释
2020-05-08 11:48
JabinZ
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:34
专家分:180
注 册:2020-5-7
收藏
得分:10 
1. 2. 3. 是要修改的地方
程序代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>//exit(0)
// 1. sort 函数的声明要与实现保持一致 , 把声明void改为int,或者把函数实现的 int 改为 void
int sort(struct bz a[],int n,int m); 

struct bz
{
     char no[6];
     char name[10];
     int cj[5];//total 也在
};

void main()
{
        FILE *fp;
        struct bz a[10000];
        int i,j,k,n,t,m,e;
        int b[10000];

        fp=fopen("fi.txt","r");
        if(fp==NULL)
        {
                printf("File open error.\n");
                exit(0);
        }

        i=0;
        while(!feof(fp))
        {
                fscanf(fp,"%s %s",a[i].no,a[i].name);//》》》》》空格???
                 for(k=0,a[i].cj[5]=0;k<4;k++){    //0,1,2,3
                        fscanf(fp,"%d",&a[i].cj[k]);
                        a[i].cj[4]+=a[i].cj[k];         //4==总成绩
                 }
        i++;
        }
        k=i;//k个人
        fclose(fp);
        
        //成绩读入完成
        
        for(j=0;j<5;j++){//01234.4是总成绩
                
                sort(a,k,j);//成绩比较,k是送入多少个人,j是哪一科
                b[j]=a[599].cj[j];//最后一个
                if(j<4){
                        printf("科目%d的调档线是%d\n",j+1,b[j]);
                }else 
                        printf("总分分数线是:%d\n",b[j]);
                
        }
  
} // 2. 这里少了一个大括号

// 1. sort 函数的声明要与实现保持一致 , 把声明void改为int,或者把函数实现的 int 改为 void
int sort(struct bz a[ ],int n,int m)//用来比较单独一科,n是人数,m是第几科 --------------报错;error C2143: syntax error : missing ';' before 'type'
{
        //struct bz b[1000];
        int i,j;  // 3. 这里的注释要取消
        for(i=0;i<n-1;i++){
            for(j=i+1;j<n-2;j++)//next one
                if(a[i].cj[m]<a[j].cj[m]){
                     a[n]=a[i];//用n作为临时变量
                     a[i]=a[j];
                            a[j]=a[n];
/*              b[i]=a[i];
                            a[i]=a[j];
                            a[j]=b[i];*/
                            //a[i]<->a[j]
                }
        }
    return 0;
}

2020-05-08 16:14
快速回复:想询问一个报错,但不清楚原因,基于VC++
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019505 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved