Nvoigt's opinion:
Cicero:
speed:

faster than the user anyway.

efficiency:

Surprisingly efficient for such a short program.
Without any unneccessary stuff, but also lacks some
parts.

elegance:

Logically flowing, yes. Easy to read, no. But maybe it's
my editor and it looks better in the original one.


portability:

Compiles with two warnings, that, if taken seriously, could
have stopped a bug from creeping in.


specialized criteria:

sorting algorithms:

No sorting.

interface:

Simple interface, easy to navigate.

flexibility:

Holds 100 records and will crash thereafter.

Variable and Function naming:

Okay naming, program is not exactly large enough to see a pattern.

Standard procedures:

Standard function calls. No other procedures like algorithms.

Comments:

No comments.

Program structure and modularity:

Somewhat modular, each interface option is a function.



Conclusion:

This program has some highlights and some silly mistakes.
It is very compact and still functional. It lacks save/load
options and sorting. It shows some understanding of principles,
for example the scanf format-string.

Hard to say, but I'd give it a 3.
-1 for the bug,
-0.5 for the 100 records
-0.5 for not sorting/not saving
Hammer:
speed:

The program is faster than the user anyway.
Sorting algorithm is not the fastest when
changing sort order, but this is a personal
phonebook, not a nationwide address lookup.

efficiency:

Efficient, special positive mention for
delete flags and save-on-demand !


elegance:

Source code is broken up into bits that are
easy to understand, looks neat and is nice to follow.


portability:

Compiled with three negligable warnings on VC7.
I don't have a *nix system at hand, but I didn't
notice any specialized code.


specialized criteria:

sorting algorithms:

Sorting algorithm is nice for inserting new records
which probably is the main focus. It's a bit slow on
reordering large phonebooks, but hopefully people will
only have a rather small list of phonecontacts ( <100 )
anyway.

interface:

The interface could use some linebreaks so single lines
and paragraphs are easier to make out, but for an interface
using only a commandline, it's as good as it gets.

flexibility:

Data structures can handle any amount of records. Structures themselves are fixed as in any database, for easier access on disc. Field lengths are easily changeable by changing the defines on top and recompile.

Variable and Function naming:

Good naming, conventions for function naming are clear and helpful.

Standard procedures:

Standard list procedures, standard sorting procedure.

Comments:

Good comments, light reading.

Program structure and modularity:

Code is seperated into 4 modules and main.
To make it easier in large projects, each
module should have it's own header. This way,
you don't force a full recompile of the whole
program when one prototype changes.



Conclusion:

Also the above may seem a bit negative at times, it's only because I won't mention all those positive points. Just look at it yourself. It's a great project, well done and well documented. If we had a smaller scale, I would probably deduct some points for the things mentioned above, so it might come out a 97/100, but on a scale of 5 to 1 I think it's a full 5.