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

Đề tài: không biết sai ở đâu fix gium em với

  1. #1
    Ngày gia nhập
    11 2016
    Bài viết
    4

    Mặc định không biết sai ở đâu fix gium em với

    Tạo một danh sách liên kết gồm tên mả số , và điểm của sinh viên nhưng code bị lỗi gì khi tới chỗ vòng lập thứ hai em ko hiểu là sai ở đâu ????
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    #include <stdlib.h>
    struct list
    {
    char ten[20], MS[3];
    float diem[2];
    struct list *next;
    };
    static struct list *head;
    int n =0 ;
    void khaibao()
    {



    head =(struct list*)malloc ( sizeof *head);
    head->next=NULL;
    }

    void insert ()

    { struct list *p, *x;
    int i =0 ;
    float diem[2];
    char tmp[5];
    p=head;

    do {
    x=(struct list *) malloc ( sizeof (struct list ) );
    printf ( " nhap vao Ma so sinh vien ");
    gets(x->MS);




    printf(" \n nhap vao ten sinh vien ");
    gets( x->ten);
    printf( " \n nhap vao diem theo thu tu toan ly hoa ");
    for ( i = 0 ; i< 3 ; i++) bị lỗi bắt đầu từ đây
    { printf( " \n so thu nhat %d ", i);
    scanf( " %f",&diem[i]);
    x->diem[i]= diem[i];
    }



    gets(tmp );
    n++;


    x->next=NULL;
    p->next=x;
    p=p->next;
    }while ( strlen(x->MS));


    }

    void main ( )
    {
    khaibao();
    insert();
    getch();
    }

  2. #2
    Ngày gia nhập
    02 2014
    Nơi ở
    TP.HCM
    Bài viết
    730

    Mảng điểm chỉ có 2 phần tử trong khai báo float diem[2]
    Biến chạy : i = 0 chưa vượt biên mảng, i = 1 cũng chưa vượt biên mảng
    Nhưng i = 2 là bạn đã vượt biên mảng

    Chưa kể tới các câu lệnh khác
    Yêu mã hơn yêu em !!!

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