A no-operation command is inserted into a program for many different reasons, but usually none of them apply to assembler NOP in a C program.
It can be used as a way to ensure the next instruction is at a convenient address. It can be used as a very small delay, typically one clock cycle or instruction cycle. It can be used as a free byte that can be replaced with a breakpoint statement (e.g., 8086 INT 3 is a single-byte instruction) or other instruction while in the debugger. It can be used just as a sort of visual bookmark, something that shows up in a disassembly or debugger.
The only situation that I can think of that really benefits a C program would be to thwart the compiler's ability to reorganize and optimize a routine, such as to force a loop to be unrolled. Most compilers have options that can be used to control this, rather than resort to non-portable hacks like inline assembler.