Tìm số lớn nhất trong 3 số bằng cách gọi hàm trong c

Input: Nhập từ bàn phím 3 số bất kỳ
Output: Xuất ra màn hình số lớn nhất trong 3 số
Hướng dẫn: Xây dựng hàm tìm giá trị lớn nhất trong 3 số. Hàm có giá trị trả về mà
giá trị lớn nhất giữa 3 số
bài này mình làm sai chỗ nào ạ?

#include<stdio.h>
int soMax(int, int, int);
int main()
{
//Nhap tu ban phim ba so bat ki

  int so1, so2, so3;
  printf("Nhap vao lan luot so1, so2, so3:  ");
  scanf("%d %d %d", &so1 , &so2 , &so3 );
  soMax(so1,so2,so3);
  printf("So lon nhat trong ba so la: %d", soMax);
}
//Xuat ra man hinh so lon nhat trong ba so

int soMax(int *a,int *b, int *c)
{
	int max;
	*a=max;
	if(*b>*a){
	  *b=max;
	}else{
	  *c=max;
	}
	return max;
}
1 Like

Bạn truyền sai rồi

  soMax(so1,so2,so3);

Phải là

  soMax(&so1, &so2, &so3);

Vì int* a = nhận biến là 1 pointer (con trỏ) Mà con trỏ thì trỏ tới địa chỉ. Nên bạn phải truyền địa chỉ vào cho hàm soMax

Ngoài ra trong hàm soMax cũng bị nhầm luôn r

	int max;
	*a=max; // phải là max = *a
	if(*b>*a){
	  *b=max; // max = *b
	}else{
	  *c=max; // như trên
	}
	return max;
1 Like

Sao mình chạy nó lại ra như vậy nhỉ?

soMax là tên hàm mà. :slight_smile:

Nó in ra vậy là địa chỉ của hàm soMax á.

Phải gọi như này nè.

printf("max is: %d\n", soMax(&a, &b, &c));

Không hiểu sao bạn lại dùng con trỏ làm gì trong khi không cần thay đổi biến a, b, c.

Nên để là const int thì đúng hơn. :slight_smile:

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