01/10/2018, 01:16
[Hỏi bải tập]Bài tập cắt mảng dựa trên giá trị cho trước
Đề bài của em là:
Viết 1
function
so sánh tất cả các giá trị chứa trong mảng, nếu giá trị đó lớn hơn biến sốgiatriMax
thì chuyển nó bằng 0 và xuất ra mảng mới.
Code của em, lúc chạy thì không thể xuất ra mảng mới đã sửa được
Source code:
#include <stdio.h>
#include <stdlib.h>
void maxArray (int array[], int kichThuoc, int giatriMax);
int main(int argc, char *argv[])
{
int array[5] = {15,9,4,7,10};
int kichThuoc, giatriMax;
maxArray(array,kichThuoc,giatriMax);
printf("Mang moi chuyen thanh:
");
for (int i = 0 ; i < kichThuoc; i++)
{
printf ("array[%d] = %d ",i,array[i]);
}
return 0;
}
void maxArray (int array[], int kichThuoc, int giatriMax)
{
giatriMax = 7;
for (int i = 0; i < kichThuoc; i++)
{
if (array[i] > giatriMax)
{
array[i] = 0;
}
else
{
array[i] = array[i];
}
}
}
Bài liên quan
Bạn có thèm gán giá trị của kích thước đâu còn
giatriMax = 7;
thì bạn nên bỏ dòng đấy đi (mình nghĩ là bạn đang test, đừng test kiểu thế, bạn lại quên xóa và lỗi nữa đấy), đã có tham số thì tại sao phải set giá trị trong hàm đó chứ?Biến
kichThuoc
được khởi tạo nhưng không có giá trị nên mặc định bằng 0 => các vòng lặp của bạn không chạy.Lưu ý: khi code không chạy ra đúng như ý muốn, bạn học cách debug, debug đơn giản nhất là dùng
printf
và in ra giá trị của các biến theo từng bước mà bạn cảm thấy là đáng nghi nhất.P/s: tự mình làm thì mình mới nhớ lâu và tư duy mới tiến bộ được nha bạn. Chúc bạn thành công.
Biến kichThuoc trong hàm không có giá tri. Chưa có chỗ nào gán giá trị cho nó cả