Vấn đề trong C++

Đề: https://drive.google.com/file/d/0B7evA5CUqMtISGVyajBNelBfT1E/view?usp=sharing

Mình có cái điều này không hiểu.
Kết quả thay đổi khi thay đổi vị trí code

int n; cin>>n;
	for (int i=0; i<n; i++)
	{
		int x[1000];
		int t;
		int sum;
		int co;
		cin>>t;
		for (int j=0; j<t; j++)
		{
			cin>>x[j];
			if ((x[j] % 5 == 0) && (x[j] % 7 != 0))
			{
				co=co+1;
				sum=x[j]+sum;
			}
		}
		cout<<co<<" "<<sum<<endl;
		co=0; sum=0;
	}

thì kết quả ra là

1 4206009 (đối với bộ test thứ 1)

Còn khi mình đổi vị trí của int sum ra sau int co thì kết quả là:

4199740 6270

mình không hiểu tại sao lại có sự kỳ lạ thế này? Mong các bạn giải đáp và chữa code giúp mình ạ! Mình xin cảm ơn!

Đơn giản là vì bạn chưa khởi tạo nên hai kq đều sai :slight_smile:

1 Like

Khởi tạo gì bạn? Mình mới học C++ nên chưa rõ lắm

Các biến trong C++ ban đầu đều được gán giá trị rác, nếu bạn muốn sử dụng thì phải khởi tạo giá trị cho nó.

Những biến đọc thì không cần phải khởi tạo, nhưng những biến dùng để tính toán (như biến sum dùng để tính tổng) thì phải khởi tạo.

1 Like

Cảm ơn bác ạ! <3 Mới lập trình C++ nên k biết vụ này

Đếm với tổng là luôn khởi tạo giá trị ban đầu bằng 0.
Tích là 1.

1 Like

?? :smiley: ??
Chắc ý bạn là khi khai báo các biến, chúng ta phải luôn tự khởi tạo, đúng không?

1 Like

Uhm bạn, nói cụ thể như vậy để người hỏi hình dung được khởi tạo giá trị là gỉ thôi.

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