Language: C

char*p,E0[128],E1[128],da[128],db[128],dc[128],X;
C(){
	int ia,ib,ic,v;
	for(v=ia=ib=ic=0;dc[ic];){
		if(da[ia])
			v+=da[ia++]-'0';
		if(db[ib])
			v+=db[ib++]-'0';
		if(v%10+'0'!=dc[ic++])
			return 0;
		v/=10;
	}
	if(v||da[ia]||db[ib])
		return 0;
	return 1;
}
main(){
	for(;~scanf("%[^\n]\n",E0);){
		for(X='0';X<='9';X++){
			strcpy(E1,E0);
			while(p=strchr(E1,'X'))
				*p=X;
			sscanf(E1,"%[^+]+%[^=]=%s",da,db,dc);
			if(*da=='0'&&da[1]||*db=='0'&&db[1]||*dc=='0'&&dc[1])
				continue;
			strrev(da);
			strrev(db);
			strrev(dc);
			if(C()){
				printf("%c\n",X);
				break;
			}
		}
		if(X=='9'+1)
			puts("NA");
	}
}

Compiler output:
main.c:2:1: error: return type defaults to 'int' [-Wimplicit-int]
    2 | C(){
      | ^
main.c:17:1: error: return type defaults to 'int' [-Wimplicit-int]
   17 | main(){
      | ^~~~
main.c: In function 'main':
main.c:18:15: error: implicit declaration of function 'scanf' [-Wimplicit-function-declaration]
   18 |         for(;~scanf("%[^\n]\n",E0);){
      |               ^~~~~
main.c:1:1: note: include '<stdio.h>' or provide a declaration of 'scanf'
  +++ |+#include <stdio.h>
    1 | char*p,E0[128],E1[128],da[128],db[128],dc[128],X;
main.c:18:15: warning: incompatible implicit declaration of built-in function 'scanf' [-Wbuiltin-declaration-mismatch]
   18 |         for(;~scanf("%[^\n]\n",E0);){
      |               ^~~~~
main.c:18:15: note: include '<stdio.h>' or provide a declaration of 'scanf'
main.c:20:25: error: implicit declaration of function 'strcpy' [-Wimplicit-function-declaration]
   20 |                         strcpy(E1,E0);
      |                         ^~~~~~
main.c:1:1: note: include '<string.h>' or provide a declaration of 'strcpy'
  +++ |+#include <string.h>
    1 | char*p,E0[128],E1[128],da[128],db[128],dc[128],X;
main.c:20:25: warning: incompatible implicit declaration of built-in function 'strcpy' [-Wbuiltin-declaration-mismatch]
   20 |                         strcpy(E1,E0);
      |                         ^~~~~~
main.c:20:25: note: include '<string.h>' or provide a declaration of 'strcpy'
main.c:21:33: error: implicit declaration of function 'strchr' [-Wimplicit-function-declaration]
   21 |                         while(p=strchr(E1,'X'))
      |                                 ^~~~~~
main.c:21:33: note: include '<string.h>' or provide a declaration of 'strchr'
main.c:21:33: warning: incompatible implicit declaration of built-in function 'strchr' [-Wbuiltin-declaration-mismatch]
main.c:21:33: note: include '<string.h>' or provide a declaration of 'strchr'
main.c:23:25: error: implicit declaration of function 'sscanf' [-Wimplicit-function-declaration]
   23 |                         sscanf(E1,"%[^+]+%[^=]=%s",da,db,dc);
      |                         ^~~~~~
main.c:23:25: note: include '<stdio.h>' or provide a declaration of 'sscanf'
main.c:23:25: warning: incompatible implicit declaration of built-in function 'sscanf' [-Wbuiltin-declaration-mismatch]
main.c:23:25: note: include '<stdio.h>' or provide a declaration of 'sscanf'
main.c:26:25: error: implicit declaration of function 'strrev' [-Wimplicit-function-declaration]
   26 |                         strrev(da);
      |                         ^~~~~~
main.c:30:33: error: implicit declaration of function 'printf' [-Wimplicit-function-declaration]
   30 |                                 printf("%c\n",X);
      |                                 ^~~~~~
main.c:30:33: note: include '<stdio.h>' or provide a declaration of 'printf'
main.c:30:33: warning: incompatible implicit declaration of built-in function 'printf' [-Wbuiltin-declaration-mismatch]
main.c:30:33: note: include '<stdio.h>' or provide a declaration of 'printf'
main.c:35:25: error: implicit declaration of function 'puts' [-Wimplicit-function-declaration]
   35 |                         puts("NA");
      |                         ^~~~
main.c:35:25: note: include '<stdio.h>' or provide a declaration of 'puts'