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.
点评:本题考查了运用反证法的方法进行推理与论证.