做判断
如果
if(条件成立){
...
}
条件成立运行大括号里,没有成立跳过。
判断的条件:关系运算,做比较的运算符
条件(关系运算符)
两个值的关系符合关系运算符的预期时,关系运算的结果为整数1,否则为0
(关系成立,结果为1,关系不成立,结果为0)
printf("%d\n",5==3);论断不成立,结果为0
printf("%d\n",5>3);论断成立,结果为1
printf("%d\n",5<=3);论断不成立,结果为0
结果
优先级
所有的关系运算符的优先级比算术运算符的低,但是比附值运算符的高
7 > = 3 + 4 先加再做比较
int r = a > 0 ; 先比较再附值
验证
结果为 1 。
判断是否相等的 == 和 != 的优先级 比其他的低
连续的的关系运算符时从左到右进行的
5 > 3 == 6 > 4 ( 5大于3 是否等于 6大于4 )
6 > 5 > 4 ( 连续关系的运算,6大于5成立,结果为1,1大于4不成立,结果为0 )
a == b == 6 ( a是否等于b,得到结果再判断是否等于6 )
a == b > 0 ( b是否大于0,得到结果再判断是否等于a )
找零计算器
#include <stdio.h>
int main()
{
//
初始化
int price = 0;
int bill = 0;
//
读入金额和票面
printf("请输入金额:");
scanf("%d", &price);
printf("请输入票面:");
scanf("%d", &bill);
//
计算找零
printf("应该找您:%d\n", bill - price);
return 0;
}
注释
以两个斜杠“//”开头得语句把程序分成三个部分:
1.初始化
2.读入金额和票面
3.计算并打印找零
(//是C99的独有注释,ANSI C不支持)
注释(comment)
插入再程序代码中,用来向读者提供解释信息。
他们对于程序的功能没有任何影响,但是往往能使得程序更容易被人类读者理解。
/* */注释
延续数行的注释,要用多行注释的格式来写。(传统C语言注释符号)
多行注释由一对字符序列“/*”开始,以“*/”结束。
也可以用于一行内的注释
int ak = 47/*36*/,y=9; ( 符号中的36既是注释 )
If语句与流程图
椭圆行 ( 开始或结束 )
平行四边行 ( 输入或输出 )
菱形 ( 判断 )
else
else:否则的话
比较数的大小
两种方式编程
第一种比较大小,用if...else...语句,将大值赋予max,然后输出。
第二种,直接将b赋予max,然后用if语句比较大小,满足a>b,则将a附值给max,不满足直接输出b。
if和else后面也可以没有{}而是一条语句
if语句
一个基本的if语句由一个关键字if开头,跟上在括号里的一个表示条件的逻辑表达是,然后是一对大括号“{}”之间的若干条语句。
如果表示条件的逻辑表达式的结果不是0,那么就执行后面跟着的这对大括号中的语句,否则就跳过这些语句不执行,而继续下面的其他语句。
if ( total > amount )
total += amount +10 ;
( if语句后面要么跟着大括号“{}”,要么跟着一句语句。但不能在圆括号后跟表示语句结束的封号“;”,if圆括号后不是if语句结束的位置。)
( 后面的赋值语句是写在if的下一行,并且缩进了,在这行结束时有一个表示语句结束的“;”。表明这条赋值语句是if语句的一部分,
if语句拥有和控制这条赋值语句,决定它是否要被执行。 )
( else和if一样,可以在圆括号后没有大括号,但是只有一句语句是有效的 )
if和else可以不用{},但是最好用{},方便读者阅读,方便程序的调试,并且可以添加多条语句。
计算薪水
判断成绩
三个数比较大小
#include <stdio.h>
int main(int argc, const char * argv[])
{
//比较三个数大小
int a,b,c;
printf("请输入三个数");
scanf("%d %d %d",&a,&b,&c);
int max=0;
if ( a>b ) {
if ( a>c ) {
max = a; //a大于b同时a大于c
} else {
max = c;
}//a比b大,但是小于c
} else {
if ( b>c ) {
max = b;
} else {
max = c;
}
}
printf("The max is %d\n",max);
return 0;
}
嵌套的判断
当if的条件满足或者不满足的时候,要执行的语句也可以是一条if或if-else语句 这就是嵌套的if语句
if (code==READY)
if (count<20)
printf("一切正常是\n");
else
printf("继续等待\n");
else的匹配规则---else总是和最近的那个if匹配
(
在没有括号的情况下)
在if或else后总是用{}即使只有一条语句的时候
分段函数
f(x)=-1;x<0
0;x=0
2x;x>0
if (x<0){
f=-1;
} else if (x==0){
f=0;
} else {
f=2*x;
}
级联的if-else if
if (exp1)
st1;
else if(exp2)
st2;
else
st3
if语句常见的错误
忘了大括号
if后面的分号
错误使用==和=
使人困惑的else
代码风格
在if和else之后必须加上大括号形成语句块;
大括号内的语句缩进一个tab的位置;

|| 屏幕小,看更多的语句 || 大括号前后对应方便阅读 || 括号和语句分开,方便注释调试语句||
switch-case语句
多路分支-
判断
if (type==1)
printf("你好");
else if ("type==2")
printf("早上好");
else if("type==3")
printf("晚上好");
else if("type==4")
printf("再见");
else
printf("啊,什么啊?");
=============>改写成switch-case
switch (type)
{
case 1:
printf("你好");
break;
case 2:
printf("早上好");
break;
case 3:
printf("晚上好");
break;
case 4:
printf("再见");
break;
default:
printf("啊,什么啊?");
}
swich-case
swich(控制表达式){
case 常量:
语句
..........
case 常量:
语句
..........
default:
语句
}
=========> 这个控制表达式只能是整数型的结果
常量可以是常数,也可以是常数计算的表达式
break
switch 语句可以看作是一种基于计算的跳转,计算控制表达式的值后,程序会跳转到相匹配的case(分支标号)处。
分支标号只是说明switch内部位置的路径在执行完分支中的最后一条语句后,如果后面没有break,就会顺序执行到下面的case里去,直到遇到一个break,或者switch结束为止。
case是入口
break是出口
