Hỏi về nhập xuất STRUCT

#include<stdio.h>
#include<string.h>
struct DATE {
	char ngay[3];
	char thang[3];
	int nam;
};
typedef struct HOCSINH {
	char hoten[30];
	char MSSV[6];
	struct DATE ngaysinh;
	char diachi[30];
	char gioitinh[4];
	float dtb;
};

void nhap1hocsinh(HOCSINH& x, int n);
void xuat1hocsinh(HOCSINH x, int n);
void nhapnamsinh(DATE& d);
void xuatnamsinh(DATE d);

int main()
{
	HOCSINH x;
	int n;
	nhap1hocsinh(x, n);
	xuat1hocsinh(x, n);
	return 0;
}

void nhap1hocsinh(HOCSINH& x, int n) {
	printf("nhap hoten ");
	fflush(stdin);
	gets_s(x.hoten);
	nhapnamsinh(x.ngaysinh);
}

void xuat1hocsinh(HOCSINH x, int n)
{
	printf("hoten");
	fflush(stdin);
	printf("%s\n", x.hoten);
}

void nhapnamsinh(DATE& d)
{
	printf("nhap ngay");
	fflush(stdin);
	gets_s(d.ngay);
	printf("nhap thang ");
	fflush(stdin);
	gets_s(d.thang);
	printf("nhap nam ");
	scanf("%d",d.nam);
}
void xuatnamsinh(DATE d)
{
	printf("ngay sinh %s\n thang sinh %s\n namsinh %d", d.ngay, d.thang, d.nam);
}

cho em hỏi tại sao không xuất ra được ngày tháng năm sinh ạ

em không hiểu kiểu dữ liệu DATE để làm gì trong khi có thể ghép vào 1 STRUCT luôn ạ
mn dúp em với ạ

Ngày và tháng để kiểu int luôn cho xong, để chuỗi làm gì cho khổ vậy.

3 Likes
#include<stdio.h>
#include<string.h>

typedef struct DATE DATE; // Dòng này có để khỏi phải ghi DATE hai lần
struct DATE
{
    int ngay; // Nêu muốn thêm ràng buộc thì phải chọn kiểu ký tự char (2 ký tự)
    int thang;
    int nam;
};

typedef struct HOCSINH HOCSINH; // Dòng này có để khỏi phải ghi DATE hai lần
struct HOCSINH
{
    char hoten[30];
    char MSSV[6];
    struct DATE ngaysinh;
    char diachi[30];
    char gioitinh[4];
    float dtb;
};

void nhap1hocsinh(HOCSINH *hs); // Tham số truyền vào hàm là một con trỏ để lưu trữ 1 địa chỉ ( hs là tham số )
void xuat1hocsinh(HOCSINH *hs);

int main()
{
    HOCSINH hs;

    nhap1hocsinh(&hs); // Dòng này đối số là địa chỉ của biến "hs"
    xuat1hocsinh(&hs);

    return 0;
}

void nhap1HocSinh(HOCSINH *hs)
{
    printf("nhap ho va ten: ");
    fflush(stdin);
    gets(hs->hoten);

    printf("nhap ngay: ");
    scanf("%d", &hs->ngaysinh.ngay);

    printf("nhap thang: ");
    scanf("%d", &hs->ngaysinh.thang);

    printf("nhap nam: ");
    scanf("%d", &hs->ngaysinh.nam);
}

void xuat1HocSinh(HOCSINH *hs)
{
    printf("\thoten : ");
    printf("%s\n", hs->hoten);

    printf("\tngay thang nam sinh: %d%/%d/%d", hs->ngaysinh.ngay, hs->ngaysinh.thang, hs->ngaysinh.nam);
}

Hên mà không bị cấm đăng bài nha bạn. cố gắng lên không lười được đâu.:upside_down_face::upside_down_face:

2 Likes

vâng ạ em cứ tưởng kiểu DATE là cái gì

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