Cách gọi hàm trong c

Mn cho e hỏi tại sao bài này e gọi hàm void mà nó không thực hiện lệnh printf trong hàm void

#include<iostream>
#include<stdio.h>

void sapxep(int arr[], int n) { //Sắp xếp mảng từ nhỏ đến lớn
	int count = arr[0];
	for (int i = 0; i < n; i++)
		for (int j = 1; j < n - i; j++)
			if (arr[i] > arr[i + 1]) {
				count = arr[i];
				arr[i] = arr[i + 1];
				arr[i + 1] = count;
			}
}

void max2(int arr[], int n) {
	int max1 = arr[0];
    int max2 = arr[0];
	int vitri = 1;
	for (int i = 1; i < n; i++) {
		if (arr[i] > arr[i - 1]) {
			max1 = arr[i];
			if (max2 < arr[i - 1]) {
				max2 = arr[i - 1];
				vitri = i;
			}
		}
	}
	if (max1 == max2) 
		printf("\nHam da cho co tat ca cac phan tu bang nhau va bang %d ", max1);
	else
		printf("\nHam da cho co gia tri lon thu 2 la %d o vi tri thu %d", max2, vitri);
}

int main() {
	int arr[100];
	int n;
	int max = 0;
	printf("Nhap so phan tu : ");
	scanf_s("%d", &n);
	printf("\nNhap gia tri cac phan tu ");
	for (int i = 0; i < n; i++) {
		scanf_s("%d", &arr[i]);
	}
	sapxep(arr, n);
	max2;
	system("pause");
	return 0;
}

Mình có thấy bạn gọi chỗ nào đâu. :thinking:

2 Likes

Chỗ bên trong hàm main main e có viết max2 đấy ạ, chỗ đấy nếu sửa lại là max2(arr,n) có dc gọi là gọi hàm không, nãy e nhầm chỗ đó, giờ hiểu r.

Gọi hàm phải có cặp ngoặc đơn.

4 Likes

Học thêm nguyên mẫu hàm đi bạn,sau này sẽ cần dùng.

4 Likes

Vẫn chưa gọi được đâu. :slight_smile:

Vì bạn đặt có tên biến max2 trùng với tên hàm kìa. :slight_smile:

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