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 ạ !!!

HK boy viết 18:55 ngày 01/10/2018

void importarray(int a[Max])

void printarray(int a[Max])

void soam(int a[Max])

Bạn xem lại cách nạp mảng vào hàm.

for ( int i = 1; i <= a[i]; i++)

WTF

for (int i = 1; i <= a[Max]; i++)

for (int i = 1; i <= a[Max]; i++)

Bạn đang coi i là cái gì thế?

rogp10 viết 18:56 ngày 01/10/2018

Vậy bạn thớt hiểu a[Max] là cái gì

Duy Duy viết 19:08 ngày 01/10/2018

truyền mảng vào hàm ý bác là như vậy phải không vd như :
nhập hàm :

 void NhapMang(int a[max],int &n)
 {
     printf("Nhap so luong phan tu : ");
     scanf("%d",&n);
     for(int i=0;i<n;i++)
     {
         printf("Nhap a[%d] : ",i);
         scanf("%d", a + i);
     }
 } 

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 ạ

Duy Duy viết 18:52 ngày 01/10/2018

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 @@

rogp10 viết 18:53 ngày 01/10/2018

mà mình chưa hiểu lắm tại sao lại có dấu &n

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ảia[Max], Max chỉ là sức chứa mà thôi.

Duy Duy viết 19:01 ngày 01/10/2018

mình cảm ơn bạn ^^ <3

Bài liên quan
0