Tại sao code ra kết quả kì lạ?

cho em hỏi sao kết quả ra kỳ vậy ạ?

#include<iostream>
using namespace std;
int timMax(int a[], int n)
{
	if(n==1)
		return a[0];
	if(a[n-1] > timMax(a, n-1))
		return a[n-1];
	else
		return timMax(a, n-1);
}
void nhapMang(int a[],int n)
	{
		cout<<" Nhap n>0: "; cin>>n;
		cout<<" Nhap "<<n<<" so: ";
		for(int i =1;i<=n;i++)
			cin>>a[i];
	}
void xuatMang(int a[], int n)
	{
	cout<<"\n";
	for(int i=1; i<=n;i++)
		cout<<a[i]<<" ";	
	}	
int main()
	{
		int a[100], n;
		nhapMang(a,n);
		xuatMang(a,n);
		timMax(a,n);
		cout<<"\nSo Lon Nhat :"<<timMax(a,n);
		return 0;
	}
	
Kết quả:
 Nhap n>0: 5
 Nhap 5 so: 1
2
3
4
5


--------------------------------
Process exited after 2.954 seconds with return value 3221225725
Press any key to continue . . .

nó không ra được số lớn nhất ạ. nó không in ra được ạ!

Kết quả hiện tại là gì? Và kết quả mong muốn là gì? Bạn post 1 đoạn code lên rồi hỏi “sao kết quả ra kì?” Kì là kì như nào? Mặc dù biết đoạn code làm gì nhưng khi đặt câu hỏi nên đưa nhiều dữ kiện liên quan để người khác dễ đưa ra câu trả lời chính xác hơn.

7 Likes

Dạ em lần đầu đăng hơi sai sót ạ ^_^. Em nhập n =4, nhập số : 1 2 3 4
xong nó không cout ra ạ.

Dạ sai ở chỗ nào ạ? Hải Đại chỉ giúp em với ạ

xuatMang(a,n);

Do n = 0, bạn in ra sẽ thấy.

5 Likes

Lỗi có lẽ ở đây nè. Có n phần tử thì truy xuất từ 0 \rightarrow n - 1. Truy xuất đến n nên lỗi là đúng rồi. :smiling_face_with_three_hearts:

5 Likes

Cảm ơn bạn ạ! Nhưng sửa rồi vẫn không cout ra ạ

Anh sửa cả 2 vòng for chưa ạ. 1 vòng for của hàm nhapMang, 1 vòng for của hàm xuatMang.

1 Like

Chú ý dòng này:

Mã trả về 3221225725 (0xC00000FD) có nghĩa là có lỗi trong truy xuất các phần tử của mảng.

:+1:

6 Likes

Làm thế nào để biết được nguyên nhân dẫn đến mã lỗi này ạ?

Trong C/C++ khó mà biết được lỗi từ dòng nào, khi chỉ nhận được mã lỗi. Bạn thử chạy chế độ Gỡ lỗi (Debug).
Bạn có thể xem xét lại các dòng mã của bạn.
Như @anon5203072 có nhắc đến, bạn không dùng tham chiếu (hoặc con trỏ) trong khi nhập n nên tùy theo trình biên dịch mà n sẽ là 0 hoặc giá trị ngẫu nhiên nào đó (rác).

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