30/09/2018, 21:01

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;
}
viết 23:01 ngày 30/09/2018

sum=sum+i;

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++){
......
Duc Nguyen viết 23:03 ngày 30/09/2018

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

Nguyễn Tấn Khoa viết 23:06 ngày 30/09/2018

Ý 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:

#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!

viết 23:05 ngày 30/09/2018

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

viết 23:04 ngày 30/09/2018

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

Nguyễn Tấn Khoa viết 23:18 ngày 30/09/2018

Vậy thì đây.

#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.
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ả nữa)
Mình check bài mình bằng VS rùi nên chắc đúng.

anon51853234 viết 23:17 ngày 30/09/2018

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);
		}
	}
}
Vesper Link viết 23:04 ngày 30/09/2018

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

Duc Nguyen viết 23:16 ngày 30/09/2018

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

Bài liên quan
0