01/10/2018, 12:12
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!
Bài liên quan
Đơn giản là vì bạn chưa khởi tạo nên hai kq đều sai
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.
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.
?? ??
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?
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.