程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言問答 >> C語言語言語言

C語言語言語言

編輯:C語言問答

C語言語言語言

20

#include<stdio.h>
#include<string.h>
#define XS 3
struct student
{ char xuehao[10];
  char name[10];
  int  a;
  int  b;
  int  c;
  int  pj;
}stud[XS+1];                
 void save()                  /*存儲*/
 { FILE * fp;
  int i;
  if((fp=fopen("stu.dat","wb"))==NULL)
  {printf("不能打開\n");
  return;
  }
  for(i=0;1<XS;i++)
  if (fwrite(&stud[i],sizeof(struct student),1,fp)!=1)
   printf("文件錯誤\n");
  fclose(fp);
 };
 void main()                 /*輸入和處理*/
 { int i;
  int  j;
  printf("請輸入十名學生的學號,姓名,三門課的成績(請依次輸入):\n");
  for(i=0;i<XS;i++)
  {scanf("%s%s%d%d%d%d%",&stud[i].xuehao,
  stud[i].name,&stud[i].a,&stud[i].b,&stud[i].c);
  stud[i].pj=(stud[i].a+stud[i].b+stud[i].c)/3;}
printf("ddd");
  save();
  for(j=0;j<XS;j++)
  { for(i=1;i<XS;i++)
  if(stud[j].pj<stud[i].pj)
  {strcpy(stud[i].xuehao,stud[XS+1].xuehao);
      strcpy(stud[i].name,stud[XS+i].name);
   stud[i].a=stud[XS+i].a;
   stud[i].b=stud[XS+i].b;
   stud[i].c=stud[XS+i].c;
   stud[i].pj=stud[XS+i].pj;

      strcpy(stud[j].xuehao,stud[i].xuehao);
      strcpy(stud[j].name,stud[i].name);
   stud[j].a=stud[i].a;
   stud[j].b=stud[i].b;
   stud[j].c=stud[i].c;
   stud[j].pj=stud[i].pj;

     strcpy(stud[XS+i].xuehao,stud[j].xuehao);
   strcpy(stud[XS+i].name,stud[j].name);
   stud[XS+i].a=stud[j].a;
   stud[XS+i].b=stud[j].b;
   stud[XS+i].c=stud[j].c;
   stud[XS+i].pj=stud[j].pj;};};
  
for(i=0;i<XS;i++)
printf("%s%s%d%d%d%d",stud[i].xuehao,stud[i].name,stud[i].a,stud[i].b,stud[i].c,stud[i].pj);

 }  

1、  有10個學生,每個學生有3門課程成績,從鍵盤輸入以上信息(包括學生學號、姓名、三門課程成績),計算出平均成績,將所有數據以空格分開,與平均成績一並按每人一行的格式存入文件stu.dat中。並按平均成績由高到低輸出到屏幕(要求有學號、平均成績、排名序號。讀寫文件和排序輸出必須使用函數)。

 

改錯    急急急!!

最佳回答:

看了你的程序,感覺走了很多彎路,現把我修改後的程序,你看看能否幫上你;

#include<stdio.h>
#include<string.h>
#include <stdlib.h>
#define XS 5
struct student
{
   char xuehao[10];
   char name[10];
   int  a;
   int  b;
   int  c;
   int  pj;
}stud[XS+1]; 
void save()                  /*存儲*/
 {
 FILE * fp;
  int i;
  if((fp=fopen("stu.dat","wb"))==NULL)
  {
   printf("不能打開\n");
   return;
  }
   for(i=0;i<XS;i++)
   if (fwrite(&stud[i],sizeof(struct student),1,fp)!=1)
    printf("文件錯誤\n");
   fclose(fp);
   printf("保存成功\n");
 };
 void main()                 /*輸入和處理*/
 {
  int i;
  int  j; 
  printf("請輸入十名學生的學號,姓名,三門課的成績(請依次輸入):\n");
  for(i=0;i<XS;i++)
  {
   printf("請輸入第%d個學生的資料",i+1);
   printf("學號:");
   scanf("%s",&stud[i].xuehao);
   printf("姓名:");
   scanf("%s",stud[i].name);
   printf("成績1:");
   scanf("%d",&stud[i].a);
   printf("成績2:");
   scanf("%d",&stud[i].b);
   printf("成績3:");
   scanf("%d",&stud[i].c);  
   stud[i].pj=(stud[i].a+stud[i].b+stud[i].c)/3;
   system("cls");
  }
  save();
  for(i=0;i<XS-1;i++)
  {
   int max=i;
   for(j=i;j<XS;j++)
   {
    if(stud[j].pj>stud[max].pj)
    {
     max = j;
    }
   }
   if (max!=i)
    {
    struct student tempstu;
    tempstu = stud[i];
    stud[i] = stud[max];
    stud[max] = tempstu;
   }
 
  };
  for(i=0;i<XS;i++)
  {
   printf("第%d名:",i+1);
   printf("%6s%6s%5d%5d%5d%5d\n",stud[i].xuehao,stud[i].name,stud[i].a,stud[i].b,stud[i].c,stud[i].pj);
  }
 
 }  

追問:

謝謝幫忙  多謝了

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved