在scanf("%c",&chosen);之前加一句getchar();这是因为你上一个scanf语句读取的时候,作为输入结束的回车符没有被读取,用getchar()吸收掉缓冲区里的回车符
if(tolower(chosen)=='n')break 能有反应吗,你都没对“y”做判断在上面的后面加if(tolower(chosen)=='y')continue;