item[4] = "ice cream";
You accessing out of bounds here. Your item array declared as char item[4][20]; so you can hold 4 c-strings here with indexes 0, 1, 2 and 3.
Line 17 in the showItemMenu function segfaults because you add 1 in the body of the loop - which takes you out of bounds for the array again.
In the insertCoin function be careful comparing doubles - you loops might not run the correct number of times, because of the way that doubles are stored.
I also don't like do loops, because you have the test twice on lines 28 & 35 and 58 & 62.
It doesn't make sense for the if on lines 36 to 41 to be inside the If on line 27 because it will never be true & is unreachable code. You have it duplicated on lines 45 - 49.
Also a quit option in your switch.
If you enclose the switch in a while loop that uses bool Quit variable, bad input can be dealt with by the default clause.