Having already won a stage, The top British sprinter was led up to the line in Bad Zurzach by team mate George Hincapie and Cavendish raced to the finish to beat Oscar Freire, Francesco Gavazzi and Thor Hushovd.
AG2R's Slovenian rider Tadej Valjavec leads the General Classification.
After the race, Cavendish told cyclingnews.com: "It was easy to win here today. "Hincapie brought me good into position and I moved around Hushovd.
"There was a second category climb at the beginning of the stage and a headwind for most of the day," continued Cavendish. "It made it a very hard day for me, but it was all worth it. I came to the Tour of Switzerland because it's the best way to prepare for the Tour de France for me and because I wanted to do some climbs. So far it's going very well."