⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 syi.c

📁 C语言程序设计源程序!实现学生的输入
💻 C
字号:
#include<stdio.h>
#define N 10

struct student    /*声明结构体类型名student*/
{char num[10];         /*学号*/
 char name[8];         /*名字*/
 int score[3];         /*两科成绩*/
 int credit[2];        /*两科学分*/
 float ave;            /*平均成绩*/
}stu[10],temp;
main()
{                 /*输入数据函数(未调用可以不必进行输入)*/
 fun1();
 fun2();
}

input()           /*输入数据函数*/
{int i,j,k,sum;
 FILE * fp;
 for(i=0;i<10;i++)
   {printf("\nInput score of student%d:\n",i+1);
    printf("NO.:");
    scanf("%s",stu[i].num);
    printf("name:");
    scanf("%s",stu[i].name);
    sum=0;
    for(j=0;j<2;j++)
      {printf("score %d:",j+1);
       scanf("%d",&stu[i].score[j]);
       sum+=stu[i].score[j];
      }
    stu[i].ave=sum/2.0;           /*求学生成绩的平均分*/
    for(k=0;k<2;k++)
      {printf("credit %d:",k+1);
       scanf("%d",&stu[i].credit[k]);
      }
   }
 fp=fopen("stud","w");
 for(i=0;i<10;i++)
   if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)      /*储存数据到文件*/
     printf("File write error\n");
 fclose(fp);
 fp=fopen("stud","r");
 printf("NO.\tName\tMath\tP.E\tCredit1\tCredit2\tAVE\t\n");
 for(i=0;i<10;i++)
   {fread(&stu[i],sizeof(struct student),1,fp);
    printf("%s\t%s\t%d\t%d\t%d\t%d\t%6.2f\t\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].credit[0],stu[i].credit[1],stu[i].ave);}
}

fun1()          /*排序的函数*/
{
 FILE * fp;
 int i,j,k,n;
 if ((fp=fopen("stud","r"))==NULL)         /*打开文件*/
   {printf("Can not open the file.");
    exit(0);
   }
 printf("\nfile'stud':");
 for(i=0;fread(&stu[i],sizeof(struct student),1,fp)!=0;i++)
   {printf("\n%8s%8s",stu[i].num,stu[i].name);
    for(j=0;j<2;j++)
      printf("%8d",stu[i].score[j]);
    for(k=0;k<2;k++)
      printf("%8d",stu[i].credit[k]);
    printf("%10.2f",stu[i].ave);
   }
 fclose(fp);
 n=i;
 for(i=0;i<n;i++)
   for(j=i+1;j<n;j++)
     if(stu[i].score[0]<stu[j].score[0])
       {temp=stu[i];
        stu[i]=stu[j];
        stu[j]=temp;
       }
 printf("\nnow:");
 printf("\nNO.\tName\tMath\tP.E\tCredit1\tCredit2\t AVE\t\n");
 fp=fopen("score","w");
 for(i=0;i<n;i++)
   {fwrite(&stu[i],sizeof(struct student),1,fp);     /*储存已排序的数据到文件*/
    printf("%s\t%s\t%d\t%d\t%d\t%d\t%6.2f\t\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].credit[0],stu[i].credit[1],stu[i].ave);
   }
 fclose(fp);
}

fun2()          /*查询成绩的函数*/
{
 FILE * fp;
 int i,j,k,n,top,bott,mid,loca,flag=1,sign=1;
 char c;
 void search(int score[0]);
 if ((fp=fopen("score","r"))==NULL)
   {printf("Can not open the file.");
    exit(0);
   }
 printf("\nfile'score':");
 for(i=0;fread(&stu[i],sizeof(struct student),1,fp)!=0;i++)
   {printf("\n%8s%8s",stu[i].num,stu[i].name);
    for(j=0;j<2;j++)
      printf("%8d",stu[i].score[j]);
    for(k=0;k<2;k++)
      printf("%8d",stu[i].credit[k]);
      printf("%10.2f",stu[i].ave);
   }
 fclose(fp);
 flag=1;
 while(flag)
   {printf("\nInput score to look for:");
    scanf("%d",&n);
    loca=0;
    top=0;
    bott=N;
    if((n<stu[0].score[0])||(n>stu[9].score[0]))
      loca=-1;
    while((sign==1)&&(top<=bott))
      {mid=(bott+top)/2;
       if(n==stu[mid].score[0])
         {loca=mid;
          printf("Find %d,its position is %d \n",n, loca+1);
          sign=0;
         }
       else if(n<stu[mid].score[0])
              bott=mid-1;
            else
         top=mid+1;
      }
    if(sign==1||loca==-1)
      printf("%d is not find.\n",n);
    printf("Continue or not(Y/N)?");
    scanf(" %c",&c);
    if(c=='N'||c=='n')
      flag=0;
   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -