30/09/2018, 16:51

Giúp về Lũy thừa trong C

Chào cả nhà, chúc cả nhà ngày mới vui vẻ!
Mình là một tên sinh viên như bao người khác. Mình đang học về C. Đề yêu cầu là tính số mũ của một số nguyên, khi mình làm xong và chạy chương trình, nếu nhập mũ dương thì kết quả đúng, còn mũ âm thì sai. Thế là lỗi ở đâu thế mọi người. Cám ơn mọi người nhiều!

void Luythua(int a,int b)
{
	int i,t=1;
	float s;
	printf("
 Nhap so nguyen: "); scanf("%d",&a);
	printf("
 Nhap so mu: "); scanf("%d",&b);
	for (i=0;i<b;i++) 
	t=t*a;
	s=(double)1/(double)t;
	if (b>=0)
	{
	printf("Ket qua la: %d",t);
	}
	else
	{
	printf("
 ket qua la: %.2f",s);
	}
}
viết 19:05 ngày 30/09/2018

Chịu , ít nhất thì bạn cũng phải nói xem mình làm thế nào, show code hoặc log lên thì càng tốt!

James Nguyen viết 18:54 ngày 30/09/2018

Hello bạn! mình cũng vừa mới học, theo mình đoán thì nên đặt điều kiện cho mũ ( mũ => 0 thì … ; mũ < 0 thì …). . Có gì sai mọi người chỉ em thêm nhé

Bụng Bự viết 19:07 ngày 30/09/2018

đúng rồi bạn…a^n.
Nếu n > 0 thì dùng for, lấy tích = 1 nhân với a n lần.
Nếu n = 0 thì return về 1
Nếu n < 0 thì dùng for, lấy tích = 1 nhân với 1/(double)a n lần luôn (lưu ý tích này cũng để double nghen)

DK Hai Dao viết 18:56 ngày 30/09/2018

mình cũng sửa như lời khuyên của mấy bạn nhưng chưa thành công! Help me…

James Nguyen viết 19:02 ngày 30/09/2018
int i, n , m;
float t = 1; 

printf("Nhap vao so tu nhien : ");
scanf(" %d", &n);
printf("\nNhap vao mu : ");
scanf(" %d", &m);

if (m >= 0){
	for (i = 0; i < m; i++){
		t *= (float)n;
	}
}else{
	for (i = 0; i > m; i--){
		t *= 1 / (float)n;
	}
}
printf("%d mu %d = %.2f \n", n, m, t);

return 0;

code của minh đây, check nhé

799 viết 18:55 ngày 30/09/2018

Chào Lâm Hải Đảo !

Vì trong vòng lặp for bạn cho biết chỉ thực hiện lệnh …, s=(double)1/(double)t khi i<b , trong khi lệnh else bên dưới lại là TH b<0.

Chúc bạn học tốt.

Bài liên quan
0