Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 14 kết quả

Đề tài: Giúp mình cách khởi tạo mảng.

  1. #1
    Ngày gia nhập
    06 2010
    Bài viết
    74

    Mặc định Giúp mình cách khởi tạo mảng.

    Các bạn xem đoạn chương trình sau không chạy như mong muốn.
    C Code:
    1. #include <stdio.h>
    2. int main()
    3. {
    4.     int k;
    5.     float p[5] = {2,4,5,7,8};
    6.     for(k = 0; k < 5; k++) printf("%3d",p[k]);
    7.     printf("\n");
    8.     float q[5];
    9.     q[0] = 2;
    10.     q[2] = 4;
    11.     q[3] = 5;
    12.     q[4] = 7;
    13.     q[5] = 8;
    14.     for(k = 0; k < 5; k++) printf("%3d",q[k]);
    15. }
    Tại sao mình dùng khuôn dạng %d lại chuyển hết về 0 nhỉ?
    Thanks!

  2. #2
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    Trích dẫn Nguyên bản được gửi bởi 13thang08 Xem bài viết
    Các bạn xem đoạn chương trình sau không chạy như mong muốn.
    C Code:
    1. #include <stdio.h>
    2. int main()
    3. {
    4.     int k;
    5.     float p[5] = {2,4,5,7,8};
    6.     for(k = 0; k < 5; k++) printf("%3d",p[k]);
    7.     printf("\n");
    8.     float q[5];
    9.     q[0] = 2;
    10.     q[2] = 4;
    11.     q[3] = 5;
    12.     q[4] = 7;
    13.     q[5] = 8;
    14.     for(k = 0; k < 5; k++) printf("%3d",q[k]);
    15. }
    Tại sao mình dùng khuôn dạng %d lại chuyển hết về 0 nhỉ?
    Thanks!
    Thứ nhất , code này sai.
    Nếu là C code thì code này sai. Sai về ngữ pháp. (Tại sao? Trong C thì chỉ được khai báo biến ở đầu scope)


    Thứ 2, nếu bạn muốn có kết quả như mong muốn thì dùng
    printf("%3.f",q[k]);
    hoặc
    printf("%3d",(int)q[k]);
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

  3. #3
    Ngày gia nhập
    03 2011
    Nơi ở
    Bình Dương, Hồ Chí Minh
    Bài viết
    392

    Bổ sung tí he...
    Trích dẫn Nguyên bản được gửi bởi 13thang08 Xem bài viết
    C Code:
    1.     float q[5];
    2.     q[0] = 2;
    3.     q[2] = 4;  
    4.     q[3] = 5;
    5.     q[4] = 7;
    6.     q[5] = 8;   /* => có 5 phần tử từ 0 ->4 thôi mà (k thấy a[1] lại thấy thêm a[5]) */
    7.     for(k = 0; k < 5; k++) printf("%3d",q[k]);
    8. }

  4. #4
    Ngày gia nhập
    08 2010
    Nơi ở
    Home-Hà Đông
    Bài viết
    51

    Trích dẫn Nguyên bản được gửi bởi langman
    Nếu là C code thì code này sai. Sai về ngữ pháp. (Tại sao? Trong C thì chỉ được khai báo biến ở đầu scope)
    Có biến em không khai báo ngay ở đầu nhưng khi dịch trên DevC++ vẫn chạy ngon mà không báo lỗi gì nhỉ .

    Mình bổ sung là bạn í thiếu q[1]

  5. #5
    Ngày gia nhập
    06 2010
    Bài viết
    74

    Thanks mọi người, lâu rùi ko code nên lung tung hết :d

  6. #6
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    Mặc định Giúp mình cách khởi tạo mảng.

    Trích dẫn Nguyên bản được gửi bởi heroandtn3 Xem bài viết
    Có biến em không khai báo ngay ở đầu nhưng khi dịch trên DevC++ vẫn chạy ngon mà không báo lỗi gì nhỉ .

    Mình bổ sung là bạn í thiếu q[1]
    Thật ra đây là 1 thắc mắc rất đúng, rất bình thường.


    Nhưng!
    Thứ nhất, theo bạn hiểu thì câu nói của mình có ý nghĩa gì: Nếu là C code
    Thứ 2 , bạn hiểu ở đầu scope có những ý nghĩa gì. Nó có thật nhiều ý nghĩa hơn bạn nghĩ là "ở đầu" đó.


    Bạn có thể tham khảo hình sau

    Đã được chỉnh sửa lần cuối bởi langman : 09-01-2013 lúc 02:03 PM.
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

  7. #7
    Ngày gia nhập
    08 2010
    Nơi ở
    Home-Hà Đông
    Bài viết
    51

    Trích dẫn Nguyên bản được gửi bởi langman Xem bài viết
    Thật ra đây là 1 thắc mắc rất đúng, rất bình thường.

    Nhưng!
    Thứ nhất, theo bạn hiểu thì câu nói của mình có ý nghĩa gì: Nếu là C code
    Thứ 2 , bạn hiểu ở đầu scope có những ý nghĩa gì. Nó có thật nhiều ý nghĩa hơn bạn nghĩ là "ở đầu" đó.


    Bạn có thể tham khảo hình sau

    Về cái thử nhất, em kiểm tra code với đuôi .c thuần chứ không phải là .cpp (của C++). Và thực tế là em đã test với code đuôi C thuần .c .

    Về cái thứ 2, em hiểu scope là ở đầu khối lệnh hoặc đầu chương trình (tức là trong phạm vi nó được sử dụng thì nó phải được khai báo đầu tiên) không biết có đúng không ^^

    Như anh nói code của bạn sai ngữ pháp thì khi biên dịch nó sẽ báo lỗi, nhưng em đã thử và hoàn toàn không báo lỗi.

    Thực tế đoạn khai báo float q[5]; được thực hiên trước khi biến q được sử dụng nên em nghĩ là không sai.

    Có gì chưa hiểu mong anh giải thích thêm .

  8. #8
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    Trích dẫn Nguyên bản được gửi bởi heroandtn3 Xem bài viết
    Về cái thử nhất, em kiểm tra code với đuôi .c thuần chứ không phải là .cpp (của C++). Và thực tế là em đã test với code đuôi C thuần .c .

    Về cái thứ 2, em hiểu scope là ở đầu khối lệnh hoặc đầu chương trình (tức là trong phạm vi nó được sử dụng thì nó phải được khai báo đầu tiên) không biết có đúng không ^^

    Như anh nói code của bạn sai ngữ pháp thì khi biên dịch nó sẽ báo lỗi, nhưng em đã thử và hoàn toàn không báo lỗi.

    Thực tế đoạn khai báo float q[5]; được thực hiên trước khi biến q được sử dụng nên em nghĩ là không sai.

    Có gì chưa hiểu mong anh giải thích thêm .
    Tốt, Kiến thức rất tốt.

    More : đối với lập trình C, để đóng gói code được tốt hơn, mình sẽ mở các scope nếu cần thiết. Ví dụ

    C Code:
    1. #include <stdio.h>
    2. int main()
    3. {
    4.  //something
    5.  
    6.  
    7. #ifdef DEBUG
    8.  {
    9.   int i;
    10.   for (i=0;i<999;i++)
    11.   {
    12.    //... do something
    13.   }
    14.  }
    15. #endif
    16.  //something else
    17. }



    Còn về vụ khai báo, a đang làm teachinal leader cho 1 đội chuyên làm C trong Fsoft, a làm việc ko chỉ với VS đâu, mà còn cả ADS và nhiều compiler khác.
    a demo cho em 1 cái nhé
    Đã được chỉnh sửa lần cuối bởi langman : 09-01-2013 lúc 02:03 PM.
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

  9. #9
    Ngày gia nhập
    07 2010
    Nơi ở
    chỗ kín
    Bài viết
    446

    C mà không khai báo ở trên đầu thì đương nhiên báo lỗi
    DEVC++ không báo lỗi có thể là do bạn chỉnh chế độ compile là CPP, hoặc DEVC++ không theo chuẩn ANSI, ISO...

  10. #10
    Ngày gia nhập
    08 2010
    Nơi ở
    Home-Hà Đông
    Bài viết
    51

    Trích dẫn Nguyên bản được gửi bởi pkthanh92 Xem bài viết
    C mà không khai báo ở trên đầu thì đương nhiên báo lỗi
    DEVC++ không báo lỗi có thể là do bạn chỉnh chế độ compile là CPP, hoặc DEVC++ không theo chuẩn ANSI, ISO...
    Thật ra từ khi cài DevC++ mình không chỉnh sửa gì cả .

    @langman: như vậy là trình biên dịch DevC++ (của em) không báo lỗi còn VS (của anh) thì báo lỗi? Tuy nhiên, em đã thử biên dịch trên Ubuntu với gcc và hoàn toàn không thấy báo lỗi gì.

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

  1. Sự cố Nhờ mod chuyển giúp bài "Sắp xếp số thứ tự ngay trong bảng của 1 database?" từ MySQL sang MSSQL giúp!
    Gửi bởi hu-xeko trong diễn đàn Ý kiến, đề xuất và khiếu nại
    Trả lời: 1
    Bài viết cuối: 12-03-2012, 07:48 PM
  2. Mới nhập môn khó quá , cần trợ giúp [Vấn đề của bạn cần muốn giúp là gì ?]
    Gửi bởi cuingo212 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 5
    Bài viết cuối: 22-10-2011, 08:43 AM
  3. Chương trình giúp một học sinh cấp 1 học phép nhân, xử lý hàm rand, giúp mình với?
    Gửi bởi chankx trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 12-05-2009, 08:52 PM
  4. Code giúp add một key vào registry, ai giúp em?
    Gửi bởi olavien trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 12-12-2007, 08:45 AM

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