01/10/2018, 01:10
[C]: giá trị in ra màn hình không giống như mong muốn
Đây là code của em:
int main() {
int n;
printf("Nhap N= ");
scanf("%i", &n);
int daySo[n], i;
for (i=0; i<n; i++) {
printf("daySo[%i]=", i);
scanf("%i", &daySo[i]);
}
int min = daySo[0], viTriMin;
for (i=1; i<n; i++) {
if (daySo[i] < min) {
min = daySo[i];
viTriMin = i;
}
}
printf("Phan tu nho nhat cua day so la: daySo[%i]= %i
", viTriMin, min);
int max = daySo[0], viTriMax;
for (i=1; i<n; i++) {
if (daySo[i] > max) {
max = daySo[i];
viTriMax = i;
}
}
printf("Phan tu lon nhat cua day so la: daySo[%i]= %i
", viTriMax, max);
int tongChan = 0;
for (i=0; i<n; i++) {
if (daySo[i] % 2 == 0) {
tongChan += daySo[i];
}
}
printf("Tong cac phan tu chan la: %i
", tongChan);
int soLe = 0;
for (i=0; i<n; i++) {
if (daySo[i] % 2 != 0) {
soLe ++;
}
}
printf("So luong cac phan tu Le la: %i
", soLe);
return 0;
}
và đây là kết quả
Không hiểu tại sao dòng “Phan tu nho nhat cua day so” lại hiển thị như thế ạ?
Bài liên quan
Chỗ sai ở đây:
min = daySo[0]
, tức là lúc nàymin = 1
, cho chạy vòng for từ 1, daySo[1] là phần tử thứ 1 có giá trị là 2.Theo code ở trên, nếu
daySo[i] < min
thì viTriMin mới được gán giá trị của i, nhưng 2 > 1 thìviTriMin
không được gán giá trị của i, nên nó sẽ ra một con số tùm lum như bạn thấy.Cảm ơn anh nhiều, em làm được rồi nè
Vitrimin là biến toàn cục thì giá trị khởi tạo mac dinh của nó là 0 mà nhỉ? Nếu ko đc gán = i thì nhẽ ra là nó phải in ra viTriMin là 0 chứ nhỉ
viTriMin là biến cục bộ mà
hehe. nãy nhìn nhầm :3