Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Ghi vào file nhị phân danh sách N sinh viên đã nhập?

  1. #1
    Ngày gia nhập
    12 2011
    Bài viết
    1

    Mặc định Ghi vào file nhị phân danh sách N sinh viên đã nhập?

    Thông tin của mỗi sinh viên bao gồm:
    - Mã sinh viên: xâu gồm 10 ký tự
    - Họ tên: xâu có không quá 30 ký tự
    - Tuổi: số nguyên
    - Điểm trung bình: số thực có 1 chữ số sau dấu phẩy.
    - Xếp loại: Giỏi (G) nếu điểm trung bình ≥ 8, Khá (K) nếu điểm trung bình ≥ 6,5, Đạt (TB) nếu điểm trung bình ≥ 5, yếu (Y) nếu điểm trung bình < 5.
    Hãy viết chương trình trên C thực hiện các yêu cầu sau:
    a) Nhập vào từ bàn phím số N và danh sách thông tin của N sinh viên?
    b) Ghi vào file nhị phân SV.DAT danh sách N sinh viên đã nhập?
    c) Xuất ra màn hình thông tin của N sinh viên đọc từ file nhị phân SV.DAT theo thứ tự giảm của điểm trung bình?

    đây là code của em nhưng em ko hiểu chỗ ý b anh chị giúp đỡ em sửa lại
    chương trình chạy trên DevC

    Code:
    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    main()
    {     int n,i,j,k;
          printf("Nhap vao so sinh vien N="); scanf("%d",&n);
          struct sinhvien
          { char MSV[10],hoten[30],xeploai[3];
            int tuoi;
            float diem;
          };
          sinhvien sv[50];
          FILE *f;
          f=fopen("SV.DAT","wt");
          fwrite(&n,sizeof(int),1,f);
          for(i=0;i<n;i++)
         { 
           printf("Nhap ma sinh vien thu %d:",i+1); fflush(stdin); gets(sv[i].MSV);
           printf("Nhap ho ten sinh vien:"); fflush(stdin);  gets(sv[i].hoten);
           printf("Nhap tuoi:"); fflush(stdin); scanf("%d",&sv[i].tuoi);
           printf("Nhap diem:"); fflush(stdin); scanf("%f",&sv[i].diem);
           if (sv[i].diem>=8) strcpy(sv[i].xeploai,"G");
           if ((sv[i].diem>=6.5)&&(sv[i].diem<8)) strcpy(sv[i].xeploai,"K");
           if ((sv[i].diem<6.5)&&(sv[i].diem>=5)) strcpy(sv[i].xeploai,"TB");
           if (sv[i].diem<5) strcpy(sv[i].xeploai,"Y");
           fwrite(&sv[i],sizeof(sinhvien),1,f);
           }
           fclose(f);
          f=fopen("SV.TXT","rt");
          fread(&n,sizeof(int),1,f);
          for(i=0;i<n;i++)
          fread(&sv[i],sizeof(sinhvien),1,f);                
          float tg;
          for(i=0;i<n-1;i++)
           for(j=i+1;j<n;j++)
            if(sv[i].diem<sv[j].diem)
            {tg=sv[i].diem;
            sv[i].diem=sv[j].diem;
            sv[j].diem=tg;}
            for(i=0;i<n;i++)
          printf("%5s %5s %5d %5.1f %5s\n",sv[i].MSV,sv[i].hoten,sv[i].tuoi,sv[i].diem,sv[i].xeploai);
     getch();
    }

  2. #2
    Ngày gia nhập
    10 2011
    Bài viết
    552

    NHìn cái code quen quen .. cái chỗ đổi chỗ 2 sinh viên trong công việc sắp xếp ấy.
    Có 1 bạn hỏi ngay cái code đổi chỗ đó rồi (ko biết có phải bạn ko). Code đó sai bản chất.

    Còn việc "ý b" Thì nó như thế này: Đọc trong sách ý, cái phần xuất nhập FILE nó có 2 kiểu là kiểu TEXT và kiểu Nhị phân.
    Đọc lại phần nhị phân đó 1 lần nữa là hiểu.
    Um Mani Padme Hum...!!

Các đề tài tương tự

  1. Nhập Danh sách sinh viên, sắp xếp theo điểm của SV và in danh sách.
    Gửi bởi ltqqn93 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 6
    Bài viết cuối: 15-04-2013, 08:38 PM
  2. Quản lí sinh viên bằng stack dùng danh sách liên kết. Làm sao để nhập nhiều sinh viên?
    Gửi bởi hoainamken trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 24-08-2011, 10:34 AM
  3. Bài tập C Code về tệp/file trong C | Tìm và in danh sách sinh viên từ file?
    Gửi bởi hongchuong945 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 18
    Bài viết cuối: 06-05-2011, 01:22 PM
  4. Lập trình C | cách đọc danh sách sinh viên trong file Text
    Gửi bởi nkchicu1612 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 9
    Bài viết cuối: 11-11-2010, 06:11 PM
  5. Danh sách liên kết, code nhập danh sách sinh viên có lỗi làm sao sửa?
    Gửi bởi acmilan trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 10-04-2009, 08:24 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn