Tớ thấy chạy bình thường mà.
Có lỗi gì đâu?
Bạn thử xem lại bộ compile của bainj xem
Have fun.
Bài dưới đây là nhập vào danh sách SV rồi in ra ds vừa nhập,sau đó tìm sv có điểm TB max,min rùi in ra thông tin của sv đó.
Ko có lỗi nhưng compile bị lỗi này:
File caused a Stack Fault in module File.EXE at 0001:352E
Choose close.File will close.
Help nha!!!Code:#include <stdio.h> #include <conio.h> #include <string.h> typedef struct { char ht[30]; char qq[50]; int gt,ns; // Gioi tinh Nam:Nu = 1:0 float dtb; } sv; void nhap(sv &x); void inds(sv a[]); void sxDTB(int &n,sv a[]); void nhap(sv &x) { printf ("\nNhap ho ten:");gets(x.ht); printf ("\nNhap que quan");gets(x.qq); printf("\nNhap nam sinh:");scanf("%d",&x.ns); printf ("\Nhap diem trung binh:");scanf ("%f",&x.dtb); printf ("\nNhap gioi tinh (Nam-Nu) = 1-0:"); scanf ("%d",&x.gt); } void inds(sv x) { printf("Danh sach SV:"); printf("\nHo ten: %s",x.ht); printf("\nQue quan: %s",x.qq); printf("\nNam sinh: %d",x.ns); printf("\nDiem trung binh: %.2f",x.dtb); printf("\nGioi tinh:"); (x.gt==1)?printf("Nam"):printf("Nu"); } void sxDTB(int &n,sv a[]) // giải thuật Bubble sort { int i,j; sv t; for (i=0;i<n-1;i++) for (j=i+1;j<n;j++) if (a[i].dtb<a[j].dtb) { t=a[i]; a[i]=a[j]; a[j]=t; } } void main() { sv a[60]; int n; printf("Nhap so luong sv:");scanf("%d",&n); for (int i=0;i<=n;i++) nhap(a[i]); for (int j=0;j<=n;j++) inds(a[j]); sxDTB(n,a); printf("SV co diem trung binh cao nhat:"); inds(a[0]); printf("SV co diem trung binh thap nhat:"); inds(a[n]); getch(); }
Tớ thấy chạy bình thường mà.
Có lỗi gì đâu?
Bạn thử xem lại bộ compile của bainj xem
Have fun.
Chạy bình thường nhưng mà ở chỗ nhập quê quán và họ tên nó chỉ nhận 1 trong 2 giá trị phải ko?printf ("\nNhap ho ten:");gets(x.ht);
printf ("\nNhap que quan");gets(x.qq);
printf("\nNhap nam sinh:");scanf("%d",&x.ns);
printf ("\Nhap diem trung binh:");scanf ("%f",&x.dtb);
printf ("\nNhap gioi tinh (Nam-Nu) = 1-0:");
Ban thêm vào fflush(stdin);
giữa 2 dòng là được
printf ("\nNhap ho ten:");
fflush(stdin);
gets(x.ht);
printf ("\nNhap que quan");
fflush(stdin);
gets(x.qq);
fflush(stdin);
lệnh đó có tác dụng gì vậy?Thông cảm cho tại hạ nông cạn
Nhưng khi thêm vào thì vẫn bị báo lỗi thế! Compile = Borland C++ 3.1
Đã được chỉnh sửa lần cuối bởi ladykiller : 16-05-2007 lúc 10:37 PM.
fflush(stdin) là hàm dùng để làm sạch bộ đệm. Khi sử dụng hàm scanf hoặc là gets, sẽ nhập vào chuỗi hoặc kí tự và phím ENTER, mã enter như là kí tự '\n' sẽ bị loại ra khỏi chuỗi hoặc kí tự đó, nó bị loại (khỏi chuỗi) nhưng chưa mất, nó vẫn còn nằm trong bộ đệm bàn phím (stdin), đến hàm scanf hoặc gets được gọi lần tiếp theo thì nó bị trôi đi (coi như đã nhập - kí tự '\n') nhưng thực chất là chưa nhập vào cho biến cần thiết.
Có thể sử dụng thêm đặc tả * để có tác dụng tương tự: scanf("%*c",&var);
thanks!!!!
nhưng ct của tui vẫn bị error khi compile???