你没有做数值类型转换。
标准C中,表达式中,如果原始类型的取值范围都能用signed int型表示,则其类型被提升为signed int,如果原始类型的取值范围用signed int型表示不了,则提升为unsigned int型。,例如在KEIL中,就有这个选项ENABLE ANSI INTEGER PROMOTION RULES,我不知道你是用什么编译器,如果是ANSI C的话,1/n,当n为int型时,这个表达式必定是0。
你可以强制转换为(double float)1/(double float)n