Xuất các sinh viên có điểm trung bình lớn hơn 5

#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100

struct DATE
{
	unsigned char ngay;
	unsigned char thang;
	int nam;
};

typedef struct ttsinhvien
{
	char ma[6];
	char hoten[31];
	char gioitinh;
	struct DATE ntn;
	char lop[8];
	float diemtrungbinh;
}sv;

void nhapsl(int &n)
{
	do
	{
		printf("nhap so luong sinh vien: ");
		scanf("%d",&n);
		if(n<0 || n>100)
		{
			printf("sai nhap lai");
		}
	}while(n<0 || n>100);
}

void nhapntn(DATE &ntn)
{
	printf("\nnhap ngay: ");
	scanf("%u",&ntn.ngay);
	printf("nhap thang: ");
	scanf("%u",&ntn.thang);
	printf("nhap nam: ");
	scanf("%d",&ntn.nam);
}

void xuatntn(DATE ntn)
{
	printf("ngay thang nam sinh: %u/%u/%d\n",ntn.ngay,ntn.thang,ntn.nam);
}

void nhap1sv(sv &x)
{
	fflush(stdin);
	printf("nhap ma sinh vien: ");
	scanf("%s",&x.ma);
	printf("nhap ho ten: ");
	fflush(stdin);
	gets(x.hoten);
	do
	{
		printf("nhap gioi tinh x=nu, y=nam: ");
		x.gioitinh=getche();
	}while(x.gioitinh!='x' && x.gioitinh!='y');
	nhapntn(x.ntn);
	printf("nhap lop: ");
	scanf("%s",&x.lop);
	printf("nhap diem trung binh: ");
	scanf("%f",&x.diemtrungbinh);
}

void xuat1sv(sv x)
{
	printf("ma so sinh vien: %s\n",x.ma);
	printf("ten sinh vien: %s\n",x.hoten);
	if(x.gioitinh=='x')
	{
		printf("gioi tinh: nu\n");
	}
	else{
		printf("gioi tinh: nam\n");
	}
	xuatntn(x.ntn);
	printf("lop: %s\n",x.lop);
	printf("diem trung binh: %0.2f",x.diemtrungbinh);
}

void nhapdssv(sv a[], int n)
{
	for(int i=0;i<n;i++)
	{
		printf("\n------------------------\n");
		printf("nhap sinh vien thu: %d\n",i+1);
		nhap1sv(a[i]);
	}
}

void xuatdssv(sv a[], int n)
{
	for(int i=0;i<n;i++)
	{
		printf("\n------------------------\n");
		printf("xuat sinh vien thu: %d\n",i+1);
		xuat1sv(a[i]);
	}
}

void diemlonhonnam(sv a[], int n)
{
	for(int i=1;i<n;i++)
	{
		if(a[i].diemtrungbinh>5)
		{
			xuat1sv(a[i]);
		}
	}
}
int main()
{
	sv a[MAX];
	int x;
	int n;
	nhapsl(n);
	nhapdssv(a,n);
	xuatdssv(a,n);
	diemlonhonnam(a,n);
	return 0;
	
}

dạ cho e hỏi sai chỗ nào ạ

@Dexter bạn có xem lại bài post chưa, format lại code để dễ nhìn hơn nhé, ngoài ra mô tả đầy đủ lỗi của bạn là gì, mong muốn kết quả như thế nào là không lỗi.

2 Likes

dạ nói chung là e bị sai phần xuất điểm trung bình lớn hơn 5 ạ mấy cái kia dài dòng thì a k cần để ý còn kết quả thì phải xuất được nhiều sinh viên chứ k phải 1

1.Bạn viết bằng C hay C++ vậy?
2. Bạn nhập bao nhiêu phần tử lớn hơn 5?
3. Vòng lặp ở hàm diemlonhonnam() sao lại chạy từ 1?

1 Like
  1. e viết bằng c
  2. e nhập 2 pt nhưng mà dù lớn hay nhỏ nó đều xuất sai ạ
  3. nhập bằng 1 hay 0 cũng ra sai ạ

dạ xin lỗi mấy a e nhìn nhầm e ra kết quả r mà tưởng sai :b

Thua!
:man_facepalming::woman_facepalming:


Bạn viết bằng C++, trong C không có truyền tham chiếu.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?