When you write a makefile, you generally start from the end, and work your way toward the beginning. You start from the final product, and give rules about how to produce that from the starting point(s).
In this case, you seem to have two final products: A and C.
all: A C
If you don't specify a target on the command line, make will build the first target that it sees in the makefile. Therefore, you'd want this as the first target in the file, with the other targets below it. If you think of it as a tree, this is the root of the tree, and each item below is a branch of that tree.
It's also possible to define secondary targets that are not included below this root. Just for example, many (most?) makefiles include a target named clean that deletes all the intermediate files that would be created in the course of building. This will only be used when/if the user invokes make clean, not as part of just issuing make as a command.
Anyway, then you tell it about what each of those depends on, and how to create it from what it depends on:
A: A.o B.o $(CC) -o A A.o B.o C: B.o C.o $(CC) -o B B.o C.o
Then (if necessary -- it's not here) you'd tell it about how each .o file depends on a .c file. Gmake, (like nearly ever make tool in existence) however, has builtin rules to tell it how to compile a C or C++ file to produce a matching object file. These will be about like your makefile contained something like this toward the top:
CC = gcc .c.o: $(CC) $(CFLAGS) -c $*.c
That passes the current value of CFLAGS as flags to the compiler, so you want to set that to the flags you need -- in your case:
CFLAGS = -std=c89
You normally want to put that toward the top of the makefile, typically preceding any of the targets.
I should add that this doesn't even come close to covering everything you could do in a makefile. There are lots of shortcuts that come in really handy when you're dealing with a lot of files, but aren't really useful when you only have three source files.