Trong đoạn code sau mắc lỗi gì không in ra được kết quả

đề in ra số hoàn hảo từ 1 đến 100 code:

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
	int i,j,sum=0;
	int check;
	for(i=1;i<100;i++)
	{
		for(j=1;j<i;j++)
		{
			
			if(i%j==0)
			{
				sum=sum+i;
				
		
		    	if(sum==i)
			    {
			    	check=1;
		        } 
				 else 
			    {
				   check=0;
			    }	 
		    }
        }
			if(check==1)
			{
				printf("%i",i);
			}
	}
	return 0;
}

Chỗ này bạn sửa lại sum=sum+j;
Ngoài ra, do biến sum của bạn là global với 2 vòng for, nên nó vẫn lưu gía trị sum của các i trước, bạn phải reset sum lại 0 cho mỗi i, nên chỗ 2 vòng for sửa lại là:

for(i=1;i<100;i++){
sum=0;
for(j=1;j<i;j++){
......
1 Like

cám ơn bài làm hoài mà không cho mình xin facebook làm quen nha:slight_smile:

Ý của bạn là in ra màn hình từ số 1 đến số 100 hả. Vậy thì đây là chương trình của mình. Bạn tham khảo nha: :grinning:

#include <stdio.h>
#include <conio.h>
void main() 
{
	for (int i = 0; i < 10; i++)
	{
		for (int j = 1; j <= 10; j++)
		{
			printf("%10d", i * 10 + j);
		}
		printf("\n");
	}
	getch();
}

Mình hơi bận nên không thể coi kỹ đoạn code của bạn được. Sorry nha! :grinning:

https://www.facebook.com/unsilverbullet Rất vui được làm quen bạn :grinning:

Ý bạn ở trên là in ra các số hoàn hảo trong khoảng 1->100 mà bạn :smile:

Vậy thì đây. :smiley:

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

void main()
{
	for (int i = 1; i <= 100; i++)
	{
		int sum = 0;
		bool check = false;

		for (int j = 1; j < i; j++)
			if (i % j == 0)
				sum += j;
		if (sum == i)
			check = true;
		if (check)
			printf("%d\t", i);
	}
	getch();
}

Ở đây bạn nên để biến check theo kiểu dữ liệu bool và khai báo false và nên đặt trong for.
Còn vài bất cập nữa mà không biết nói sao. :grin:
Chứ bài của bạn kèm theo cách sửa của bạn freedom thì nó VS hiện kết quả là 628. (còn có cả :warning: nữa)
Mình check bài mình bằng VS rùi nên chắc đúng. :smile:

yêu cầu gì thì làm cái đó , mình thấy bạn thêm biến check chi cho mất công

#include <stdio.h>
int main(){
	int itong=0,i,j;
	printf("cac so hoan hao tu 1-100:");
	for(i=1;i<=100;i++){
		itong=0;
		for(j=1;j<i;j++){
			if(i%j==0){
				itong=itong+j;
			}
		}
		if(itong==i){
			printf("%d\t",itong);
		}
	}
}
1 Like

bạn tập cách trình bày code sao cho dể đọc đi, để {} lộn xộn vậy ai dám debug cho bạn

cám ơn bạn đã góp ý kiến

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