第四章分支结构程序
一.if语句
(一)if语句的三种形式
1.if语句的第一种形式
if(表达式) 语句;
解释:如果表达式为真,则执行语句,否则不执行该语句if(a>b) printf(“%d”,a);
2.if的第二种形式
if(表达式)
语句1;
else
语句2;
解释:如果表达式为真,则执行语句1,否则执行语句2 if(a>b) printf(“%d”,a);
else printf(“%d”,b);
完成的功能:输入a,b中的最大值
#include <stdio.h>
main()
{
int a,b,k;
scanf("%d,%d",&a,&b);
k=a;
if(a<b) k=a%b;
else k=b%a;
printf("%d\n",k);
}/*运行时输入5,2,问:输出的结果为?*/
#include <stdio.h>
main()
{
int a=1,b=2,c=3,d;
if(a==b)
d=1;
else
d=c;
printf("%d\n",d);
}
3.if的第三种形式
if(表达式1)
语句1;
else if(表达式2)
语句2;。
else if(表达式n-1)
语句n-1;
else 语句n;
if(score>=90) a++;
else if(score>=80) b++; else if(score>=70) c++; else if(score>=60) d++; else e++;
#include <stdio.h>
main()
{
float x=2.0,y;
if(x<0.0) y=0.0;
else if(x<10.0) y=1.0/x;
else y=1.0;
printf("%f\n",y);
}/*程序的输出结果为:0.500000*/
4.注意事项:
(1)if后的表达式可以是关系表达式,逻辑表达式或任意合
法的表达式
if(3) printf(“OK!”);
if(a==b&&x==y) printf(“a=b,x=y”);
if(‘a’) printf(“%c”,’a’);
(2)条件判断必须用小括号括起来,语句之后必加分号
(3)所有的语句都应该是单条语句,如果不是用大括号括
起来组成复合语句
if(a>b)
{
a++;
b++;
}
Else
{
a=0;
b=0;
#include <stdio.h>
main()
{
int a=5,b=2;
if(a<b)
a=3;
b=4;
printf("%d,%d\n",a,b);
}/*程序的输出结果为:5,4*/
#include <stdio.h>
main()
{
int a=-1,b=1,k;
if((++a<0)&&(b--<=0))
printf("%d,%d\n",a,b);
else
printf("%d,%d\n",b,a); }/*程序的输出结果为:1,0*/
#include <stdio.h>
main()
{
int a=3,b=5,c=7;
if(a>b)
a=b;
c=a;
if(c!=a) c=b;
printf("%d,%d,%d\n",a,b,c); }/*程序的输出结果为:3,5,3*/
#include <stdio.h>
main()
{
float a,b,t;
scanf("%f,%f",&a,&b);
if(a>b)
{
t=a;a=b;b=t;
}
printf("%-5.2f,%-5.2f\n",a,b);
}/*运行时输入3.6,-3.2,问:输出结果为:-3.20, 3.60
x=y;y=z;z=x;完成的功能是把y,z互换*/
二.if语句的嵌套
嵌套:if中又包含了一个或多个if
一般形式:
if( )
if( )语句1;
else 语句2;
else
if()语句3;
else 语句4;
if和else 的配对原则:else总是和它上面的最近的未配对的if配对
(1)if(x<0) y=-1;
else if(x==0) y=0;
else y=1;
(2)if(x>=0)
if(x>0) y=1;
else y=0;
else y=-1;
(3)y=0;
if(x!=0)
if(x>0) y=1;
else y=-1;
(4)y=-1;
if(x>=0)
if(x>0) y=1;
else y=0;
二.多分支选择结构switch语句
1.一般形式:
switch(表达式)
{
case 常量表达式1:语句1;
case 常量表达式2:语句2;
case 常量表达式3:语句3;。
case 常量表达式n-1:语句n-1;
default: 语句n;
}
2.求解过程:计算表达式的值,并与各个常量表达式相比较,
若相等则执行其后的语句,依次执行,若都不等则执行default后的语句
3.
#include <stdio.h>
main()
{
int a;
scanf("%d",&a);
switch(a)
{
case 1:printf("Monday\n");break;
case 2:printf("Tuesday\n");break;
case 3:printf("Wednesday\n");break;
case 4:printf("Thursday\n");break;
case 5:printf("Friday\n");break;
case 6:printf("Saturday\n");break;
case 7:printf("Sunday\n");break;
default:printf("error\n");
}
}
注意:(1)表达式可以是整型或字符型,但不可以是实型(2)表达式和各个常量表达式的数据类型一致
(3)各个常量表达式不可以重复
(4)case和常量表达式之间需有一个空格
#include <stdio.h>
main()
{
char ch;
ch=getchar();
switch(ch)
{
case 'H':printf("Hello !\n");
case 'G':printf("Good evening!\n");
default:printf("Bye_bye!\n");
}
}
/*运行时输入H,则输出结果为:Hello !
Good evening!
Bye_bye!*/
#include <stdio.h>
main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:switch(y)
{
case 0: a++;break;
case 1: b++;break;
}
case 2:a++;b++;break;
case 3:a++;b++;
}
printf("a=%d,b=%d\n",a,b); }/*运行的结果为:a=2,b=1*/。