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

Đề tài: bt tìm số "thú vị".khởi tạo biến ở ngoài và trongvòng lặp for khác nhau như thế nào?giải thích dùm?

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

    Wink bt tìm số "thú vị".khởi tạo biến ở ngoài và trongvòng lặp for khác nhau như thế nào?giải thích dùm?

    MÌNH CÓ 2 ĐOẠN CODE :1 LÀ CODE RA KẾT QUẢ SAI CỦA MÌNH (CODE ĐẦU TIÊN)VÀ CODE ĐÁP ÁN. CHỈ KHÁC NHAU Ở VIỆC: CODE SAI THÌ KHỞI TẠO BIẾN (tổng =0) Ở BÊN NGOÀI VÒNG LẶP FOR VÀ RA KẾT QUẢ SAI.CODE ĐÚNG THÌ KHỞI TẠO (tổng =0) Ở TRONG VÒNG LẶP FOR VÀ RA KẾT QUẢ ĐÚNG.MÌNH VẪN CHƯA HIỂU GIẢI THÍCH DÙM MÌNH SỰ KHÁC NHAU KHỞI TẠO BIẾN THEO 2 CÁCH NÀY NÀY???
    Code:
    /*chuong trinh liet ke cac so thu vi tu 1 den 3000*/
    /*so thu vi la so co tinh chat:tong cac uoc so "thuc su"
      cua no bang chinh no.vd:6=3+2+1,28=1+2+4+7+14   */
    #include <stdio.h>
    #include <conio.h>
    void main()
    {
    int i,j,tong=0,dem=0;clrscr();
    for(i=1;i<3000;i++)
    {
    for(j=1;j<i;j++)
    if (i%j==0)  tong+=j;
    if (i==tong) printf( "\n %d la so thu vi thu %d",i,++dem);
    }
    getch();
    }

    Code:
    /*chuong trinh liet ke cac so thu vi tu 1 den 3000*/
    /*so thu vi la so co tinh chat:tong cac uoc so "thuc su"
      cua no bang chinh no.vd:6=3+2+1,28=1+2+4+7+14   */
    #include <stdio.h>
    #include <conio.h>
    void main()
    {
    int i,j,dem=0,tong;clrscr();
    for(i=1;i<3000;i++)
    {tong=0;
    for(j=1;j<i;j++)
    if (i%j==0)  tong+=j;
    if (i==tong) printf( "\n %d la so thu vi thu %d",i,++dem);
    }
    getch();
    }
    CODE ĐẦU TIÊN CHẠY KO TÌM ĐƯỢC SỐ NÀO,CODE 2 CHẠY THÌ IN RA MÀN HÌNH:
    6 la so thu vi thu 1
    28 la so thu vi thu 2
    496 la so thu vi thu 3

  2. #2
    Ngày gia nhập
    01 2011
    Nơi ở
    \WINDOWS\Assembly\
    Bài viết
    54

    Trích dẫn Nguyên bản được gửi bởi khoaitayran2012 Xem bài viết
    MÌNH CÓ 2 ĐOẠN CODE :1 LÀ CODE RA KẾT QUẢ SAI CỦA MÌNH (CODE ĐẦU TIÊN)VÀ CODE ĐÁP ÁN. CHỈ KHÁC NHAU Ở VIỆC: CODE SAI THÌ KHỞI TẠO BIẾN (tổng =0) Ở BÊN NGOÀI VÒNG LẶP FOR VÀ RA KẾT QUẢ SAI.CODE ĐÚNG THÌ KHỞI TẠO (tổng =0) Ở TRONG VÒNG LẶP FOR VÀ RA KẾT QUẢ ĐÚNG.MÌNH VẪN CHƯA HIỂU GIẢI THÍCH DÙM MÌNH SỰ KHÁC NHAU KHỞI TẠO BIẾN THEO 2 CÁCH NÀY NÀY???
    Code:
    /*chuong trinh liet ke cac so thu vi tu 1 den 3000*/
    /*so thu vi la so co tinh chat:tong cac uoc so "thuc su"
      cua no bang chinh no.vd:6=3+2+1,28=1+2+4+7+14   */
    #include <stdio.h>
    #include <conio.h>
    void main()
    {
    int i,j,tong=0,dem=0;clrscr();
    for(i=1;i<3000;i++)
    {
    for(j=1;j<i;j++)
    if (i%j==0)  tong+=j;
    if (i==tong) printf( "\n %d la so thu vi thu %d",i,++dem);
    }
    getch();
    }

    Code:
    /*chuong trinh liet ke cac so thu vi tu 1 den 3000*/
    /*so thu vi la so co tinh chat:tong cac uoc so "thuc su"
      cua no bang chinh no.vd:6=3+2+1,28=1+2+4+7+14   */
    #include <stdio.h>
    #include <conio.h>
    void main()
    {
    int i,j,dem=0,tong;clrscr();
    for(i=1;i<3000;i++)
    {tong=0;
    for(j=1;j<i;j++)
    if (i%j==0)  tong+=j;
    if (i==tong) printf( "\n %d la so thu vi thu %d",i,++dem);
    }
    getch();
    }
    CODE ĐẦU TIÊN CHẠY KO TÌM ĐƯỢC SỐ NÀO,CODE 2 CHẠY THÌ IN RA MÀN HÌNH:
    6 la so thu vi thu 1
    28 la so thu vi thu 2
    496 la so thu vi thu 3
    Code đầu tiên chỉ khởi tạo 1 lần còn những lần còn lại nó lưu kết quả của những lần trước.
    VD: lần chạy 1 kq la 2 thì lần sau thì cứ cộng đồn, tong sẽ tăng lên 4, 6, 7 chẳng hạn.

    còn code 2 thì mỗi lần mỗi cộng thì sẽ chính xác chứ.

    cần tập debug lại chương trình trước khi hỏi.

  3. #3
    Ngày gia nhập
    08 2011
    Nơi ở
    Trà Vinh
    Bài viết
    20

    Giá trị tổng được khai báo nhằm để tính tổng các ước thật sự của số nguyên i và sau khi kiểm tra tổng các ước thật sự của i có bằng i hay không
    + Nếu bằng thì i là số thú vị
    + Ngược lại thì i không là số thú vị
    thì giá trị tổng lại trở về bằng không để kiểm tra số tiếp. Vì vậy cần phải gán tong=0; bên trong vòng lặp for.
    Còn nếu gán tổng=0 ngoài vòng lặp for : Thì chỉ cần điều kiện đúng thì tổng cứ được cộng giá trị thêm vào cho nên kết quả sai!!!!!!!!
    Nó là con của thằng nào ? Con của thằng nào ? Nói mau!!!!!!!!!!!!!!!

  4. #4
    Ngày gia nhập
    09 2011
    Bài viết
    0

    Trích dẫn Nguyên bản được gửi bởi taller Xem bài viết
    Code đầu tiên chỉ khởi tạo 1 lần còn những lần còn lại nó lưu kết quả của những lần trước.
    VD: lần chạy 1 kq la 2 thì lần sau thì cứ cộng đồn, tong sẽ tăng lên 4, 6, 7 chẳng hạn.

    còn code 2 thì mỗi lần mỗi cộng thì sẽ chính xác chứ.

    cần tập debug lại chương trình trước khi hỏi.
    thanks 2 bạn.nghĩa là nếu khởi tạo ở ngoài thì sau lần kiểm tra i=1 biến tổng từ 0 sẽ tăng thêm 1 lượng.nên trong lần kiểm tra i=2 biến tổng sẽ ko bắt đầu bằng 0.nếu khởi tạo ở trong thì sau lần kiểm tra i=1 tổng sẽ trở lại bằng 0 để kiểm tra lần 2.mình hiểu vậy có đúng ko?^^
    Đã được chỉnh sửa lần cuối bởi khoaitayran2012 : 12-09-2011 lúc 08:22 PM.

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

  1. nghĩa của 3 từ "principals", "artifacts", "securables" là như thế nào?
    Gửi bởi ntbao trong diễn đàn English for IT | Tiếng anh cho dân CNTT
    Trả lời: 2
    Bài viết cuối: 02-09-2017, 06:36 PM
  2. ký hiệu "->" và "." khác nhau như thế nào?
    Gửi bởi tyrant trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 22-08-2011, 11:56 PM
  3. Lập trình C++ khai báo biến "int" "float" khác nhau như thế nào? (giúp em gấp)
    Gửi bởi hacphieu trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 02-04-2011, 10:57 AM
  4. Kỹ thuật C++ 'char' và "string" khác nhau như thế nào?
    Gửi bởi kenium trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 18-11-2010, 09:03 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