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

Đề tài: thắc mắc về giá trị khởi đầu của mảng là a[0] hay a[1]

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

    Angry thắc mắc về giá trị khởi đầu của mảng là a[0] hay a[1]

    Mấy bác cho em hỏi là khi em tìm giá trị lớn nhất, nhỏ nhất của mảng, khi em cho max =a[1] thì nó chạy ra đúng còn khi cho max =a[0] thì nó ra kết quả là max =64(sai), còn min thì đúng, tại sao vậy?
    Code:
    #include<stdio.h>
    #include<conio.h>
    main()
    {
     clrscr();
     int n,i,tong,max,min,a[10];
     printf("moi nhap vao so phan tu cua mang");
     scanf("%d",&n);
     for(i=1;i<=n;i++)
     {
      printf("phan tu thu %d= ",i);
      scanf("%d",&a[i]);
     } 
     max=a[0];
     for(i=1;i<=n;i++)
      if (a[i]>max)
       max=a[i];
     printf(" \n max = %d ", max); 
     min=a[0];
     for(i=1;i<=n;i++)
      if(a[i]<min)
       min=a[i];
      printf(" \n min = %d",min);
     getch();
    }

  2. #2
    Ngày gia nhập
    07 2011
    Bài viết
    160

    Nhập từ a[1] đến a[n] mà lại gán bằng a[0] @@
    a[0] không được nhập và sẽ có giá trị bất kỳ. Ra lung tung là phải
    Đổi vòng for đầu thành for(i = 0; i < n; i++)
    còn các vòng sau sửa <= n thành < n (giữ nguyên từ 1)

  3. #3
    Ngày gia nhập
    01 2011
    Nơi ở
    -Mountain-
    Bài viết
    768

    Đúng như bạn fbchicken nói. Đối với một vòng lặp bất kì trong C
    for, while ... thì phần tử đầu tiên nên để chỉ số là 0
    Vì trong C liên quan nhiều tới con trỏ
    con trỏ ~ mảng nhưng con trỏ chỉ tới pt có chỉ sô 0
    -----------------> Cần đồng nhất để tránh sự rối loạn
    Hướng dẫn C++: https://www.youtube.com/watch?v=BwLodoQdoY4&list=PL1c9Uxlo-mplJDRGdONNupgo5OCBTyGGn

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