Giải thích vòng lặp do - while

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc ,char argv)
{
  int sobian,socannhap;
  const int MIN=1,MAX=100;
  srand(time(NULL));
  sobian=(rand()%(MAX-MIN+1)+MIN);
  printf("chao mung cac ban  den voi tro choi\n\n");
  do
  {
      printf("choi tro choi\n\n");
      scanf("%d",&socannhap);

      if(socannhap>sobian)
        printf("sai roi,so be hon\n\n");
      else if(socannhap<sobian)
        printf("sai roi,so lon hon\n\n");
      else
        printf("dung roi\n\n");

  }while(socannhap!=sobian);
    return 0;
}

đoạn code này của e đáng nhẽ ra khi kết thúc vòng lặp thi phải là while(socannhap=sobian) chứ ạ. sao khi e chạy e nhập 1 giá trị nào đó thì vòng lặp nó dừng luôn, còn thêm cái dấu chấm than kia thì nó mới chạy tiếp vòng lặp cho đến khi giá trị đúng mới dừng…
ai qua giúp e với

Thứ 1: vòng do-while dừng khi biểu thức của while trả về false

do { 
    //something
} while (true)

Thứ 2: (socannhap=sobian) là phép gán viết như kia thì nó dừng luôn, muốn so sánh thì xài == chứ ko phải =

thì bây h e xài == có được không ạ

kết quả mong muốn là gì mới được?
!= với == là 2 điều kiện ngược nhau, xài cái nào thì phải tùy theo kết quả mong muốn, chứ hỏi khơi khơi vậy ai trả lời nổi?.

e mới học ạ , e muốn dừng vòng lặp đó lại khi tìm thấy giá trị mong muốn ạ, e cảm ơn

Lý do là tại đoạn in nghiêng là tư duy sai, đoạn bôi đậm là cách làm đúng

dạ e cảm ơn :blush::blush:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?