Nhập xuất bằng con trỏ trong C

Cho em hỏi sao em không xuất ra được giá trị chẵn ạ :((
Dùng con trỏ trong C ạ.

#include<stdio.h>
#include<conio.h>
#include<malloc.h>

//Ham nhap
void nhap(int*p,int n)
{
	int i;
	for(i=0;i<n;i++)
	{
		printf("\nPhan tu thu %d:",i);
		scanf("%d",p+i);
	}
}

//Ham xuat
void xuat(int*p,int n)
{
	int i;
	for(i=0;i<n;i++)
	printf("%5d",*(p+i));
}

//Ham xuat so chan
void xuatc(int *p, int n)
{
	printf("\nPhan tu chan trong mang la: ");
	int i, d=0;
	for(i=0; i<n; i++)
	{
		if(*(p+i)%2==0)
		{
			d++;
		}
	}
	if(d==0)
		printf("\nMang khong co phan tu chan");
	else
		printf("%d",*(p+i));
}

//Ham main
int main()
{
	int *p,n,i;
  do{
	printf("\nNhap so phan tu mang: ");
	scanf("%d",&n);}
  while(n<1||n>100);
	p=(int*)malloc(n*sizeof(int));
	nhap(p,n);
	printf("\nMang vua nhap la: \n");
	xuat(p,n);
	xuatc(p,n);
	getch();
}

Lần đầu đăng bài nên em chưa biết gõ code lên đây như nào ạ. Nên chỉ coppy ạ :((

Code C thì
```c
(bỏ code vô đây)
```

Code C++ thì
```cpp
(bỏ code vô đây)
```

3 Likes

vâng ạ, vừa thấy có thông báo chỉ dẫn rồi ~~

2 Likes

Khi nào chẵn thì xuất ra luôn, tính d++ làm gì.

1 Like

Yêu cầu đề là gì vậy bạn?
Đếm số phần tử là số chẵn hay là xuất ra những phần tử là số chẵn?
Tui thấy trong hàm xuatc của bạn có viết một vòng for để đếm số phần tử chẵn lưu trong biến d, sau đó tui đoán bạn muốn in ra giá trị trong biến d chăng?

if(d == 0) {
	printf("\nMang khong co phan tu chan");
} else {
	printf("%d", d);
}
2 Likes

lộn đề rồi vì đoạn này đếm số phần từ chẵn, nên là in ra trong if luôn ha.

if(*(p+i)%2==0) { 
            d++;
            printf("%d",*(p+i)); 
}
}
if(d==0)
	printf("\nMang khong co phan tu chan");
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?