目录
1.4控制语句
1.4.1 选择控制语句
1.4.2 循环控制语句
1.4控制语句
1.4.1 选择控制语句
1、 if 语句
形式:
(1) if(条件表达式)
{ //复合语句,若干条语句的集合
语句 1;
语句 2; }
如果条件成立执行大括号里的所有语句,不成立的话大括号里的语句不执行
例 20: #include<stdio.h>
int main() {
int a=10;
if(a>5) {
printf("a>5\n");
return 0;
}}
(2) if(条件表达式) {
} else {
}
if else 语句的作用是,如果 if 的条件成立,执行 if 后面{}内的语句,否则执行 else 后的语句
例 21: #include<stdio.h>
int main() {
int a=10;
if(a>5) {
printf("a>5\n");
} else {
printf("a<=5\n"); }
return 0; }
注意 if 和 else 之间只能有一条语句,或者有一个复合语句,否则编译会出错
例 22: if()
语句 1;
语句 2;
else
语句 3;
语句 4;
这是错误的,if 和 else 之间只能有一条语句,如果有多条语句的话加大括号
例 23: if(){
语句 1;
语句 2;
}
else
{
语句 3;
语句 4;
}
正确
(3) if(条件表达式 1) { }
else if(条件表达式 2) { }
else if(条件表达式 3) { }
else { }
在判断的时候,从上往下判断,一旦有成立的表达式,执行对应的复合语句, 下边的就不再判断了,各个条件判断是互斥的
例 24: #include<stdio.h>
int main(void) {
char ch;
float score = 0;
printf("请输入学生分数:\n");
scanf("%f",&score);
if(score<0 || score >100) { printf("你所输入的信息有错\n");
return 0; }
else if( score<60)
{
ch = 'E';
}
else if ( score < 70 )
{
ch = 'D';
}
else if ( score < 80 )
{
ch = 'C';
}
else if ( score < 90 )
{
ch = 'B';
}
else
{
ch = 'A';
}
printf("成绩评定为:%c\n",ch);
return 0;
}
2、 switch 语句
switch(表达式)//表达式只能是字符型或整型的(short int int long int)
{
case 常量表达式1:
语句1;
break;
case 常量表达式2:
语句2;
break;
default:
语句3;
break; }
注意:break 的使用
例 25: #include<stdio.h> int main(int argc, char *argv[]
{
int n;
printf("请输入一个 1~7 的数\n");
scanf_s("%d",&n);
switch(n)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期天\n");
break;
default:
printf("您的输入有误,请输入 1~7 的数\n");
break;
}
return 0;
}
1.4.2 循环控制语句
1、 for 循环 for(表达式 1;表达式 2;表达式 3)
{ //复合语句,循环体
} 第一次进入循环的时候执行表达式 1,表达式 1 只干一次, 表达式 2,是循环的条件,
只有表达式 2 为真了,才执行循环体,也就是说 每次进入循环体之前要判断表达式 2 是否为真。
每次执行完循环体后,首先执行表达式 3
例 25:for 循环求 1~100 的和
#include<stdio.h>
int main(void) {
int i;
int sum=0;
for(i=1;i<=100;i++) {
sum = sum+i; }
printf("sum=%d\n",sum);
return 0; }
例 26:
#include <stdio.h>
int main(int argc, char *argv[]) {
int i,j;
for(i=1;i<=9;i++) {
for(j=1;j<=i;j++) {
printf("%d*%d=%d ",j,i,j*i);
}
printf("\n"); }
return 0; }
2、 while 循环
(1) 形式 1:
while(条件表达式) {
//循环体,复合语句 }
进入 while 循环的时候,首先会判断条件表达式是否为真,为真进入循环体,否则退出循环
例 27:
#include <stdio.h>
int main(void)
{
int i=1;
int sum=0;
while(i<=100)
{
sum = sum+i;
i++;
}
printf("sum=%d\n",sum);
return 0;
}
(2) 形式 2 :
do{//循环体}
while(条件表达式);
先执行循环体里的代码,然后去判断条件表达式是否为真,为真再次执行循环体,否则退出循环
例 28:
#include <stdio.h>
int main(void)
{
int i=1;
int sum=0;
do
{
sum = sum+i;
i++;
}while(i<=100);
printf("sum=%d\n",sum);
return 0;
}
形式 1 和形式 2 的区别是,
形式 1 先判断在执行循环体,形式 2 先执行循环体,再判断 break 跳出循环 continue 结束本次循环,进入下一次循环.
例 29:
#include <stdio.h>
int main(void)
{
int i;
int sum=0;
for(i=1;i<=100;i++)
{
if(i==10)
break;//将 break 修改成 continue 看效果
sum = sum+i;
}
printf("sum=%d\n",sum);
return 0;
}
return 返回函数的意思。结束 return 所在的函数.
3、 goto
例 30:
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("test000000000000000000\n");
printf("test1111111111111111\n");
goto tmp;
printf("test222222222222222222\n");
printf("test3333333333333333\n");
printf("test444444444444444444444\n");
printf("test55555555555555555555\n");
tmp:
printf("test66666666666666666\n");
return 0;
}