01/10/2018, 11:39

Code tính tổng các số chính phương nhỏ hơn 1000 bị sai

đề: viết ct tính tổng các số chính phương nhỏ hơn 1000. đây là code của em nhưng sao nó không ra kq đúng ạ?

#include<stdio.h>
#include<math.h>
int main()
{
	int n,s=0,i;
	n=sqrt(i);
	for(i=1;i<=1000;i++)
		{
			if(i==n*n)
				s+=i;}
		 printf("tong so cp la:%d",s);
				}
sycoi001 viết 13:48 ngày 01/10/2018

căn bậc 2 của số mà ko ép kiểu nó đều trả về số ko chính xác.

int main()
{
int s=0,i;
float n=sqrt(float(i));
for(i=1;i<=1000;i++)
{
if(i==n*n)
s+=i;}
printf("tong so cp la:%d",s);
}
rogp10 viết 13:51 ngày 01/10/2018

Thực ra thớt sai từ đầu rồi.

Viết while(i*i < 1000) … sẽ ổn hơn.

Monochorme viết 13:53 ngày 01/10/2018

vẫn lỗi bạn oeiii :v

Monochorme viết 13:42 ngày 01/10/2018

help meeeeeeeeeeeeeeeee, nó chỉ ra giá trị =1 ae ơiii

sycoi001 viết 13:47 ngày 01/10/2018

Đặt vòng float kết quả ở ngoài vòng for nó đâu có biết i là bao nhiêu đâu mà gán giá trị rồi tính, hèn gì sai

	for(i=1;i<=9;i++)
	{
            float ketqua=sqrt(i);
			if(i==ketqua*ketqua)
				s+=i;
    }
	printf("tong so cp la:%d",s);
	getch();
    return 0;
Bài liên quan
0