if 和 if else 语句
-
结构
-
语法
if(表达式)
语句1 ——>内嵌语句(子语句)
else 语句2
语义:如果表达式的值非0,则执行“语句1”,否则执行“语句2”。
-
注意
esle和它离得最近的未匹配的if匹配,所以复杂的最好加上{}
-
例题
判断是否为回文数
#include <stdio.h>//此题为对五位数求其是否为回文数
int main()
{ int n,ge,shi,qian,wan;
printf(“Input n(10000~99999):\n”);
scanf(“%d”, &n);
ge=n%10; //---->求位数的方法!
shi=n/10%10;
bai=n/100%10;
qian=n/1000%10;
wan=n/10000; //已经知道是五位数,最后这里可以不用%
if(ge==wan&&shi==qian)
printf(“%d是回文数。\n”,n);
else
printf(“%d不是回文数。\n”,n);
return 0;
第二种方法不用知道是几位数,都可以判断是否为回文数。
#include <stdio.h>
int main()
{
int a,i,ge,xin=0;
printf("请输入一个五位数:");//不确定是几位数都可以用
scanf("%d",&a);
i=a;
while(i!=0)
{
ge=i%10;
xin=xin*10+ge;
i/=10;
}
if(a==xin) printf("%d是回文数。",a);
else printf("%d不是回文数。",a);
return 0;
}
条件运算符(三目运算符)
-
结构
表达式1?表达式2:表达式3
如果“表达式1”的值非0,取“表达式2”的值,否则取“表达式3”的值作为条件表达式的值。
switch语句
-
结构
switch(整型表达式) /*表达式的结果必须是整型*/
{
case 常量表达式1: —> case是入口,如果没有break就继续执行下一个case
语句项1;
[break;] //[中括号表示可有可无]
case 常量表达式 2: case子语句可以没有{}
语句序列2 [break;]
……
case常量表达式m:
语句序列m
[break;] ——→如果最后一个case没有break,也会执行最后的default
[default: 语句序列m+1] }
-
例题
输入年,月,输出该月有几天
闰年的判断:能被4整除但不能被100整除,或者能被400整除,
因为闰年是:四年一闰;百年不闰,四百年再闰
#include <stdio.h>
int main()
{
int year,month,days=0;
printf("请输入年,月:");
scanf("%d,%d",&year,&month);
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days=31;
break;
case 4:
case 6:
case 9:
case 11:
days=30;
break;
case 2:
if(year%400==0 || year%4==0 && year%100!=0)
//闰年的判断:能被4整除但不能被100整除,或者能被400整除,
//因为闰年是:四年一闰;百年不闰,四百年再闰
days=29;
else
days=28;
break;
}
printf("days=%d\n",days);
return 0;
}