30/09/2018, 21:29

Thắc mắc bài tập struct

e co 1 bai giong vay nhung mai chua xua dc cho sai. m.n giup e voi

  • Yêu cầu người dùng đăng nhập vào một số nguyên dương n với 5<=n<=20 (có kiểm tra tính hợp lệ của giá trị được nhập vào, nếu giá trị nhập vào không thỏa mãn điều kiện thì yêu cầu nhập lại).
  • Yêu cầu người dùng nhập vào thông tin của n sinh viên gồm những mục sau:
    • Họ và tên: có kiểu dữ liệu là xâu ký tự gồm không quá 30 ký tự.
    • Điểm thi môn thứ nhất: là một số nguyên có giá trị từ 0 tới 10.
    • Điểm thi môn thứ hai: là một số nguyên có giá trị từ 0 tới 10.
  • Đưa ra màn hình danh sách sinh viên cùng thông tin của họ mà người dùng vừa nhập vào.
  • Đưa ra màn hình danh sách các sinh viên đạt yêu cầu, biết rằng để đại yêu cầu điểm trung bình hai môn của một sinh viên phải <=5 và không có môn nào điểm <=3.
Tran Huyen viết 23:43 ngày 30/09/2018
#include<stdio.h>
#include<conio.h>
#include<string.h>

int main()
{
	int n;
	struct SinhVien
	{
		char name[30];
		int Diem1;
		int Diem2;
		void xuat()
		{
			printf("Ho va ten: %s\t",name);
			printf("Diem mon 1: %d\t",Diem1);
			printf("Diem mon 2: %d\n",Diem2);
		}
		int duyet()
		{
			if((Diem1+Diem2)/2<5||Diem1<=3||Diem2<=3)
			return 0;
			else return 1;	
		}
	};
	printf("Nhap vao so sinh vien:\n");
	do
	{
		scanf("%d",&n);
		if(n<5||n>20) printf("Nhap lai!!! 5<=n<=20\n");
	}while(n<5||n>20);
	struct SinhVien SV[n];
	printf("Nhap thong tin cho sinh vien:\n");
	for(int i=0;i<n;i++)
	{
		printf("Ho va ten: ");
		fflush(stdin);
		gets(SV[i].name);
		fflush(stdin);
		printf("Diem mon 1: ");
		scanf("%d",&SV[i].Diem1);
		printf("Diem mon 2: ");
		scanf("%d",&SV[i].Diem2);
	}
	for(int i=0;i<n-1;i++)
	for(int j=i+1;j<n;j++)
	{
if(SV[i].Diem1==SV[j].Diem1&&SV[i].Diem2==SV[j].Diem2&&strcmp(SV[i].name,SV[j].name)==0) 
		{
			printf("Sinh vien thu %d va %d giong nhau.\n",i+1,j+1);
			SV[i].xuat();
		}	
		else printf("Khong co sinh vien nao trung nhau.\n");
	}
	printf("Danh sach cac sinh vien dat yeu cau:\n");
	for(int i=0;i<n;i++)
	{
		if(SV[i].duyet()) 
		SV[i].xuat();
	}	
	getch();
}
Bài liên quan
0