01/10/2018, 16:52
In ra số âm và số chẵn nhỏ hơn 20
#include "stdio.h"
#include "conio.h"
#define Max 100
void imprortarray(int);
void printarray(int);
void soam(int);
void evennumber(int);
void importarray(int a[Max])
{
for (int i = 1; i <=a[Max]; i++)
{
printf("a[%d]=", i);
scanf("%d", &a[i]);
printf("
");
}
}
void printarray(int a[Max]) {
for (int i = 1; i <= a[Max]; i++)
{
printf("a[%d]=%d", i, a[i]);
printf("
");
}
}
void soam(int a[Max])
{
for (int i = 1; i <= a[Max]; i++)
{
if (a[i] < 0) {
printf("so am la a[%d]=%d", i, a[i]);
printf("
");
}
}
}
void evennumber(int a[Max]) {
for ( int i = 1; i <= a[i]; i++)
{
if (a[i]<20 && a[i]%2==0)
{
printf("so chan nho hon 20: %d", a[i]);
printf("
");
}
}
}
int main()
{
int a[Max];
printf("nhap mang :");
scanf("%d", &a[Max]);
importarray(a);
printarray(a);
soam(a);
evennumber(a);
return 0;
}
bài này em code trên dev c thì chương trình chạy bình thường
khi code trên visual studio thì chương trình chỉ chạy in ra số âm và kèm theo lỗi này :
Run-Time check Failure #2 - Stack around the variable “a” was corrupted
mong được mọi người chỉ giáo em mới học ạ !!!
Bài liên quan
Bạn xem lại cách nạp mảng vào hàm.
WTF
Bạn đang coi i là cái gì thế?
Vậy bạn thớt hiểu
a[Max]
là cái gìtruyền mảng vào hàm ý bác là như vậy phải không vd như :
nhập hàm :
làm sử dụng thêm 1 biến n để làm phần tử
mà mình chưa hiểu lắm tại sao lại có dấu &n
có phải là sử dụng để lưu lại và khởi tạo số phần tử mình cần để truyền mảng phải không ạ
em hiểu là tạo ra cái mảng a[max] cho nó có 100 phần tử
rồi nhập vào số phần tử em cần sau đó trong vòng lặp của từng hàm mình tạo ra biến i <=a[max] phần tử mà em đã nhập @@
làm vậy nó không hiểu biến a để làm gì nó báo hỏng @@
Chỗ này khá là lắt léo bây giờ cứ để như vậy thôi, chừng nào học tới con trỏ thì sẽ nhận ra.
Mà số phần tử không phải là
a[Max]
,Max
chỉ là sức chứa mà thôi.mình cảm ơn bạn ^^ <3