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

Đề tài: Hỏi về vòng lặp for?

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

    Mặc định Hỏi về vòng lặp for?

    Anh em cho hỏi cái với đoạn code này :
    Code:
    for (int i=3 ;i<2; i++)
      a=b+c;
    thì cái biểu thức a=b+c; có được tính không? Mình thử thì thấy nó không được tính. Nhưng trong chương trình tìm số nguyên tố thì biếu thức tương tự như vậy lại được tính. Ví dụ như:

    Code:
    #include<stdio.h>
    #include<conio.h>
    #include<math.h>
    main()
    {
          int a[200],i,j,n;
          printf("\nCo bao nhieu phan tu trong mang: "); scanf("%d",&n);
          printf("\nNhap cac phan tu cua mang vao di: ");
          for(i=0;i<n;i++)
          scanf("%d",&a[i]);
          
          printf("\nKiem tra xem do co phai so nguyen to hay khong? ");
          
          for(i=0;i<n;i++)
             {
              if(a[i]<2) continue;
              if (a[i]==2) printf("\n%d la so nguyen to.",a[i]);;
              if(a[i]>2)
                {
                   for(j=2;j<sqrt(a[i]) ;j++)   // chỗ này rõ dàng là a[i]=3 thì căn 3 sao lớn hơn j=2 được.
                    {                                 //vậy mà cái biểu thức trong vòng lặp vẫn được thực hiện.
                      if(a[i]%j==0) break;
                      else printf("\n%d la so nguyen to.",a[i]);          
                    }
                }   
             }
                  
    getch();      
    }
    Mong mọi người chỉ giáo...!

  2. #2
    Ngày gia nhập
    03 2012
    Bài viết
    27

    Trích dẫn Nguyên bản được gửi bởi conga2012 Xem bài viết

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<math.h>
    4. main()
    5. {
    6.       int a[200],i,j,n;
    7.       printf("\nCo bao nhieu phan tu trong mang: "); scanf("%d",&n);
    8.       printf("\nNhap cac phan tu cua mang vao di: ");
    9.       for(i=0;i<n;i++)
    10.       scanf("%d",&a[i]);
    11.      
    12.       printf("\nKiem tra xem do co phai so nguyen to hay khong? ");
    13.      
    14.       for(i=0;i<n;i++)
    15.          {
    16.           if(a[i]<2) continue;
    17.           if (a[i]==2) printf("\n%d la so nguyen to.",a[i]);;
    18.           if(a[i]>2)
    19.             {
    20.                for(j=2;j<sqrt(a[i]) ;j++)   [COLOR="Red"]// chỗ này rõ dàng là a[i]=3 thì căn 3 sao lớn hơn j=2 được.[/COLOR]
    21.                 {                                 [COLOR="red"]//vậy mà cái biểu thức trong vòng lặp vẫn được thực hiện.[/COLOR]
    22.                   if(a[i]%j==0) break;
    23.                   else printf("\n%d la so nguyen to.",a[i]);          
    24.                 }
    25.             }  
    26.          }
    27.              
    28. getch();      
    29. }
    Mong mọi người chỉ giáo...!
    Bạn nhập dãy có số 3 thì nó đâu có in ra 3 là số nguyên tố.

    Y!M: doxuanthangvn
    Skype: doxuanthangvnn
    Email: doxuanthang@hotmail.com

  3. #3
    Ngày gia nhập
    12 2012
    Bài viết
    0

    Code:
    for (int i=3 ;i<2; i++)
      a=b+c;
    Trình tự chạy trong vòng for như sau :

    1. int i = 3
    2. i < 2
    2.1 If "true" --> a = b + c --> i++ --> i < 2 --> .....
    2.2 If "false" --> thoát khỏi vòng lặp ( chưa tới a = b + c );

    Vì vậy, trong hàm :

    Code:
                   for(j=2;j<sqrt(a[i]) ;j++)   // chỗ này rõ dàng là a[i]=3 thì căn 3 sao lớn hơn j=2 được.
                    {                                 //vậy mà cái biểu thức trong vòng lặp vẫn được thực hiện.
                      if(a[i]%j==0) break;
                      else printf("\n%d la so nguyen to.",a[i]);          
                    }
    ....sẽ không có chuyện "biểu thức trong vòng lặp vẫn được thực hiện" nếu a[i] = 3 nhé.
    Bạn có thể tạo 1 breakpoints và chạy từng dòng để xem thứ tự thực hiện.

    Và hàm kiểm tra nguyên tố của bạn không được hay lắm. Bạn có thể tham khảo ở đây :
    Kiểm tra số nguyên tố - By mp121209

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

  1. Kỹ thuật C++ Nhập và gán 1 kí tự trong vòng lặp sao cho khi không nhập kí tự thì vòng lặp lại chạy tiếp.
    Gửi bởi note194 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 12-08-2013, 09:11 PM
  2. Lập trình C++ giá trị của xâu trong vòng lặp và ngoài vòng lặp khác nhau
    Gửi bởi virus93ttll trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 17
    Bài viết cuối: 14-05-2011, 02:43 PM
  3. Code cài đặt DSLK đơn vòng và kép vòng trên C++. Thêm 1 phần tử sau 1 phần tử trong DSLK đơn/kép
    Gửi bởi hoanghieu.fit.hcmus trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 2
    Bài viết cuối: 09-04-2011, 02:54 PM
  4. Tìm max (Sử dụng vòng lặp)
    Gửi bởi cr9 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 13
    Bài viết cuối: 08-05-2010, 10:53 AM
  5. Vòng lặp for lồng nhau, giúp tớ hiểu rõ hơn về vòng lặp for lồng nhau?
    Gửi bởi bk7million trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 29-04-2009, 07:46 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