Tạo sao nó tính tổng cứ ra bằng 1 thế ạ?

#include <stdio.h>
int main(int argc, char *argv[])
{
	int n;
	float s3=1, s4=0,i=1;
	printf("n=");
	scanf("%d",&n);
	do
	{ 
		s3=(float)(s3*((2i-1)/(2i)));
		i++; 
	}while(i<=n);
	printf("%f",s3);
	
	return 0;
}

Thấy nó cứ sai sai :smiley:

2 Likes

đề bài kêu tính S3 ạ ! sai chỗ nào chỉ ra vs ms học nên hơi ngu

s3=1/2*3/4*...*(2n-1)/2n

Do ép kiểu (về float) không đúng chỗ.

1 Like
  • Nên tách biến ra cho nó dễ
  • Vòng lặp xác định thì for đi đừng do/while
#include <stdio.h>
int main(int argc, char *argv[])
{
	int n;
	float s3 = 1.0f; 
	
	printf("n = ");
	scanf("%d",&n);
	
	for (int i = 1; i <= n; i++)
	{ 
		float tu = (2*i) - 1;
		float mau = 2*i;
		
		float result = tu / mau;
		s3 = s3 * result;
	};
	
	printf("%f",s3);
	
	return 0;
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?