引入中间变量T
使
t=x;
x=y;
y=t;
意义为x,y位置交换
三种形式(1):简单if 语句
eg: if(x>y)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ?//判断表达式,为真则执行下面语句
? ? ? ? ? ? ?{t=a;a=b;b=t;}? ? ? ? ? ? ? ?//实现a和b的互换 //否则不执行
(2):if else语句
eg: if(x+y>z&&x+z>y&&y+z>x) //判断表达式的值,为真则执行A
{
? ? ? ? c=(x+y+z)/2.0;
? ? ? ? s=sqrt(c*(c-x)(c-y)(c-z));
? ? ? ? printf("面积:%.2lf\n",s);
}
else? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //值为假,或者说不满足表达式,则执行语句B
? ? printf("三边无法构成三角形\n");
(3):If语句嵌套,实现多分支
eg:
if(x>=0)
? ? ? ? ? if(x==0)
? ? ? ? ? ? ? ? y=0;
? ? ? ? ? else y=1;
else
? ? ? ? ? y=-1;
为使if嵌套结构更具可读性,通常使用以下结构
eg:
if(c<31)
? ? ? ? ? ? ?printf("c是控制字符\n");
? ? ? else if(c>='0'&&c<='9')
? ? ? ? ? ? ?printf("c是数字\n");
? ? ? else if(c>='A'&&c<='Z')
? ? ? ? ? ? ?printf("c是大写字母\n");
? ? ? else if(c>='a'&&c<='z')
? ? ? ? ? ? ?printf("c是小写字母\n");
? ? ? else
? ? ? ? ? ? ?printf("c是其他字符\n");
补充说明:
1.表达式值为0按假处理
2.每语句分号不可省略
3.if和else后的语句只能是一条语句。若有多条操作语句则必须用“{ }”括起来如:
if(x>y)
{t=x;
x=y;
y=t;}
else
? ?x=y;
主要形式:三目运算符
表达式1?表达式2:表达式3
eg: 下两式等价
if(a>b)
? ? ? ? ? ?max=a;
else
? ? ? ? ? ?max=b;
max=a>b?a:b;
主要形式:
switch(表达式) //只能是整型或者字符型
{ case 常量表达式1:语句组1;break;? ? //表达式的值与case后值相等则执行该式后的语句组
case 常量表达式2:语句组2;break;
...
case 常量表达式n:语句组n;break;
default:语句组 n+1; }? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//所有case都没有匹配的执行default后面的
补充说明:
1.case 后不需使用花括号也可以
2.多个case可以执行同一个语句
eg:switch(s)
{ case 5:? ? ? ? ? ? ? ? ? ? ? ? ? //这里用冒号
case 4:
case 3: printf("Pass\n");break; }
3.default语句可以省略
4.switch语句也可以嵌套
switch(x)
? ? {
? ? ? ? ? ?case 1:switch(y)
? ? ? ? ? ? ? ? ? ? ? { case 0:a++;break;
? ? ? ? ? ? ? ? ? ? ? ? case 1:b++;break;
? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? case 2:a++;b++; break;
? ? ? ? ? case 3:a++;b++;
}
主要形式:(特点:先判断表达式,后执行循环体)
while(表达式)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//判断表达式的真假,为真(非零)时执行循环体结构。
循环体语句;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //否则退出循环
eg :
while((c=getchar())!='\n')? ? ? ? ? ? ? ? ? //直到回车结束
? ? ? ? ? ? ? putchar(c);? ? ? ? ? ? ? ? ? ? ? ? ?//接收字符
补充说明:
1.循环体有多条语句要用花括号构成一条复合语句
2.条件表达式不成立(为0),或循环体内遇到break,return,goto等语句,将退出while循环
3.循环体需要无休止进行时可采用以下形式
while(1)
? ? ?循环体;
主要形式:(特点:先执行循环体后判断表达式。循环至少循环一次)
do? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//先执行一次循环体
? ? ? ? ? ? 循环体语句
while(表达式)? ? ? ? ? ? ? ? ? ? //再判断表达式,如果结果为真,重复循环。为假则停止执行
eg:
do
? ? ? ? ?{
? ? ? ? ? ? ? ? ? ? sum+=i;
? ? ? ? ? ? ? ? ? ? i++;
}while(i<=100);
补充说明:
1.while语句后的分号勿漏
2.循环体有多条语句记得用花括号括起来
主要形式:
for ([表达式1];[表达式2];[表达式3])
? ? ? ? ? ? ? ? ? ? ? ? //表达式1赋初值,表达式2循环条件,表达式3使循环趋向终止 的条件
循环体语句;
eg:
for(i=1;i<=100;i++)
? ? ? ? ? ? ? ? ?sum+=i;
补充说明:
1.循环体有多条语句要用花括号括起来
2.while,do while,for 之间可以互相嵌套
eg:
for(i=1;i<=9;i++)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//外层循环:行循环
{
? ? ? ? ? for(j=1;j<=i;j++)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//内层循环:列循环打印
? ? ? ? ? ? ? ? ?printf("%d*%d=%2d ",j,i,i*j);
? ? ? ? ? printf("\n");
}
3.外层循环一次内层循环多次(1到i)
break语句:作用:跳出循环体,执行循环语句后面的语句
补充说明:1.不能单独使用,只能用于循环语句和switch语句中
2.break在内层循环体中只终结内层循环
continue语句:
作用:满足条件,终止本次循环的执行,跳过循环体中剩余语句,继续进行下一次循环
eg:
for(i=1;i<=10;i++)
{? ? scanf("%d",&a);
if(a%2==0)
continue;
num++;? ? ?}