Thắc mắc về Struct trong C
Chào m.n tình hình là mình vừa mới đọc tài liệu về struct nên thử code bài tập cho hiểu bài hơn code mình làm mới phân nữa chưa xong vì gặp vấn đề khó hiểu muốn nhờ mọi người giúp đỡ:
#pragma warning(disable:4996)
#include<stdio.h>
#include<conio.h>
#include<string.h>
typedef struct TTmonhoc
{
char tenmon[50], mamon[20];
double diemso;
int chi;
};
typedef struct Sinhvien
{
int stt;
char MSSV[20], HoTen[50], *Xeploai[20];
TTmonhoc diem[3];
};
int main()
{
Sinhvien Danhsach[100];
double Kt = 0;
int n;
printf("Nhap vao so luong sinh vien: ");
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
printf("STT: ");
scanf("%d", &Danhsach[i].stt);
printf("Ma so sinh vien: ");
fflush(stdin);
gets(Danhsach[i].MSSV);
printf("Ho va ten: ");
fflush(stdin);
gets(Danhsach[i].HoTen);
for (int j = 1; j <= 3; j++)
{
printf("Ten mon hoc: ");
fflush(stdin);
gets(Danhsach[i].diem[j].tenmon);
printf("Ma mon hoc: ");
fflush(stdin);
gets(Danhsach[i].diem[j].mamon);
printf("So tin chi: ");
fflush(stdin);
scanf("%d", &Danhsach[i].diem[j].chi);
printf("Diem: ");
fflush(stdin);
scanf("%d", &Danhsach[i].diem[j].diemso);
Kt += Danhsach[i].diem[j].diemso;
}
if ((Kt / 3) >= 0 && (Kt / 3) <= 10)
{
if ((Kt / 3) >= 8 && (Kt / 3) <= 10)
*Danhsach[i].Xeploai = "Gioi";
else if ((Kt / 3) >= 7 && (Kt / 3) < 8)
*Danhsach[i].Xeploai = "Kha";
else
*Danhsach[i].Xeploai = "Trung binh";
}
}
for (int i = 1; i <= n; i++)
{
printf("Xep loai: %s", *Danhsach[i].Xeploai);
}
//printf("%f", Kt/3);
getch();
return 0;
}
Cho mình hỏi là mình muốn gán giá trị cho Xeploai là “Gioi” “Kha” “Trung binh” thì phải làm sao? và cái dòng Kt += Danhsach[i].diem[j].diemso;
như vậy đúng không? tại mình thử xuất giá trí Kt
ma không được. Và hỏi thêm là cái cấu trúc struct mình dùng lồng vậy có được không? Thật sự mới đọc tài liệu chưa hiểu lắm. Thank
Xeploai
nên là kiểu xâu kí tự. cho xếp loạistrcpy(Danhsach[i].Xeploai,"Kha");
Kt
là gì?Kt
là tổng điểm 3 môn học để xếp loại