Cách hoạt động của while(n <= 0);?

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	long S;
	do
	{
		printf("\nNhap n(n > 0): ");
		scanf("%d", &n);
		if(n <= 0)
		{
			printf("\n N phai > 0. Xin nhap lai !");
		}
	}while(n <= 0);
	i = 1;
	S = 0;
	printf("\nCac uoc nho hon %d la",n);
	while(i < n)
	{
		if(n % i == 0)
		{
			printf("%4d", i);
			S = S + i;
		}
		i++;
	}
	printf("\nTong cac uoc nho hon %d la: %ld", n, S);
	getch();
	return 0;
}

giải thích giúp mình dòng while(n <= 0);
i = 1;
S = 0;
nều mình để i = 1;
S = 0;
sau scanf thì có sao k mấy bạn?

bỏ dấu ‘;’ sau while đi bạn nhé

1 Like

ok mà bạn nói cho mình cái cách nó hoạt động với :cry:

do-while thì phải có dấu ‘;’ sau while nhé

cái này là kiến thức cơ bản. bạn gg ko thiếu gì bài biết.
while (<điều kiện>)
khi điều kiện đúng thì while sẽ lặp lại cho đến khi ko đúng nữa thì mới dừng lại
còn do-while thì nó sẽ thực hiện câu lệnh trong “do” trước rồi mới kiểm tra điều kiện

ừ nhỉ, mình nhầm :joy:, chắc tại lâu không động vào C

~~ cái đó thì mình biết, ý mình là while(n <= 0);
i = 1;
S = 0;
tại sao phải dùng while ở đây này nè

Lý do:
printf("\n N phai > 0. Xin nhap lai !");

nếu mình bỏ if đi thì mình ghi S=0 sau scanf dc không bạn?

Nguyên cái này chỉ làm nhiệm vụ đảm bảo người nhập n>0, nếu nhập n<0 thì sẽ bắt nhập lại.

Có thể chỉ viết:

printf("\nNhap n(n > 0): ");
scanf("%d", &n);
i=1;
S=0;
...

Nếu chắc chắn sẽ nhập n>0

bây giờ để code vậy đi. Mà mình thắc mắc ở chỗ while(n <= 0);
i = 1;
S = 0;
còn phần do là
do
{
printf("\nNhap n(n > 0): “);
scanf(”%d", &n);
if(n <= 0)
{
printf("\n N phai > 0. Xin nhap lai !");
}
phải k bạn?

:neutral_face: xem lại cấu trúc do while.

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