(っ´▽`)っ
char ss[]="";
n = atoi(gets(ss));
について

(1)
ssにリテラル文字列""を代入している。
よって、ssは静的領域を指すアドレスが設定されている。
静的領域を勝手に書き換えるなゴルァ!

(2)
さらに、ssが確保している領域のサイズは\0の1バイトのみ。
1バイトを超えたら記憶領域を壊す。
ってか、何らかの文字を入れた時点で\0と合わせて2バイト以上になるから、
確実にダメだね。