1使用if語句設計選擇程序:if語句一般分為兩種方式:單條件單分支、和單 條件雙分支if語句。
1.1單條件單分支的if語句一般語法:
If(表達式A){
語句B;
}
語句執行流程:首先執行表達式A,如果表達式A的值非0,則執行語句序列B,然後流程繼續往下執行。
例子代碼:
#include "stdio.h"
main(){
double score;
printf("input the score:");
scanf("%lf",&score);
if(score>=60)/*成績開始判斷*/
printf("\npass!\n");
printf("programming is over!\n");/*和判斷語句並列的下一條語句*/
}
1.2單條件雙分支的語法格式:
If(表達式A){
語句B;
}else{
語句C;
}
語句執行流程:首先執行表達式A的運算,如果表達式A的值非0,則執行語句B,條件不成立則執行C。
例子代碼:
#include "stdio.h"
main()
{
double score;
printf("input the score:");
scanf("%lf",&score);
if(score>=60)/*成績開始判斷*/
printf("\npass!\n");/*及格說明分支*/
else
printf("fail!\n");
printf("programming is over!\n");/*和判斷語句並列的下一條語句*/
}
2嵌套的if語句
2.1嵌套常用格式:
第一種:
If(表達式)
{語句}
else if(表達式)
{語句}
第二種:
If(表達式)
{語句}
else if(表達式)
語句
else
語句
例子代碼:
#include "stdio.h"
#include "math.h"
void main()
{int a;
scanf("%d", &a);
if(abs(a)<10)
printf("%dis one bit.\n",a);
else if(abs(a)<100)
printf("%dis two bit.\n",a);
else if(abs(a)<1000)
printf("%dis three bit.\n",a);
else if(abs(a)<10000)
printf("%dis four bit.\n",a);
else if(abs(a)<32767)
printf("%dis five bit.\n",a);
else
printf("thenumberistoolarge\n");
}
3.用switch分支設計選擇程序
3.1語法形式:
Switch(表達式){
case 整型常量表達式1:語句;[break;]
case 整型常量表達式1:語句;[break;]
case 整型常量表達式1:語句;[break;]
[default]:語句;
}
注:[]裡是可省略的。
3.2語句的執行流程:根據switch表達式的值,確定語句的執行入口,自上而下用表達式的值與case的值比較,相等就執行case後面的語句,如果語句結尾含有break,就中斷switch,否則就繼續執行下一個case,如果沒有與表達式相匹配的值,就執行default後的語句。
switch的表達式可以為任意類型,但運算結果必須是整型或字符型。
例子代碼:
#include "stdio.h"
main()
{int score;
printf("score=");
scanf("%d",&score);
switch((int)(score/10)) /*整型量之間的除法,結果仍為整型*/
{
case 10:
case 9:printf("YourgradeisA\n");break;
case 8:printf("YourgradeisB\n");break;
case 7:printf("YourgradeisC\n");break;
case 6:printf("YourgradeisD\n");break;
default:printf("YourgradeisE\n");
}
}
switch語句也可以嵌套,break只能讓程序跳出它所在的switch分支。
例如:
switch(n1){
case 1:
switch(n2){
case 11:......;
}
case 2:.....;
}
4.分支程序設計實例
4.1判斷年份是否為閏年。
#include "stdio.h"
main(){
int year;
printf("input the year:");
scanf("%d",&year);
if((year%4 == 0) && (year%100 != 0))
printf("該年是閏年\n");
else if(year%400 == 0)
printf("該年是閏年\n");
else
printf("該年是平年\n");
}
4.2計算天數:
#include"stdio.h"
main()
{
int day,month,year,sum,leap;
printf("\nplease input year,month,day\n");
scanf("%d%d%d",&year,&month,&day);
switch(month) /*先計算某月以前月份的總天數*/
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf("data error");break;
}
sum=sum+day; /*再加上某天的天數*/
if(year%400==0||(year%4==0&&year%100!=0)) /*判斷是不是閏年*/
leap=1;
else
leap=0;
if(leap==1&&month>2) /*如果是閏年且月份大於2,總天數應該加一天*/
sum++;
printf("It is the %dth day.",sum);
}