关系运算符
优先次序
关系运算符都是双目运算符,结合性均为左结合,优先级低于算术运算符,高于赋值运算符。其中,<,<=,>,>=的优先级相同,高于==和!=。
关系表达式
int i=1,j=2,k=3;
printf("%d\n",k==j==i+5);//先计算k==j,值为0,再计算0==i+5,故表达式值为0
逻辑运算符
!>算术运算符>关系运算符>&&和||>赋值运算符
逻辑运算的值
虽然C编译在给出逻辑运算值时,以“1”代表“真”,“0”代表“假”。但是,在判断一个量是为“真”还是为“假”时,以“0”代表“假”,以非“0”的数值为“真”。
if语句
条件运算符为?和:,它是一个三目运算符
表达式1? 表达式2: 表达式3
1.它的运算优先级低于关系运算符和算术运算符,但高于赋值符
2.这个运算符的结合方向是自右向左的
例如
a>b?a:c>d?c:d
应该理解为
a>b?a:(c>d?c:d)
swich语句
case 后面记得加break,不然不能跳出swich
循环语句
goto语句
int i,sum=0;
i=1;
loop: if(i<=100){
sum=sum+i;
i++;
goto loop;
}
goto 语句和if语句构成循环 不建议使用,但是可以用来退出多层嵌套
while语句
int n=0;
printf("input a string:'n");
while(getchar()!='\n')
n++;
printf("%d",n);
意义是只要从键盘输入的字符不是回车就继续循环。
do-while语句
do
语句
while(表达式)
for语句
for(循环变量赋初值;循环条件;循环变量增量)
break与continue
while(表达式){if(表达式)break;} | while(表达式){if(表达式)continue;} |
---|---|
break表示跳出当前循环 | continue跳过剩余语句而强行执行下一次循环 |
example
用π/4=1-1/3+1/5-1/7+…公式求π
#include<math.h>
int main(){
int s;
float n,t,pi;
t=1,pi=0;
n=1.0;
s=1;
while(fabs(t)>1e-6){
pi=pi+t;
n=n+2;
s=-s;
t=s/n;
}
pi=pi*4;
return 0;
}
判断m是否素数
#include<math.h>
int main(){
int m,i,k;
scanf("%d",&m);
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)
break;
if(i>=k+1)
printf("%d is a prime number\n",m);
else
printf("%d is not a prime number\n",m);
}