c语言switch scanf语句,C语言中scanf函数与switch语句
----------------switch----------------
1)使用格式
switch(表達式){
case 常量表達式1: 語句1;
case 常量表達式2: 語句2; ...
case 常量表達式n: 語句n;
default: 語句n+1;
}
判斷月份代碼實現(xiàn)
int main(int argc, const char * argv[]) {
//定義變量
int month;
//提示用戶輸入一個月份
printf("請輸入一個月份,范圍1-12之間:
");
//接收用戶輸入的月份
scanf("%d",&month);
//校驗
if (month<1 || month>12) {
printf("月份不合法!
");
return 0;
}
//判斷處于哪個季節(jié)
switch (month) {
case 12:
case 1:
case 2:
printf("冬季,男人最討厭的季節(jié)
");
break;
case 3:
case 4:
case 5:
printf("春季,一個充滿生機的季節(jié)
");
break;
case 6:
case 7:
case 8:
printf("夏季,一個充滿黑絲的季節(jié)
");
break;
case 9:
case 10:
case 11:
printf("秋季,一個不安分的季節(jié)
");
break;
}
return 0;
}
其語義是:計算表達式的值。 并逐個與其后的常量表達式值相比較,當表達式的值與某個常量表 達式的值相等時, 即執(zhí)行其后的語句,然后不再進行判斷,繼續(xù)執(zhí)行后面所有case后的語句。如 表達式的值與所有case后的常量表達式均不相同時,則執(zhí)行default后的語句。
1、switch語句的表達式類型
1)可以放一個整型的變量 int num = 10;switch (num)
2)可以放一個整形常量? switch (10)
3)可以放一個返回值是整型的表達式 ? switch (5+5),num = 5+5
4)還可以放可以轉換為int類型的表達式 switch ('a'+'a')
----------case語句的穿透問題
case語句執(zhí)行的過程中,一旦進入某個分支后就會一直執(zhí)行到switch結束。
為了避免上述情況,C語言還提供了一種break語句,專用于跳出switch語句.
---------if分支和switch分支轉換
if語句不一定能轉換成switch語句,switch語句一定能轉換成if語句
if(表達式)-------case 常量表達式
---------if分支和switch分支的選擇
1)分支比較多且無法窮盡或進行大量列舉 時最好用if
2)如果分支數(shù)量不是很多,但是使用if代碼代碼量比較大的時候,可以選用switch
if ? ? 可以理解為 ? 判斷語句 ? 判斷性為主
switch? ? ? ? ? ? 選擇語句 ? 選擇性為主
---------switch分支值得注意的地方
表達式的類型(case語句后的值)必須是整型或可以轉變?yōu)檎偷闹?(byte、short、char和int類型)。
整形變量? ? 整形常量 ? 返回值是整形的表達式 ? 可以裝換為int類型的表達式
2) 功能代碼部分可以寫任意多句。
3) case語句可以有任意多句,可以不用加括號“{}”
4) break關鍵字的意思是中斷,指結束switch語句,break語句為可選。
-----------case值得注意的地方
0) case語句格式: case? 常量表達式: (空格和冒號不能省)
1) case的值1、值2...值n只能為常數(shù)或常量,不能為變量。
2) 如果放表達式,那么只可以是常量表達式 case 5+5:
3) default語句的位置可以任意放 功能類似于if語句中的else。但是寫在最上面會重新一次往下執(zhí)行4) case的穿透問題,同樣適用于 default
5) 如果default語句放到 switch語句的最后,可以不加break
如果不是放到最后,是必須加上break的
6) case的值必須是整數(shù),不能為浮點數(shù)。
7) case 語句之后,默認的第一句話不能定義定義變量
如果第一句話非要定義,應該加上大括號
----------------scanf函數(shù)(阻塞式函數(shù))----------------
如果使用這個函數(shù),要包含一個頭文件 stdio.h
阻塞式的函數(shù):函數(shù)執(zhí)行后,會等待用戶的輸入,如果用戶不輸入任何內(nèi)容,它會一直等待
scanf函數(shù)的作用:
從鍵盤接收用戶輸入的內(nèi)容,保存到指定的變量中
scanf函數(shù)的格式:
scanf("格式控制符",輸入項的地址列表);
scanf注意
1。當有多個 輸入項時,各個地址名之間以逗號“,”分隔。輸入格式和變量類型要保持一致。
2.scanf函數(shù)當遇到回車的時候,會結束執(zhí)行
3、接收單個變量值的時候,在輸入值之前,如果我們輸入了空格 回車 tab,都會被忽略
%d%d,要求我們在鍵盤上輸入的時候,輸入兩個整數(shù),并且以空格或者回車隔開
4,輸入完第一個數(shù)以后,如果中間添加了回車 空格 tab 都會被忽略
5? ? ? %*d按指定格式讀入數(shù)據(jù)但不賦予相應的變量,作用是跳過相應的讀入數(shù)據(jù)
%*d過一個整數(shù)
6? 此處不允許寫%m.nf,但是%mf是可以
7? 要求輸入分數(shù) 確輸入了字符 運行結果 0.00000
scanf運行的原理
1)當用戶輸入內(nèi)容后,用戶輸入的內(nèi)容會被存放到scanf的輸入緩沖區(qū)中 然后,
scanf函數(shù)會根據(jù)格式控制的字符的要求,從輸入緩沖區(qū)依次取它想要的內(nèi)容
如果 從緩沖區(qū)中取得內(nèi)容和和我們的格式要求一致,則把值存放到變量中
如果格式不一致,則不修改變量的值
2)如果scanf緩沖區(qū)中還有內(nèi)容,則scanf不會提示我們再次輸入1、scanf的運行原理
總結
以上是生活随笔為你收集整理的c语言switch scanf语句,C语言中scanf函数与switch语句的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 7号信令1-6
- 下一篇: TCP的定时器系列 — 保活定时器(有图