Không nhập được a và b từ bàn phím trong C

Em có bài tập như bên dưới nhưng khi chạy thì chỉ nhập được số điểm không thể nhập được các điểm a và b ạ.Ai xem giúp em lỗi sai ở đâu góp ý giúp em với em đang học hàm trong C ạ.
Viết chương trình thực hiện các công việc sau:

  1. Nhập vào hai dãy số thực a1, a2, … , an và b1, b2, … , bn. Coi hai dãy này là các tọa độ của một dãy n điểm M1(a1, b1), M2(a2, b2), … , Mn(an, bn).
  2. Đếm số điểm nằm trong góc phần tư thứ II.
#include<stdio.h>
#include<math.h>
struct Diem{
	float a, b;
};
void nhap(int *n, Diem d[]){
	int i;
	printf("Nhap so diem : ");
	scanf("%d", &n);
	printf("Nhap cac phan tu a \n");
	for(i=0; i<*n; i++){
		printf("a[%d] = ", i+1);
		scanf("%f", &d[i].a);
	}
	printf("Nhap cac phan tu b \n");
	for(i=0; i<*n; i++){
		printf("b[%d] = ", i+1);
		scanf("%f", &d[i].b);
	}
}
int dem(int n, Diem d[]){
	int dem=0, i;
	for(i=0; i<n; i++){
		if(d[i].a < 0 && d[i].b > 0){
			dem++;
		}
	}
}
int main(){
	Diem d[20];
	int n;
	nhap(&n, d);
	printf("co %d diem nam o goc phan tu thu 2", dem(n, d));
}

Muốn sử dụng được kiểu struct do mình tự định nghĩa bạn có 2 cách như sau:

  • struct diem d[20]
  • Định nghĩ trước:
     typedef struct {
         float a, b;
     } diem; 
    
    song rồi dùng: diem d[20];
2 Likes

Còn đây là lý do bạn không nhập được a, b. Do bạn khai báo n là con trỏ, bản thân nó là địa chỉ rồi nên bạn k cần & nữa
sửa lại thành:

scanf("%d", n);
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?