Language: C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

#define scanf scanf_s
#define min(a,b) (((a)<(b))?(a):(b))
#define max(a,b) (((a)>(b))?(a):(b))
#define abs(a) (((a)>0)?(a):(-a))


//qsort(vector, n, sizeof(int), fw);

int fw(const void *a, const void *b)
{
	return *(int*)a - *(int*)b;
}
int bw(const void *a, const void *b)
{
	return *(int*)b - *(int*)a;
}

//queue
/*
#define MAXq 100000			//queueの最大サイズ
#define NOq 1				//キューする配列の数
#define qhead (MAXq + 0)	//queue[no][qhead]にno番目のqueue配列の最後尾の次の番号(head)が入る
#define qtail (MAXq + 1)	//queue[no][qtail]にno番目のqueue配列の最後尾の次の番号(tail)が入る
int queue[NOq][MAXq + 2];	//headとtail分に2つ多く取る

//キューはqueue[no][MAXq]がqueue[no][0]であると考えてある(環状配列)
//head番目から(tail-1)番目まで要素が入っている

int queueini()	//headとtailを0で初期化
{
	for (int i = 0; i < NOq; i++)
	{
		queue[i][qhead] = 0;
		queue[i][qtail] = 0;
	}
	return 0;
}
int qpush(int no, int data)
{
	if (queue[no][qhead] != (queue[no][qtail] + 1) % MAXq)	//queueに余裕がある
	{
		queue[no][queue[no][qtail]] = data;					//tail番目にdataを入れる
		queue[no][qtail] = (queue[no][qtail] + 1) % MAXq;	//tail++
		return (MAXq + queue[no][qtail] - queue[no][qhead]) % MAXq;	//要素数を返す
	}
	else return 0;
}
int qpop(int no)
{
	if (queue[no][qhead] != queue[no][qtail])	//queueに余裕がある
	{
		int pop;
		pop = queue[no][queue[no][qhead]];		//qhead番目のdataを返す
		queue[no][qhead] = (queue[no][qhead] + 1) % MAXq;	//head++
		return pop;
	}
	else return 0;	//余裕がない
}
int qsize(int no)
{
	return (MAXq + queue[no][qtail] - queue[no][qhead]) % MAXq;	//要素数を返す
}
*/

//stack
/*
#define MAXs 100000		//stackの最大サイズ
#define NOs 1			//スタックする配列の数
#define stail MAXs		//stack[no][stail]にno番目のstack配列の最後尾の次の番号(tail)が入る
int stack[NOs][MAXs + 1];	//tail分に一つ多く取る
int stackini()	//tailを0で初期化
{
	for (int i = 0; i < NOs; i++)
	{
		stack[i][stail] = 0;
	}
	return 0;
}
int spush(int no, int data)
{
	if (stack[no][stail] < MAXs)	//stackに余裕がある
	{
		stack[no][stack[no][stail]] = data;			//tail番目にdataを入れる
		stack[no][stail] = stack[no][stail] + 1;	//tail++
		return stack[no][stail];	//要素数を返す
	}
	else return 0;	//余裕がない
}
int spop(int no) {
	if (stack[no][stail] <= MAXs)	//stackに余裕がある
	{
		int pop;
		stack[no][stail] = stack[no][stail] - 1;	//tail--
		pop = stack[no][stack[no][stail]];			//tail番目のdataを返す
		return pop;
	}
	else return 0;	//余裕がない
}
*/

/*
char m[55][55] = {};
int t[55][55] = {};
void haba(int y,int x,int turn) {
t[y][x] = turn;
if (m[y + 1][x] == '.') qpush((y + 1) * 100 + x);
if (m[y - 1][x] == '.') qpush((y - 1) * 100 + x);
if (m[y][x + 1] == '.') qpush(y * 100 + x + 1);
if (m[y][x - 1] == '.') qpush(y * 100 + x - 1);
int xy;
xy = qpop();
if (xy == 0) {
return;
}
else{
haba(xy / 100, xy % 100, turn + 1);
return;
}
}*/


int main()
{
	char s[15];
	int len, judge = 0;
	scanf("%s", s);
	if (s[0] != 'A')
	{
		printf("WA");
		return 0;
	}
	if (s[1] < 'a' || s[1] > 'z')
	{
		printf("WA");
		return 0;
	}
	len = strlen(s);
	for (int i = 2; i < len; i++)
	{
		if (s[i] >= 'a' && s[i] <= 'z')
		{
			continue;
		}
		if (s[i] >= 'A' && s[i] <= 'Z')
		{
			if (s[i] == 'C' && s[i+1] != '\0')
			{
				judge++;
			}
			judge = 2;
		}
	}
	if (judge == 1)
	{
		printf("AC");
	}
	else
	{
		printf("WA");
	}
	return 0;
}


Compiler output:
main.c: In function 'main':
main.c:6:15: error: implicit declaration of function 'scanf_s'; did you mean 'scanf'? [-Wimplicit-function-declaration]
    6 | #define scanf scanf_s
      |               ^~~~~~~
main.c:131:9: note: in expansion of macro 'scanf'
  131 |         scanf("%s", s);
      |         ^~~~~