1.if语句
2.关系操作符
3.条件操作符
4.逻辑操作符:&&,||,!
5.switch语句
6.while循环
7.for循环
8.do-while循环
9.break和continue语句
10.循环的嵌套
c语言是程序化的程序设计语言,这里的结构指顺序结构、选择结构、循环结构。
1.if语句
1.1 if
if(表达式)
语句;
表达式成立(为真),语句执行,否则不执行。
表达式为0是假,非0是真。
1.2 else
if(表达式)
语句1;
else
语句2;
表达式为真,执行语句1,否则执行语句2
1.3分支中包含多条语句
包含多条语句要用花括号,如果不用,即如图
#include <stdio.h>
int main()
{
int i;
scanf("%d",&i);
if(i>0)
printf("hehe\n");
printf("haha");
return 0;
}
无论i的值是多少,都会打印haha。
应该改为:
#include <stdio.h>
int main()
{
int i;
scanf("%d",&i);
if(i>0)
{
printf("hehe\n");
printf("haha");
}
return 0;
}
当i为正数时,才会打印hehe和haha。
1.4 嵌套if
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if (num == 0)
puts("数字为0");
else if (num > 0)
puts("数字是正数");
else
puts("数字是负数");
return 0;
}
橙色部分算一个语句,当num!=0时执行
if (num > 0)
puts("数字是正数");
else
puts("数字是负数");
当num!=0时,可以将这部分单独看,就容易很多了。
当然,我们也可以将代码改写:
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if (num != 0)
if (num > 0)
puts("数字是正数");
else
puts("数字是负数");
else
puts("数字
是0");
return 0;
}
用整体法,将橙色看成一个整体。
建议:不建议这么写代码,虽然橙色部分是一个整体,不用花括号,但最好加上,有助于理解。
2.关系操作符
c语言用于比较的表达式,称为“关系表达式”,里面的运算符称为“关系运算符”,主要有以下6个。
< 小于运算符
>大于运算符
>=大于等于运算符
<=小于等于运算符
==相等运算符(注意等于号的数量!)
!=不相等运算符
若关系表达式正确,返回1,否则返回0。
猜猜看结果是什么?
没错,答案是1,因为1<3正确,返回1,1再代替%d,从而可以将1打印在屏幕上!
关系运算符不能连用
举例:
i=3;
j=6;
k=5;
大家可能以为i<j<k是假吧?
我们仔细看看:
i<j<k等价于(i<j)<k
i<j为真,返回1
1<k为真,返回1
所以,i<j<k为真!!!
所以我们应将i<j<k换成i<j&&j<k.
3.条件操作符
条件操作符也叫三目操作符,因为只有一种三目操作符,三目操作符需要三个操作数,形式如下:
exp1?exp2:exp3
exp1为真,执行exp2,所得结果就是exp1?exp2:exp3的结果。
exp1为假,执行exp3,所得结果就是exp1?exp2:exp3的结果。
练习:输入两个数,求最大值。
a=1,b=2,a>b不成立,执行b,结果为b,也就是2.
接下来,我们来看一段好玩的代码,嘿嘿(可以跳过)
先看1<2<3:
1<2为真,返回1
1<3为真,返回1
1<2<3为真,执行1<3<2
1<3为真,返回1
1<2为真,返回1
所以1<3<2的结果是1,所以(1 < 2 < 3) ? (1 < 3 < 2) : (3 < 2 < 5)的结果是1
写这个不是故意刁难大家,我只想告诉你们,写代码要把思路打开,同时适当的大胆一点,有助于我们c语言的学习。
4.逻辑运算符:&&、||、!
!:逻辑取反操作符(改变单个表达式的真假)。
&&:与运算符(两真则真,一假则假)。
||:或运算符(一真则真,两假则假)。
4.1短路
t=1;
t>5&&t<8;
因为t>5为假,所以右边不用判断,都能知道t>5&&t<8为假,故计算机就不判断了,直接出结果,相这样的求值叫短路求值,目的是为了减小计算量。(语言逻辑运算符总是先对左侧表达式求值,再对右边的表达式求值)。
练习:猜猜看会打印什么?
你们是不是这么想的,恭喜你,又错了,a是0,a++后a变为一,但a++表示a+1以前的值,也就是0,所以a++是假,后面不用看,就知道a++ && ++b && d++为假,所以后面就不算了呀。
5.switch语句
形式:
switch(表达式,可以表示负数,但不能是小数)
{
case 0:语句(就算写多个语句也不用{}。)
case 1:语句
............
case (整数,可以是负数):语句
default:
}
注意:default的位置任意,是可以写在第一行的。
switch与break
假设switch后的表达式为1,则从case1开始执行,不遇到break或“}”不停止;
举个例子:
这里的顺序是刻意打乱的,(当然,这是正确的),是为了让你们深刻理解。
这里“语言”就打印不出来了,因为遇到了break。