m0_73902762 2023-04-20 15:07 采纳率: 100%
浏览 28
已结题

不知道为什么一直没有输出

#include<stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
    char k;
    char time[3];
    int jlzs;
    short zchangdu;
    short jlchangdu;
    char empty[20];
}
E;
typedef struct{
    char name[10];
    char k1;
    char lx;
    int begin;
    char kuandu;
    char weishu;
    char empty1[14];
}
F;
typedef struct{
    char sname[15];
    float math;
    float english;
    float computer;
    float zongfen;
}
STU;
int main(){
    FILE *p;
    E e;
    F f[5];
    STU s[101]={
    0}
    ;
    int i,j,n,zds;
    char flag,fen[10],s1name[15];
    scanf("%d",&n);
    if(n==1)    {
        if((p=fopen("aaa.dic","rb"))==NULL)        exit(1);
    }
    if(n==2)    {
        if((p=fopen("bbb.dic","rb"))==NULL)        exit(1);
    }
    if(n==3)    {
        if((p=fopen("ccc.dic","rb"))==NULL)        exit(1);
    }
    fread(&e,32,1,p);
    fseek(p,e.zchangdu,1);
    zds=(e.zchangdu-33)/32;
    for(i=0;i<zds;i++)        {
        fread(f,32,1,p);
        if(strcmp(f[0].name,"name")==0)                {
            f[1]=f[0];
        }
        if(strcmp(f[0].name,"math")==0)               {
            f[2]=f[0];
        }
        if(strcmp(f[0].name,"english")==0)                {
            f[3]=f[0];
        }
        if(strcmp(f[0].name,"computer")==0)                {
            f[4]=f[0];
        }
    }
    int m=0;
    for(i=0;i<e.jlzs;i++)        {
        fread(&flag,1,1,p);
        if(flag=='*')               {
            fseek(p,e.jlchangdu-1,1);
            continue;
        }
        fseek(p,f[1].begin-1,1);
        fread(s1name,f[1].kuandu,1,p);
        s1name[f[1].kuandu]=0;
        for(j=f[1].kuandu-1;j>-1;j--)               {
            if(s1name[j]==' ')                       s1name[j]==0;
            else                       break;
        }
        strcpy(s[m].sname,s1name);
        fseek(p,f[2].begin-f[1].begin-f[1].kuandu,1);
        fread(fen,f[2].kuandu,1,p);
        s[m].math=(float)atof(fen);
        fseek(p,f[3].begin-f[2].begin-f[2].kuandu,1);
        fread(fen,f[3].kuandu,1,p);
        s[m].english=(float)atof(fen);
        fseek(p,f[4].begin-f[3].begin-f[3].kuandu,1);
        fread(fen,f[4].kuandu,1,p);
        s[m].computer=(float)atof(fen);
        s[m].zongfen=s[m].math+s[m].english+s[m].computer;
        m++;
        fseek(p,e.jlchangdu-f[4].begin-f[4].kuandu,1);
    }
    for(j=0;j<m;j++)    for(i=0;
    i<m;
    i++)    {
        if(s[i].zongfen<s[i+1].zongfen)                {
            s[100]=s[i];
            s[i]=s[i+1];
            s[i+1]=s[100];
        }
        if(s[i].zongfen==s[i+1].zongfen)                {
            if(s[i].english<s[i+1].english)                {
                s[100]=s[i];
                s[i]=s[i+1];
                s[i+1]=s[100];
            }
        }
    }
    for(i=0;i<m;i++)    {
        printf("%-10s,%4.1f,%4.1f,%4.1f,%5.1f",s[i].sname,s[i].math,s[i].english,s[i].computer,s[i].zongfen);
    }
    fclose(p);
    return 0;
}


  • 写回答

2条回答 默认 最新

  • 喝茶品人生 2023-04-20 15:24
    关注

    循环条件有点问题,i<m改成i<m-1

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月29日
  • 已采纳回答 4月21日
  • 创建了问题 4月20日

悬赏问题

  • ¥15 数据量少可以用MK趋势分析吗
  • ¥15 使用VH6501干扰RTR位,CANoe上显示的错误帧不足32个就进入bus off快慢恢复,为什么?
  • ¥15 大智慧怎么编写一个选股程序
  • ¥100 python 调用 cgps 命令获取 实时位置信息
  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中