D
分析:運用反證法的方法先分別假設A說的是實話、B說的是實話、C說的是實話,D說的是實話,然后推理都得出與題設相矛盾的結論,即可得到說實話的人.
解答:假設A說的是實話,“是C或D打碎的”,則C、D中有一個說了實話,一個說了謊話,所以B說的就是實話,打碎玻璃的是D,C說的也是實話,與他們中只有一個人說了謊話符合;
假設B說的是實話,則D說的也就是謊話,A、C說的也是實話,所以打碎玻璃的是D,與他們中只有一個人說了謊話符合;
假設C說的是實話,則A、B、D中有一人撒謊,若D說的是實話,則A、B兩人都撒謊,所以不符合只有一人說謊,所以D說謊,故打碎玻璃的是D;
假設D說的是實話,則B說謊,所以C也說了實話,所以打碎玻璃的應是A或B,所以A也說謊,與只有一個人說了謊話矛盾,所以D說謊故都是玻璃的是D.
故選D.
點評:本題考查了運用反證法的方法進行推理與論證.