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

Đề tài: Mảng ký tự trong C

  1. #1
    Ngày gia nhập
    08 2008
    Bài viết
    0

    Mặc định Mảng ký tự trong C

    Tôi mới học lập trình C, gặp bài toán này, làm hoài không được, cũng không hiểu tại sao,nhờ mấy bạn chỉ dùm.
    Nhập mảng các ký tự.

    #include<stdio.h>
    void Nhap(char a[],int &n)
    {
    do
    { printf("Nhap so phan tu :");scanf("%d",&n); }
    while(n<=0);
    for(int i=0;i<n;i++)
    { printf("Nhap phan tu thu %d ",i);scanf("%c",&a[i]); }
    }
    void Xuat_mang(char a[],int n)
    {
    for(int i=0;i<n;i++) printf("%c",a[i]);
    }
    void main()
    {
    char a[10];
    int n;
    Nhap(a,n);
    printf("\nMang vua nhap la :\n");
    Xuat_mang(a,n);
    }
    Khi chạy, chương trình như sau:
    Nhap so phan tu: 4
    Nhap phan tu thu 0 Nhap phan tu thu 1 a
    Nhap phan tu thu 2 Nhap phan tu thu 3 d

    Mang vua nhap la:
    a
    d
    Vấn đề tại sao chương trình không cho mình nhập phần tử thứ 0,2
    mà chỉ nhập đươc phần tử 1,3,
    Xin chỉ dùm

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

    đây là code hàm nhập. các hàm còn lại thì ok.

    PHP Code:

    void Nhap
    (char a[],int &n)
    {
        do
        { 
            
    printf("Nhap so phan tu :");scanf("%d",&n); 
        }
        while(
    n<=0);
        
        
        for(
    int i=0;i<n;i++)
        { 
            
    printf("Nhap phan tu thu %d ",i);
            
    char tmp;
            
    flushall();// xóa sạch vùng nhớ đệm mỗi lần nhập một phần tử mới. 
                     // quan trọng
            
    scanf("%c",&tmp); 
            
    a[i] = tmp;
        }

    cái này do bạn chưa xóa vùng nhớ đệm nên nó xảy ra hiện tượng trên.
    chi tiết bạn tham khảo thêm trong MSDN với từ khóa flushall/flush.
    Đã được chỉnh sửa lần cuối bởi zkday2686 : 11-08-2008 lúc 06:14 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