大前天的那雨吧 关注:57贴子:6,354
  • 22回复贴,共1

看看我目前写的最长的代码

只看楼主收藏回复

我越来越佩服自己了


IP属地:四川1楼2014-01-05 19:37回复
    #include <stdio.h>
    #include <stdlib.h>
    #define N 5
    float cs1=0.0,cs2=0.0,cs3=0.0,cs4=0.0;
    float ss[N]={0.0};
    int flag1=0,flag2=0;
    struct name
    { int id;
    char name[20];
    float c1;
    float c2;
    float c3;
    float c4;
    };


    IP属地:四川2楼2014-01-05 19:42
    回复
      广告
      立即查看
      void srank(float a[],int b[],int n)
      {
      int i,j,temp2;
      float temp1;
      for(i=0;i<n;i++)
      {
      for(j=i+1;j<n;j++)
      {
      if(a[i]<a[j])
      {
      temp1=a[i];
      a[i]=a[j];
      a[j]=temp1;
      temp2=b[i];
      b[i]=b[j];
      b[j]=temp2;
      }
      }
      }
      }
      void Show(char s[],int n)
      {
      FILE *fp;
      int i;
      struct name t;
      fp=fopen(s,"rb");
      printf("ID\tNAME\tCO1\tCO2\tCO3\tCO4\n");
      for(i=0;i<n;i++)
      {
      fseek(fp,sizeof(struct name)*i,SEEK_SET);
      fread(&t,sizeof(struct name),1,fp);
      printf("%-8d%-8s%.1f\t%.1f\t%.1f\t%.1f\n",t.id,t.name,t.c1,t.c2,t.c3,t.c4);
      }
      fclose(fp);
      }
      void C_Ave(char s[],int n)
      {
      FILE *fp;
      struct name t;
      int i;
      fp=fopen(s,"rb");
      for(i=0;i<n;i++)
      {
      fseek(fp,sizeof(struct name)*i,SEEK_SET);
      fread(&t,sizeof(struct name),1,fp);
      cs1+=t.c1;
      cs2+=t.c2;
      cs3+=t.c3;
      cs4+=t.c4;
      }
      printf("ITEM\tCO1\tCO2\tCO3\tCO4\n");
      printf("AVG\t%.1f\t%.1f\t%.1f\t%.1f\n",cs1/4,cs2/4,cs3/4,cs4/4);
      flag1=1;
      fclose(fp);
      }
      void S_Ave(char s[],int n)
      {
      FILE *fp;
      int i;
      struct name t;
      fp=fopen(s,"rb");
      printf("ID\tNAME\tSCORE\n");
      for(i=0;i<n;i++)
      {
      fseek(fp,sizeof(struct name)*i,SEEK_SET);
      fread(&t,sizeof(struct name),1,fp);
      ss[i]=(t.c1+t.c2+t.c3+t.c4)/4;
      printf("%-2d\t%-8s\t%.2f\n",t.id,t.name,ss[i]);
      }
      flag2=1;
      fclose(fp);
      }
      void Save(char s[],int n)
      {
      FILE *fp;
      struct name t;
      int select;
      int i;
      fp=fopen(s,"rab");
      if(flag1==1&&flag2==1)
      {
      fprintf(fp,"%f%f%f%f",cs1/4,cs2/4,cs3/4,cs4/4);
      for(i=0;i<N;i++)
      {
      fprintf(fp,"%f ",ss[i]);
      }
      printf("SAVE SUCCESSFULLY!\nNow it is:\n");
      printf("ID\tNAME\tCO1\tCO2\tCO3\tCO4\tAVG\n");
      for(i=0;i<N;i++)
      {
      fseek(fp,sizeof(struct name)*i,SEEK_SET);
      fread(&t,sizeof(struct name),1,fp);
      printf("%-8d%-8s%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",t.id,t.name,t.c1,t.c2,t.c3,t.c4,ss[i]);
      }
      printf("- \t- \t%.1f\t%.1f\t%.1f\t%.1f\t-\n",cs1/4,cs2/4,cs3/4,cs4/4);
      fclose(fp);
      }
      else
      {
      fclose(fp);
      printf("you haven't calculated the ave_score!\n");
      printf("Do you want to calculate the ave_score and then save it(1 for yes,2 for no)?\n");
      scanf("%d",&select);
      if(select==1)
      {
      C_Ave(s,n);
      S_Ave(s,n);
      Save(s,n);
      }
      }
      }
      void Rank(char s[],int n)
      {
      FILE *fp;
      struct name t;
      int b[n];
      float a[n];
      int select,i,j;
      if(flag1==1&&flag2==1)
      {
      fp=fopen(s,"rb");
      printf("Input course ID:(0 for ave_score ranking)\n");
      scanf("%d",&select);
      switch(select)
      {
      case 0:
      for(i=0;i<n;i++)
      {
      fread(&t,sizeof(struct name),1,fp);
      a[i]=(t.c1+t.c2+t.c3+t.c4)/4;
      b[i]=i;
      }
      srank(a,b,n);
      break;
      case 1:
      for(i=0;i<n;i++)
      {
      fread(&t,sizeof(struct name),1,fp);
      a[i]=t.c1;
      b[i]=i;
      }
      srank(a,b,n);
      break;
      case 2:
      for(i=0;i<n;i++)
      {
      fread(&t,sizeof(struct name),1,fp);
      a[i]=t.c2;
      b[i]=i;
      }
      srank(a,b,n);
      break;
      case 3:
      for(i=0;i<n;i++)
      {
      fread(&t,sizeof(struct name),1,fp);
      a[i]=t.c3;
      b[i]=i;
      }
      srank(a,b,n);
      break;
      case 4:
      for(i=0;i<n;i++)
      {
      fread(&t,sizeof(struct name),1,fp);
      a[i]=t.c4;
      b[i]=i;
      }
      srank(a,b,n);
      break;
      default:
      printf("Illegal input!");
      }
      printf("RANK\tID\tNAME\tSCORE\n");
      for(i=0;i<n;i++)
      {
      fseek(fp,sizeof(struct name)*b[i],SEEK_SET);
      fread(&t,sizeof(struct name),1,fp);
      printf("%-8d%-8d%-8s%.1f\n",i+1,t.id,t.name,a[i]);
      }
      fclose(fp);
      }
      else
      {
      Save(s,n);
      Rank(s,n);
      }
      }


      IP属地:四川3楼2014-01-05 19:43
      回复
        int main(void)
        {
        FILE *fp;
        int i;
        struct name stu[N]=
        {
        {1,"a",90,80,88,70},
        {2,"b",88,60,78,77},
        {3,"c",90,95,90,100},
        {4,"xueba",100,100,100,100},
        {5,"xuezha",0,0,0,0}
        };
        char name[50];
        printf("Please input the data file name:");
        scanf("%s",name);
        fp=fopen(name,"wb+");
        fwrite(&stu,sizeof(struct name),N,fp);
        fclose(fp);
        do
        {
        printf("*************MENU*****************\n");
        printf("1.Students' infomation\n");
        printf("2.course avg_score\n");
        printf("3.students' avg_score\n");
        printf("4.output into file\n");
        printf("5.cource ranking\n");
        printf("6.exit\n");
        printf("*************MENU*****************\n");
        scanf("%d",&i);
        switch(i)
        {
        case 1:
        Show(name,N);
        break;
        case 2:
        C_Ave(name,N);
        break;
        case 3:
        S_Ave(name,N);
        break;
        case 4:
        Save(name,N);
        break;
        case 5:
        Rank(name,N);
        break;
        case 6:
        break;
        default:
        printf("illegal input!\n");
        }
        } while(i!=6);
        return 0;
        }


        IP属地:四川4楼2014-01-05 19:43
        回复
          这个代码包含了生成文件的代码,如果文件已经存在了,直接把那段代码注释掉就可以了


          IP属地:四川5楼2014-01-05 19:44
          回复
            这个代码干啥的


            来自Android客户端6楼2014-01-11 12:41
            收起回复
              吧主您已无敌


              IP属地:美国7楼2015-11-20 00:35
              收起回复
                看到楼上突然觉得果然我已经不是一个理科生了


                来自Android客户端8楼2015-11-23 09:03
                收起回复
                  广告
                  立即查看
                  不懂


                  来自Android客户端9楼2015-12-07 00:22
                  回复
                    吧主,滚粗来


                    来自Android客户端10楼2015-12-11 08:14
                    回复
                      ┬─┬ ノ( ' - 'ノ)


                      IP属地:山东来自iPhone客户端11楼2015-12-29 12:37
                      收起回复