Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: nhập cấu trúc, bài tập C nhập cấu trúc

  1. #1
    No Avatar
    phamtuananh Khách

    Mặc định nhập cấu trúc, bài tập C nhập cấu trúc

    không hiểu sao mà mình ko in dc cái giá trị tên nhân viên, hix. Bạn nào tốt bụng thì giải thích cho mình luôn nha, cảm ơn rất nhiều! Ko làm dc khó chịu wa.
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<stdlib.h>
    4. typedef struct NhanVien{
    5.     char Name[30];
    6.     int Age;
    7.     char ID[10];
    8. }NV;
    9. typedef struct NhanVienNode{
    10.        NV DTNV;
    11.        NhanVienNode *NVNext;
    12. }NVNODE;
    13. typedef struct NhanVienList{
    14.     NVNODE *NVDau;
    15.     NVNODE *NVcuoi;
    16. }NVList;
    17. void InNhanVien(NV nv){
    18.     printf("\nTen nhan vien:%s",nv.Name);
    19.     printf("\nTuoi nhan vien:%d",nv.Age);
    20.     printf("\nMa so nhan vien:%s",nv.ID);
    21.  
    22. }
    23. void NhapNhanVien(NV &nv){
    24.     printf("\nnhap ten nv:\n");
    25.     scanf("%s",&nv.Name);
    26.     printf("\nnhap tuoi nv:\n");
    27.     scanf("%d",&nv.Age);
    28.     printf("\nNhap ma so nhan vien:\n");
    29.     scanf("%s",&nv.ID);
    30. }
    31. NVNODE *TaoNhanVienMoi(NV nv){
    32.     NVNODE *n;
    33.     n = new NVNODE;
    34.     if(n==NULL){
    35.         printf("khong du bo nho");
    36.         exit(1);
    37.     }
    38.     n->DTNV=nv; //Gan thong tin cho phan tu n
    39.     n->NVNext=NULL;
    40.     return n;
    41. }
    42. void main(){
    43.     clrscr();
    44.     NV TuanAnh;
    45.     NVNODE TuanAnh1;
    46.     NhapNhanVien(TuanAnh);
    47.     InNhanVien(TuanAnh);
    48.     TuanAnh1=*TaoNhanVienMoi(TuanAnh);
    49.     getch();
    50.     printf("Ten Nhan Vien %s",TuanAnh1->DTNV.Name);
    51. }

  2. #2
    Ngày gia nhập
    01 2007
    Bài viết
    412

    Trích dẫn Nguyên bản được gửi bởi phamtuananh Xem bài viết
    C Code:
    1. void NhapNhanVien(NV &nv){
    2.     printf("\nnhap ten nv:\n");
    3.     scanf("%s",&nv.Name);
    4.     printf("\nnhap tuoi nv:\n");
    5.     scanf("%d",&nv.Age);
    6.     printf("\nNhap ma so nhan vien:\n");
    7.     scanf("%s",&nv.ID);
    8. }
    Trước mắt mình thấy hàm NhapNhanVien của bạn chưa đúng lắm
    -Thứ 1: không thể dùng scanf("%s",&tên chuỗi) để nhập chuỗi như bạn đã làm, nếu bạn dùng hàm scanf, chuỗi của bạn chỉ nhận được ký tự đầu do bạn nhập từ bàn phím.
    Ví dụ:
    Mình dùng hàm scanf để nhập chuỗi sau "HELLO", nhưng sau khi bạn nhập, chuỗi của bạn là "H" chứ không phải là "HELLO" như bạn muốn.
    Để khắc phục tình trạng này, bạn nên dùng hàm gets(<tên chuỗi>);
    - Thứ 2: bạn nên dùng fflush(stdin) trước khi nhập 1 chuỗi để xóa sạch bộ nhớ đệm trước khi cho nhập 1 chuỗi
    Để mình demo đoạn mã NhapNhanVien(...) của bạn nhé:
    C Code:
    1. void NhapNhanVien(NV &nv)
    2. {
    3.     printf("\nnhap ten nv:\n");
    4.     gets(nv.Name);
    5.     printf("\nnhap tuoi nv:\n");
    6.     fflush(stdin);
    7.     scanf("%d",&nv.Age);
    8.     printf("\nNhap ma so nhan vien:\n");
    9.     fflush(stdin);
    10.     gets(nv.ID);
    11. }
    Bạn thử sửa như trên, nếu còn gặp lỗi thì reply lại cho mình nhé!

  3. #3
    No Avatar
    phamtuananh Khách

    Thanks bác neverland87!
    kết hợp với lời lời giải thich của bác ở bài trước em đã sửa dc đoạn code trên và giờ nó đã chạy đúng.
    em post lại đoan code mà em đã sửa, em đã biên dịch ra và thấy nó chạy đúng.
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<stdlib.h>
    4. typedef struct NhanVien{
    5.     char Name[30];
    6.     int Age;
    7.     char ID[10];
    8. }NV;
    9. typedef struct NhanVienNode{
    10.        NV DTNV;
    11.        NhanVienNode *NVNext;
    12. }*NVNODE;
    13. typedef struct NhanVienList{
    14.     NVNODE *NVDau;
    15.     NVNODE *NVcuoi;
    16. }NVList;
    17. void InNhanVien(NV nv){
    18.     printf("\nTen nhan vien:%s",nv.Name);
    19.     printf("\nTuoi nhan vien:%d",nv.Age);
    20.     printf("\nMa so nhan vien:%s",nv.ID);
    21.  
    22. }
    23. void NhapNhanVien(NV &nv)
    24. {
    25.     printf("\nnhap ten nv:\n");
    26.     gets(nv.Name);
    27.     printf("\nnhap tuoi nv:\n");
    28.     fflush(stdin);
    29.     scanf("%d",&nv.Age);
    30.     printf("\nNhap ma so nhan vien:\n");
    31.     fflush(stdin);
    32.     gets(nv.ID);
    33. }
    34. NVNODE TaoNhanVienMoi(NV nv){
    35.     NVNODE n;
    36.     n = (NVNODE)malloc(sizeof(struct NhanVienNode));
    37.     if(n==NULL){
    38.         printf("khong du bo nho");
    39.         exit(1);
    40.     }
    41.     n->DTNV=nv; //Gan thong tin cho phan tu n
    42.     n->NVNext=NULL;
    43.     return n;
    44. }
    45. void main(){
    46.     clrscr();
    47.     NV TuanAnh;
    48.     NVNODE TuanAnh1;
    49.     NhapNhanVien(TuanAnh);
    50.     TuanAnh1=TaoNhanVienMoi(TuanAnh);
    51.     getch();
    52.     printf("Ten Nhan Vien %s",TuanAnh1->DTNV.Name);
    53. }

Các đề tài tương tự

  1. Sửa lỗi nhập danh sách cấu trúc...
    Gửi bởi conga2012 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 01-01-2013, 03:34 PM
  2. Chiếu trúc, Chiếu trúc cao cấp, Hàng Sản xuất tại Việt Nam: Giá rẻ nhất thị trường
    Gửi bởi tqt.tranquoctuan trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 13-05-2012, 08:33 PM
  3. câu lệnh nhập dữ liệu cho biến cấu trúc?
    Gửi bởi laithanhk60 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 19-05-2011, 08:08 PM
  4. Bài toán cấu trúc - Giới hạn nhập điểm chỉ từ 0 -> 10
    Gửi bởi hongle516 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 4
    Bài viết cuối: 04-05-2011, 04:36 PM
  5. Cấu trúc tối ưu nhất
    Gửi bởi mabutinphap trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 13-10-2007, 06:50 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn