选择结构和条件判断
C语言有两种选择语句:(1)if语句,用来实现两个分支的选择结构;(2)switch语句,用来实现多分支的选择结构。
用if语句实现选择结构
#include<stdio.h>
int 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);
return 0;
}
if语句无论写在几行上面,都是一个整体,属于同一个语句
有三种逻辑运算符:与(AND)&&,或(OR)||,非(NOT)!。
关系表达式和逻辑表达式的值是0和1,而且在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”。那么就可以理解为什么在if语句中表达式可以是任何数值表达式。
if(x!=0) 语句1 //括号内的表达式是关系表达式,如果x不等于0,则执行语句1
if(x>0 && y>0) 语句2 //括号内的表达式是逻辑表达式,如果x和y都大于0,则执行语句2
if(x)语句3 //表达式是变量,如果x不等于0,则条件判断结果为真,执行语句3
if(1) 语句4 //表达式为非0整数,条件判断结果为真,执行语句4
if(0) 语句5 //表达式是常数0,条件判断结果为假,不执行语句5,接着执行下一条语句
用switch语句实现多分支选择结构
switch语句的作用是根据表达式的值,是流程跳转到不同的语句。
一般情况下,在执行一个case子句后,应当用break语句流程跳出switch结构,即终止switch语句的执行。
选择结构程序综合举例
写一程序判断是否为闰年
#include<stdio.h>
int main()
{
int year, leap;
printf("Please enter year:");
scanf("%d",&year);
if (year % 4 == 0)
{
if (year % 100 == 0)
{
if (year % 400 == 0) leap = 1;
else leap = 0;
}
else leap = 1 ;
}
else leap = 0;
if (leap)
printf("%d is", year);
else
printf("%d is not",year);
printf(" a leap year");
return 0;
}
循环程序结构设计
while语句实现循环 while(表达式)语句
只要当循环条件表达式为真,就执行循环体语句。
while循环的特点是先判断条件表达式,后执行循环体语句。
#include<stdio.h>
int main()
{
int i = 1;
int sum = 0;
while (i <= 100)
{
sum = sum + i;
i++;
}
printf("%d\n",i);
printf("%d\n",sum);
return 0;
}
2.do....while语句实现循环
do
语句
while(表达式)
先无条件的执行循环体,然后判断循环体条件是否成立
#include<stdio.h>
int main()
{
int i = 1;
int sum = 0;
do
{
sum = sum + i;
++i;
}
while (i <= 100);
printf("%d\n",sum);
printf("%d\n",i);
return 0;
}
3.用for语句实现循环:for语句更为灵活,不仅可以用于循环次数已经确定的情况,还可以用于循环次数不确定而只给出循环结束条件的情况,他可以完全代替while语句
for(表达式1;表达式2;表达式3)
语句
for(i=1;i<=100;i++)
printf("%d",i);
4.用break语句提前终止循环(使流程跳到循环体之外,接着执行循环体下面的语句)
break语句只能用于循环语句和switch语句之中,而不能单独使用。
#include<stdio.h>
#define SUM 100000
int main()
{
float amount, aver, total;
int i;
for (int i = 1, total = 0; i <= 100000; i++)
{
printf("Please Enter amount:");
scanf("%f",&amount);
total = total + amount;
if (total >= SUM) break;
}
aver = total / i;
printf("num=%d\naver=%10.2f\n",i,aver);
return 0;
}
5.用coutinue语句提前结束本次循环