[Error] variable or field declared void in C

mọi người cho em hỏi, em có làm một chương trình về kiểm tra các số ở trong C, code của em phục vụ việc kiểm tra các dạng số như là

//kiemtrasochanle
//kiem tra so nguyen
//kiem tra so nguyen to
// Kiem tra so am duong
//Kiem tra  so chinh phuong
//Kiem tra so hoan hao
//Kiem tra so doi xung
//Tim so dao nguoc trong C
// Xoa co hieu

Các hàm xử lý sẽ trả về kết quả là 1 và 0 để kiểm tra, sau mỗi lần xử lý em sẽ dùng hàm XoaCoHieu() nhằmđể đưa cờ hiệu về 0. Nhưng hiện tại đang bị một cái lỗi như sau
[Error] variable or field ‘XoaCoHieu’ declared void. Mn có kinh nghiệm kiểm tra giúp em với ạ.
Sau đây là code của em.

#include<stdio.h>
#include<ctype.h>
#include<math.h>
//kiemtrasochanle
//kiem tra so nguyen
//kiem tra so nguyen to
// Kiem tra so am duong
//Kiem tra  so chinh phuong
//Kiem tra so hoan hao
//Kiem tra so doi xung
//Tim so dao nguoc trong C
// Xoa co hieu
int flag = 0;


void NhapSo(int &a)
{
	scanf("%d",&a);
}

int KiemTraSoNguyen(int a)
{
	if(isdigit(a))
	{
		flag =1;
	}
	return flag;
}

int KiemTraSoChanLe(int a)
{
	if(a & 1 == 1)
	{
		flag = 1;
	}
	return flag;
}

int KiemTraSoNguyenTo(int a)
{
	for(int i = 1 ; i <= sqrt(a) ; ++i)
	{
		if(a%i == 0)
		{
			flag = 1;
			break;
		}
	}
}

int KiemTraSoAmDuong(int a)
{
	if(a>0)
	{	
		flag = 1 ;
		return flag;
	}
	else if(a<0)
	{
		flag = -1;
		return flag;
	}
}

int KiemTraSoChinhPhuong(int a)
{	
	float b;
	b = sqrt(a);
	if(ceil(b)==floor(b))
	{
		flag = 1;
	}
	return flag;
}

int KiemTraSoHoanHao(int a)
{
	int tong;
	for(int i=1;i<=a;i++)
	{
		if(a%i==0)
		{
			tong+=i;
		}
	}
	if(tong==a) flag = 1;
	return flag;
}

int KiemTraSoDoiXung(int a)
{
	int daoNguoc;
	if(a>10)
	{
		while(a>=1)
		{
			daoNguoc = daoNguoc * 10 + a % 10;
			a/=10;
		}	
	}
	if(daoNguoc==a)
	{
		flag = 1;
	}	
}

int TimSoDaoNguoc(int a)
{
	int daoNguoc;
	if(a>10)
	{
		while(a>=1)
		{
			daoNguoc = daoNguoc * 10 + a % 10;
			a/=10;
		}	
	}
	return daoNguoc;	
}

void XoaCoHieu(&flag)
{	
	flag = 0;
}

int main()
{	
	int a;
	int daoNguoc;
	do
	{
		printf("\n Nhap so vao day: ");
		NhapSo(a);
	}while(a<0);

	if(flag==1)
	{
		printf("\n So %d la so le",a);
		XoaCoHieu(flag);
		printf("\n So %d so nguyen to",a);
		XoaCoHieu(flag);
		printf("\n So %d la so nguyen",a);
		XoaCoHieu(flag);
		printf("\n So %d la so duong",a);
		XoaCoHieu(flag);
		printf("\n So %d la so chinh phuong",a);
		XoaCoHieu(flag);
		printf("\n So %d la so hoan hao",a);
		XoaCoHieu(flag);
		printf("\n So %d la so doi xung",a);
		XoaCoHieu(flag);
	}
	else
	{
		printf("\n So %d la so chan",a);
		XoaCoHieu(flag);
		printf("\n So %d không là so nguyen to",a);
		XoaCoHieu(flag);
		printf("\n So %d không la so nguyen",a);
		XoaCoHieu(flag);
		printf("\n So %d la so âm",a);
		XoaCoHieu(flag);
		printf("\n So %d không la  so chinh phuong",a);
		XoaCoHieu(flag);
		printf("\n So %d không la so hoan hao",a);
		XoaCoHieu(flag);
		printf("\n So %d không la so doi xung",a);
		XoaCoHieu(flag);
	}
	printf("\n So Dao Nguoc cua so a = % d là %d",a,daoNguoc);
	return 0;
}

Cái & này là ở C++ nha, C không có phép toán này. Dùng con trỏ * thay thế nhé.

5 Likes

Sorry mọi người do mình code quá 180p nên đã có lỗi k chèn kiểu dữ liệu cho tham số khi viết hàm. Cảm ơn mọi người

2 Likes

Cảm ơn b nhé. mình quên viết kiểu cho tham số nên nó sai đó

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?