【求一段循環語句的C語言程序switch語句.A(90~100),B(80~89,C(70~
#include void main(){ int a; scanf("%d",&a); switch(a){ case 10: case 9: printf("(90~100)\n");break; case 8:printf("(80~89)\n");break; case 7:printf("(70~79)\n");break; case 6:printf("(60~69)\n");break; case 5: case 4: case 3: case 2: case 1: case 0:printf("(0~59)\n");break; default: printf("ERROR\n");break;}}。
c語言開關語句是什么
break在for循環來實現開關語句、while循環等循環流程控制中起的作用是停止執行break后面的語句,跳出本次循環,并跳出該循環控制體。
C語言雖然沒有限制 if else 能夠處理的分支數量,但當分支過多時,用 if else 處理會不太方便,而且容易出現 if else 配對出錯的情況。例如,輸入一個整數,輸出該整數對應的星期幾的英文表示:
運行結果:
Input integer number:3
Wednesday
C語言還提供了另外一種多分支選擇的語句——switch 語句,它的基本語法格式如下:
switch(表達式){
case 常量表達式1: 語句 1;
case 常量表達式2: 語句 2;
case 常量表達式n: 語句 n;
default: 語句 n+1;
}
它的執行過程是:首先計算“表達式”的值,然后從第一個 case 開始,與“常量表達式x”進行比較,如果與當前常量表達式的值不相等,那么就不執行冒號后邊的語句 x,一旦發現和某個常量表達式的值相等了,那么它會執行之后所有的語句,如果直到最后一個“常量表達式 n”都沒有找到相等的值,那么就執行 default 后的“語句 n+1”。
需要注意的是,當找到一個相等的 case 分支后,會執行該分支以及之后所有分支的語句。例如:
運行結果:
Input integer number:4
Thursday
Friday
Saturday
Sunday
error
輸入4,發現和第四個分支匹配,于是就執行第四個分支以及后面的所有分支。這顯然不是我們想要的結果,我們希望只執行第四個分支,跳過后面的所有分支。
為了避免這種情況,C語言還提供了一個關鍵字 break,專門用于跳出switch語句。
switch 的分支語句一共有 n+1 種,而我們通常希望的都是選擇其中的一個分支來執行,執行完后就結束整個 switch 語句,而繼續執行 switch后面的語句,此時就可以通過在每個分支后加上 break 語句來實現了。如下:
switch (表達式){
case 常量表達式1: 語句1; break;
case 常量表達式2: 語句2; break;
case 常量表達式n: 語句n; break;
default: 語句n+1; break;
}
加了這個 break 語句后,一旦“常量表達式 x”與“表達式”的值相等了,那么就執行“語句 x”,執行完畢后,由于有了 break 則直接跳出 switch 語句,繼續執行 switch 語句后面的程序了,這樣就可以避免執行不必要的語句。
使用switch語句修改上面的代碼:
運行結果:
Input integer number:4
Thursday
值得一提的是,由于default是最后一個分支,匹配后不會再執行其他分支,所以也可以不用break;語句。
C語言:switch語句用法
case (c>=90 && c<=100): case后面的必須是一個常量。
你這個可以先將成績除以10,再用switch #include "stdio.h" void main() { char c; /*這里別用char,改成:int c,d;*/ scanf("%c",&c); /*這一句也改成scanf("%d",&c);最好前面再加一句,printf("請輸入成績:"); 在這句后面加一句d=c/10;*/ switch(c) /*然后switch里面用d來判斷,switch(d)*/ { case (c>=90 && c<=100):printf("成績的等級為:A.\n"); break; /*改成: case (10): case (9):printf("成績的等級為:A.\n");break; case (c>=80 && c<=89):printf("成績的等級為:B.\n"); break; /*改成:case (8):printf("成績的等級為:B.\n"); break; } } 因為90到100之間的數經過除以10再取整以后就變成了9;100/10等于10,又因為case調用同一個語句的時候允許就在最后一個語句寫上那個語句,而將前面的那幾個省略掉,所以case (10):后面的就省掉了,當然寫上也不會錯。 你的補充的那個,你可以把它分開表示,就像我給你弄的那個case (c>=90 && c<=100):printf("成績的等級為:A.\n"); break; /*改成: case (10): case (9):printf("成績的等級為:A.\n");break; 雖然有點糾纏不清的感覺,但是希望對解決你的疑問有一定的幫助,呵呵。
c語言switch語句
執行case 2是因為在switch (x) 中x=1,所以執行case 1,然而case 1 這條語句沒有break,所以switch (x)在執行了case 1之后將繼續往下依次執行case語句,直到碰到break就跳出switch 循環。
對于“a的自加是先執行后在自加,當此程序a自加的時候沒有執行其他語句啊?????? ” 則是你沒看到程序中的語句a++,b++它自加完了以后把值任然是賦值給a,b本身的,而不是賦值給其他變量例如c=a++;z=b++。如果是這樣賦值給別的變量的話那么就很明確了c,z的值將和課本上說得一樣都是自加以前的值 。
也就是說這個程序當中最后printf輸出的是a,b的值,但是a,b在自加過程中值都變化了,就是說相當于語句a=a++,b=b++. 我將你的程序進行了更改,你將兩個程序都運行下然后再對照著看一下就明白為什么a,b的值最后是2和1了,程序如下#include
c語言開關語句
第二個問題問得好!第一個個問題是這樣的,switch中有值和case后面的值相等的時候,就執行case那行語句,switch都是從上往下判斷的,C語言中的語句執行流程就是從下往上(別弄糊涂了),所以switch 執行也是一樣的。
不是先執行case0,而是先判斷switch中的值是否為 2 -> 1 -> 0 從上往下依次判斷下來。如果switch里的值為0 的話,就執行case0,好好想下!第二個問題,說實話我以前沒有把default放到case中間編譯過(也不知道編譯器是否報錯),呵呵,雖然這種是無用功,但是對于了解編譯還是有幫助的,反正結果應該是這樣,執行到default后,下面的case都不會執行。
“default是不是不管放哪都是最后執行”,不是這樣的,不管default放到哪兒,順序由上往下執行到default的時候,它就會執行,盡管你后面還有case語句等等,都忽略了!呵呵,說得有點亂,我看你在線,你再問我吧!。