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

Đề tài: Biến chạy trong vòng lặp hoạt động như thế nào?

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

    Wink Biến chạy trong vòng lặp hoạt động như thế nào?

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <math.h>
    4. int snt(int n)
    5. {
    6.     int i=2,z,k=1;
    7.     while((i<=(int)sqrt(n))&&(k!=0))
    8.     {
    9.         if(n%i==0)
    10.             k=0;
    11.         else
    12.                         k=1;
    13.     i++;
    14.     }
    15.     if(k==0)
    16.     z=0;
    17.     else
    18.     {
    19.         if(k==1)
    20.         z=1;
    21.     }
    22.         return z;
    23. }
    24. void main()
    25. {
    26.      int k,h,kq=0;
    27.      scanf("%d",&k);
    28.      h=(k+1);
    29.      while(kq==0)
    30.      {
    31.      kq=snt(h);
    32.      if(kq==1)
    33.      printf("%d",h); (2)    
    34.      h++;
    35.      }
    36.     (1)
    37. }
    cho em hoi cái về cái biến chạy h++ ay, lúc em để cái lệnh printf("%d",h) xuong (1) thi bài này ra kết quả sai(nếu sửa lại printf("%d",h-1) thì lại đúng), còn luc em để cái lệnh printf("%d",h) len
    (2) thì nó lại đúng vậy có phải trước khi ra khỏi vòng lập thì h se tăng lên 1 rồi mới thoát đúng ko vậy,còn cái ++h với h++ de trong vòng lập là như nhau phải không? nó đều làm h tăng lến dù ++h tang trước h++ tăng sau.
    Đã được chỉnh sửa lần cuối bởi trungvn222 : 03-04-2009 lúc 04:58 PM.

  2. #2
    Ngày gia nhập
    03 2009
    Nơi ở
    Ở địa ngục
    Bài viết
    667

    Mình chưa rõ ý tưởng trong hàm snt của bạn. Còn về thắc mắc về biến chạy của bạn thì bạn nói đúng, đúng là h sẽ tăng lên 1 trước khi ra khỏi vòng lặp. Bạn cũng nên chú ý trình tự viết câu lệnh. câu lệnh nào viết trước sẽ thực hiện trước. 2 câu h++ (giá trị dùng trước, tăng sau) và ++h (ngược lại) nếu đứng riêng thì sẽ như nhau và đều tăng h lên 1, còn nếu dùng trong 1 số lệnh khác vd:
    Code:
    h=5;p=h++;
    Code:
    h=5;p=++h;
    thì sau khi thực hiện code 1 p=5 và h=6 vì nó tương đương p=h/*giá trị của h dùng gán trước*/; h++; còn ở code 2 thì p=h=6 vì nó tương đương h++/*h tăng lên trước*/; p=h;
    Bạn hiểu chưa vậy.
    Đã được chỉnh sửa lần cuối bởi trungkien45 : 03-04-2009 lúc 06:07 PM.

  3. #3
    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 trungvn222 Xem bài viết
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <math.h>
    4. int snt(int n)
    5. {
    6.     int i=2,z,k=1;
    7.     while((i<=(int)sqrt(n))&&(k!=0))
    8.     {
    9.         if(n%i==0)
    10.             k=0;
    11.         else
    12.                         k=1;
    13.     i++;
    14.     }
    15.     if(k==0)
    16.     z=0;
    17.     else
    18.     {
    19.         if(k==1)
    20.         z=1;
    21.     }
    22.         return z;
    23. }
    24. void main()
    25. {
    26.      int k,h,kq=0;
    27.      scanf("%d",&k);
    28.      h=(k+1);
    29.      while(kq==0)
    30.      {
    31.      kq=snt(h);
    32.      if(kq==1)
    33.      printf("%d",h); (2)    
    34.      h++;
    35.      }
    36.     (1)
    37. }
    cho em hoi cái về cái biến chạy h++ ay, lúc em để cái lệnh printf("%d",h) xuong (1) thi bài này ra kết quả sai(nếu sửa lại printf("%d",h-1) thì lại đúng), còn luc em để cái lệnh printf("%d",h) len
    (2) thì nó lại đúng vậy có phải trước khi ra khỏi vòng lập thì h se tăng lên 1 rồi mới thoát đúng ko vậy,còn cái ++h với h++ de trong vòng lập là như nhau phải không? nó đều làm h tăng lến dù ++h tang trước h++ tăng sau.
    vì đơn giản thôi

    ở (2) dưới nó còn 1 cái dòng lệnh là h++.

    đưa (2) xuống 1 tức là thực hiện cái dòng h++ trước khi printf rồi thì gì nó chả kênh lên 1 đơn vị
    ^_,^

    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

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

  1. các bạn chỉ dùm vòng lặp cho textbox hoặc label trong c#
    Gửi bởi dophuhao trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 28-04-2013, 08:41 AM
  2. Socket Cơ chế của hàm connect() trong lớp Udpclient hoạt động như thế nào?
    Gửi bởi huyleuit trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 16-11-2012, 08:02 PM
  3. Chụp ảnh đồ hoạ trong BORLAND C chạy trên Dos như thế nào?
    Gửi bởi Mr.Kjng 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: 28-05-2009, 11:15 PM
  4. Vòng lặp for hoạt động như thế nào?
    Gửi bởi monghoado 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: 27-11-2006, 09:27 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