Ví dụ Nhập và hiện danh sách thí sinh ( gồm số báo danh, họ tên, điểm thi 3 môn)


Ví dụ phần kiểu dữ liệu cấu trúc trong ngôn ngữ lập trình (lớp 08B1)

Tạo cấu trúc Thisinh (SBD, Hoten, diem1, diem2, diem3)
Nhập danh sách N thí sinh, hiện danh sách ra màn hình


#include <conio.h>
#include <stdio.h>
#include <string.h>
//Tao cau truc Thisinh
typedef struct {
    char sbd[5], hoten[20];
    float diem1, diem2, diem3;
} Thisinh;
//Khai bao kieu Mang gom 100 phan tu kieu Thisinh
typedef Thisinh Mang[100];
//chuong trinh con Nhap
void nhap(Mang m, int &n){
    int i;
//trung gian nhap du lieu 
//cho cac thanh phan khong nguyen trong kieu cau truc
    float tg;
    printf("Bao nhieu thi sinh: ");
    scanf("%d", &n);
    for (i=0; i<n; i++){
        fflush(stdin);
        printf("Thi sinh [%d]\n", i+1);
        printf("SBD: ");
        gets(m[i].sbd);
        fflush(stdin);
        printf("Ho ten: ");
        gets(m[i].hoten);
        printf("Diem 1:");
        scanf("%f", &tg);
        m[i].diem1=tg;
        printf("Diem 2:");
        scanf("%f", &tg);
        m[i].diem2=tg;
        printf("Diem 3:");
        scanf("%f", &tg);
        m[i].diem3=tg;
    }
}
//Chuong trinh con hien
void hien(Mang m, int n){
    int i;
    for (i=0; i<n; i++){
        printf("\n %5s%21s%5.1f%5.1f%5.1f", 
                m[i].sbd, m[i].hoten, m[i].diem1, m[i].diem2, m[i].diem3);
    }
}
void main(){
    Mang a;
    int n, i;

    clrscr();
    nhap(a, n);
    clrscr();
    hien(a, n);
    getch();
}


( đã được xem 20727 lần từ 08/05/2009 )

Phản hồi bài viết

   
Họ tên  
Email*
Mã xác thực email
Tiêu đề*
Nội dung*
Đính kèm 
 
 
huudung huudung@...
re Tú
1. Bài về struct:
- Nếu muốn mã thẻ có "04" ở đầu hoặc 1 phần trong đó thì phải để mã thẻ kiểu Xâu kí tự rồi.
Khi đó muốn kiểm tra thì viết 1 hàm như
unsigned char isMatch(Xau the){
if (the[0]='0' && the[1]=='4')
return 1;//dung
else
return 0;//sai
}
2. Phân tích chương trình
int x=5, b=2;
A(&x, b);
sau lời gọi A(&x, b):
Tham số con trỏ x (phạm vi trong A) trỏ tới x (phạm vi trong chương trình main)
Giá trị của b được sao chép vào tham trị y.
Trong chương trình con:
y=y-1;//y=1
*x=*x+y;//<=> *x=5+1 = 6
printf("%d", *x+y);//7
Sau khi kết thúc chương trình con:
x=6; (bị thay đổi do truyền vào con trỏ x)
b=2 (như cũ vì y là tham trị)
printf("%d, %d", x, b);//6, 2
.........
tương tự em phân tích tiếp đi nhé.
Bài dạng này chú ý đến tham trị, tham biến, con trỏ và phạm vi (toàn cục, cục bộ) của các biến trong chương trình.
Phạm Phương Tú theone_21090@...
Thầy góp ý cho em với
Em đã làm 1 bài phân tích nhưng do chưa làm lần nào nên em không biết có thiếu xót gì không? Hình như em phân tích hơi chi tiết quá, nếu rút gọn đi thì em có thể rút gọn phần nào ạ? Em cảm ơn nữa :D
Chúc thầy có sức khỏe thật tốt để em...hỏi nhiều nữa...^^

Hãy phân tích từng bước thực hiện của đoạn chương trình sau và cho biết kết quả cuối cùng.
void A( int *x , int y )
{ y = y - 1; *x = *x + y; printf("\n %d", *x+y ); }
void main()
{ int x=5, b= 2;
A( &x, b );
printf("\n %d , %d", x, b );
A( &b, x );
printf("\n %d , %d", b, x );
}

Phân tích
1.Chương trình con
-Đây là chuơng trình con dạng thủ tục với 2 tham số
+Tham số 1 là biến trỏ x kiểu nguyên
+Tham số 2 là biến y kiểu nguyên

y=y-1; // Gán (y-1) cho y

*x=*x+y; // Gán (*x+y) cho *x
Với *x là dữ liệu kiểu nguyên đuợc chứa trong địa chỉ là x

printf("\n %d", *x+y );
// Lệnh in ra tổng (*x+y) theo kiểu số nguyên

2.Chương trình chính
int x=5,b=2; // Khai báo 2 biến nguyên x,y gán giá trị 5 cho x va 2 cho y

A(&x,b) // Loi goi thu tuc với 2 đối là &x, b
&x la dia chi cua bien x
=> Máy sẽ gán giá trị của các đối cho các tham số tuơng ứng, sau đó lần luợt xét các câu lệnh trên hàm. Cuối cùng in ra tong (*x+y) la 7

printf("\n %d , %d",x,b );
// Lệnh in ra gia tri 2 bien x la 6 va b la 2

A(&b,x) // Lời gọi hàm A với 2 đối là &b va x.Tuong tu, cuoi cung in ra tong (*x+y) la 12

printf("\n %d , %d",b,x );
// Lệnh in ra gia tri 2 bien b la 7 va x la 6
Kết thúc chương trình.
Phạm Phương Tú theone_21090@...
Em lại hỏi^^?
Hình như em hỏi với thắc mắc hơi bị nhìu, mong thầy thông cảm và giúp đỡ :D

Viết chương trình con thực hiện:
a) Nhập danh sách cá nhân cho đến khi nhập số thẻ là "123" gồm thẻ, họ tên khách, tiền lương và lưu vào mảng,
c) Ghi danh sách các cá nhân có mã "99" ở đầu mã thẻ vào tệp

Em đã khai struct thế này và làm được ý a

typedef struct
{
int mathe;
char hoten[100];
float tienluong;
} canhan;

Ý c làm thế nào để mình có thể kiểm tra điều kiện *thuê bao có mã "04"* Ở đây mã
được ạ?
mathe khai ở kiểu int nên em không biết kiểm tra 2 số đầu thế nào.
Em đã nghĩ dùng mảng 1 chiều hay xâu kí tự nhưng như vậy thì em lại chưa bíêt kiểm tra điều kiện *cho đến khi nhập số thuê bao là "0" thì dừng* thế nào cho đúng?

Trang 1
Tôi là Lê Hữu Dũng
Giảng viên CNTT
Khoa Công nghệ Tin học
Viện Đại học Mở Hà Nội