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("\n Nhap so nguyen: "); scanf("%d",&a);
	printf("\n 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("\n ket qua la: %.2f",s);
	}
}

Chịu :cry: , í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!

2 Likes

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ì …). :blush: . Có gì sai mọi người chỉ em thêm nhé

1 Like

đú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) :smiley:

4 Likes

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…

1 Like
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é

2 Likes

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

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

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