30/09/2018, 22:26

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("
Nhap n(n > 0): ");
		scanf("%d", &n);
		if(n <= 0)
		{
			printf("
 N phai > 0. Xin nhap lai !");
		}
	}while(n <= 0);
	i = 1;
	S = 0;
	printf("
Cac uoc nho hon %d la",n);
	while(i < n)
	{
		if(n % i == 0)
		{
			printf("%4d", i);
			S = S + i;
		}
		i++;
	}
	printf("
Tong 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?

Sơn viết 00:38 ngày 01/10/2018

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

Qúy_Night_0806 viết 00:35 ngày 01/10/2018

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

Phạm Dũng viết 00:36 ngày 01/10/2018

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

Phạm Dũng viết 00:36 ngày 01/10/2018

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

Sơn viết 00:36 ngày 01/10/2018

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

Qúy_Night_0806 viết 00:43 ngày 01/10/2018

~~ 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ưu Thành Vương viết 00:37 ngày 01/10/2018

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

Qúy_Night_0806 viết 00:29 ngày 01/10/2018

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

Lưu Thành Vương viết 00:42 ngày 01/10/2018

do
{
printf("\nNhap n(n > 0): “);
scanf(”%d", &n);
if(n <= 0)
{
printf("\n N phai > 0. Xin nhap lai !");
}
}while(n <= 0);

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

Qúy_Night_0806 viết 00:29 ngày 01/10/2018

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?

Lưu Thành Vương viết 00:38 ngày 01/10/2018

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

Bài liên quan
0