一.今天課堂老師主要講了 switch 多分支語(yǔ)句延都。
結(jié)構(gòu):
switch(條件表達(dá)式)
{?
case 常量表達(dá)式1:
語(yǔ)句1;break卿操;
case 常量表達(dá)式2:
語(yǔ)句2;break;
default
語(yǔ)句表達(dá)式n
}
注意點(diǎn):
1.條件表達(dá)式必須為整形惯豆;
2.語(yǔ)句可以加嵌套;
3.一定要加break奔害;
? ? ?若不加break楷兽,執(zhí)行語(yǔ)句后面所有的其他case;
4.用if else 完全可以替代switch华临,但結(jié)構(gòu)沒有switch清晰明了芯杀;
二. 今天晚上研究了很久老師留的思考題(算日期差)
#include<stdio.h>
#include<math.h>
int date(int x,int y,int z)
{
int d=0;
for(int i=0;i<x;i++)
{
if((i%4==0&&i%100!=0)||i%400==0)
d=d+366;
else
d=d+365;
}
for(int i=2;i<=y;i++)
{
if((x%4==0&&x%100!=0)||x%400==0)
switch(i-1)
{case 1:d+=31;break;
case 2:d+=29;break;
case 3:d+=31;break;
case 4:d+=30;? break;
case 5:d+=31;break;
case 6:d+=30;break;
case 7:d+=31;break;
case 8:d+=31;break;
case 9:d+=30;break;
case 10:d+=31;break;
case 11:d+=30;break;
}
else
switch(i-1)
{
case 1:d+=31;break;
case 2:d+=28;break;
case 3:d+=31;break;
case 4:d+=30;? break;
case 5:d+=31;break;
case 6:d+=30;break;
case 7:d+=31;break;
case 8:d+=31;break;
case 9:d+=30;break;
case 10:d+=31;break;
case 11:d+=30;break;
}
}
d=d+z;
return(d);
}
int main()
{int a1,b1,c1,a2,b2,c2,x,y,z,sum=0;
while(1)
{
scanf("%d,%d,%d,%d,%d,%d",&a1,&b1,&c1,&a2,&b2,&c2);
x=date(a1,b1,c1);
y=date(a2,b2,c2);
sum=y-x;
z=fabs(sum);
printf("%d\n",(int)z);
}
}
心得:
1.用函數(shù)可以簡(jiǎn)化相同運(yùn)算;
2.C-Free函數(shù)構(gòu)造與C-tubo不同:
? ? ? 函數(shù)變量類型定義需放在括號(hào)里雅潭;
? ? ? 且不加揭厚;
3.計(jì)算日期差思路是算出每個(gè)日期到公元0年1月1日的日期差,再做差扶供,且差正負(fù)由絕對(duì)值函數(shù)去掉筛圆;
4.絕對(duì)值函數(shù)輸出為浮點(diǎn)型,如果整形輸出椿浓,則為0太援,需轉(zhuǎn)型為整形,再輸出扳碍。