目录
1.关系运算符
> 、 < 、 == 、 <= 、 >= 、 !=
关系表达式反映的是一种关系成立与否(0表示假,1表示真)
2.逻辑运算
&&(与):一真则真
特性:短路特性(截断特性)--- 表达式1为假时,表达式2不运算。
表达式1 && 表达式2;
||(或):一假则假
特性:短路特性(截断特性)
!(非):真假相对
3.选择语句
3.1 if语句
形式1:单分支
if(表达式)
{
语句;
}
形式2:双分支
if(表达式)
{
语句;
}else
{
语句;
}
形式3:多分支
if(表达式1)
{
语句1;
}else if(表达式2)
{
语句2;
}else
{
语句3;
}
eg:
输入年月,打印对应的天数。
#include<stdio.h>
int main(void)
{
int year,month;
int days = 0;
printf("Input a month:");
scanf("%d %d",&year,&month);
if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)
{
days = 31;
}else if(month==4 || month==6 || month==9 || month==11)
{
days = 30;
}else
{
if((year%4==0&&year%100!=0) || year%400==0)
{
days = 29;
}else
{
days = 28;
}
}
printf("days = %d\n",days);
return 0;
}
运行结果:
知识点:闰年分为普通闰年和世纪闰年,普通闰年为4的倍数但不能被100整除,世纪闰年能被400整除。
3.1.1 条件运算( ?:)
表达式1 ? 表达式2 : 表达式3;
语义:判断表达式1,为真执行表达式2,为假执行表达式3.
3.2 switch语句
语法:
switch(表达式)
{
case 常量表达式1:
语句1;
break;
case 常量表达式2:
语句2;
break;
case 常量表达式n:
语句n;
break;
default:
语句n+1;
break;
}
注:
(1)switch后面的表达式必须是一个整型表达式
(2)case后面是一个整型常量表达式,不能出现变量
(3)default不一定写在最后。
4.循环
构成循环的要素:
(1)循环体
(2)结束条件
(3)使循环趋于结束的操作
(4)循环的初始条件
4.1 goto
goto语句并不是循环语句,他是跳转语句,只是刚好能实现循环。
语法:
goto 标签;
4.2 while
语法:
while(表达式)
{
语句
}
语义:判断表达式是否为真,为真执行语句,语句执行完继续判断表达式,直到表达式为假。
4.3 do - while
语法:
do
{
语句;
}while(表达式);
语义:
先执行语句,然后判断表达式是否为真,为真则继续执行语句,为假则结束。
eg:打印出所有的水仙花数
#include<stdio.h>
int main(void)
{
int i = 100;
int a,b,c;
do{
a = i/100;
b = i%100/10;
c = i%10;
if(i == a*a*a+b*b*b+c*c*c)
{
printf("%d\n",i);
}
i++;
}while(i<1000);
return 0;
}
运行结果:
4.4 for语句
语法:
for(表达式1;表达式2;表达式3)
{
循环体语句;
}
//也可以理解为
for(初始条件;循环结束条件;使循环趋于结束的操作)
{
循环体语句;
}
语义:
求解表达式1,判断表达式2,表达式2为真执行循环体语句,执行完求解表达式3,求解完继续判断表达式2,重复,直到表达式2为假,for循环结束。
4.5 循环语句的选用
for --- 多用于有一定范围的程序
while
do while --- 多用于
4.6 break 和 continue
1.break语句
可用于·switch,循环while,do-while,for中。
作用:表示跳出本层循环。
2.continue语句
只用在循环中,作用是结束本次循环,继续下一次循环。
补充:
素数:指除了1和它本身,没有一个数被他整除。
水仙花数:为100-999的三位数,每位数的3次方和值为该数本身(eg:153 = 1*1*1+5*5*5+3*3*3)
闰年:判断方法(年份%4==0 && 年份%100 !=0 || 年份%400==0)为闰年
闰年2月有29天,平年28天。