1. 程式人生 > >【C語言經典例項】-switch分支結構-模擬自動售貨機

【C語言經典例項】-switch分支結構-模擬自動售貨機

在本例項中,我們設計一個自動售貨機的程式,執行程式,提示使用者輸入要選擇的選項,當用戶輸入以後,提示所選擇的內容。本程式使用switch分之語句,來解決程式中的選擇問題,效果如圖所示:


程式碼如下:

#include<stdio.h>
#include<stdlib.h>

void main()
{
	int button;

	//定義一個字串陣列,存放商品的名稱
	char *good[]={"巧克力","奶油蛋糕","香蔥餅乾","雪碧 ","可樂"};

	//定義一個浮點型陣列,存放商品的價格
	float price[]={5,2.5,4.5,3,3};

	system("cls");
	
	//顯示窗體的資訊
	printf("********************\n");
	printf("*  可選擇的按鍵     *\n");
	printf("*     1.巧克力      *\n");
	printf("*     2.奶油蛋糕    *\n");
	printf("*     3.香蔥餅乾    *\n");
	printf("*     4.雪碧        *\n");
	printf("*     5.可樂        *\n");
	printf("*********************\n");
	printf("*  從1~5中選擇按鍵:*\n");

	//輸入資料
	scanf("%d",&button);
	switch(button)
	{
		case 1:
			printf("你選擇了 %s \n",good[button-1]);
			printf("售價 %2.1f 元 \n",price[button-1]);
			break;
		case 2:
			printf("你選擇了 %s \n",good[button-1]);
			printf("售價 %2.1f 元\n ",price[button-1]);
			break;
		case 3:
			printf("你選擇了%s \n",good[button-1]);
			printf("售價 %2.1f 元\n",price[button-1]);
			break;
		case 4:
			printf("你選擇了 %s \n",good[button-1]);
			printf("售價 %2.1f 元\n",price[button-1]);
			break;
		case 5:
			printf("你選擇了 %s \n",good[button-1]);
			printf("售價 %2.f 元\n",price[button-1]);
			break;
		default://提示輸入有誤
			printf("\n 輸入錯誤 \n");
			break;

	}
	printf("\n");

	system("pause");
	
}

本例中主要用到了switch語句,switch語句是多分支選擇語句,其一般形式如下:
swtich(表示式)
{
	case 常量表達式 1: 語句 1 ;
	case 常量表達式 2: 語句 2 ;
	......
	case 常量表達式 n: 語句 n ;
	default: 語句 n+1;
}

其語義是:計算表示式的值,並逐個與其後的常量表達式值比較,當表示式的值與某個常量表達式的值相等時,即執行其後的語句,然後不再進行判斷,繼續執行case後的所有語句。當表示式的值與所有case後的常量表達式的值均不相同時,則執行default後的語句。

關於switch的幾點說明:

1.每一個case的常量表達式的值必須互不相同,否則會出現相互矛盾的現象

2.各個case和default的出現次序不影響執行結果。

3.在執行一個case分支後,要終止switch語句的執行,則在相應的語句後加break來實現。

在定義存放商品名稱的字串陣列時,是這樣定義的:

//定義一個字串陣列,存放商品的名稱
	char *good[]={"巧克力","奶油蛋糕","香蔥餅乾","雪碧 ","可樂"};
這是一個數組,數組裡面的元素是指標,用於指向個字串的地址 ,地址->字串的地址