重点
1.分支语句
if
switch
2.循环语句
while
for
do while
3.go to语句
C语言是一门结构化的程序设计语言
1.顺序结构
2.选择结构
3.循环结构
什么是语句?
C语言中由一个分号“;”隔开的就是一条语句。
一,分支语句(选择结构)
1.if语句
语法结构
① if(表达式)
语句;
#include<stdio.h>
int main()
{
int age;
scanf("%d", &age);
if (age < 18)
{
printf("未成年\n");
}
return 0;
}
②if(表达式)
语句1;
else
语句2;
#include<stdio.h>
int main()
{
int age;
scanf("%d", &age);
if (age < 18)
{
printf("未成年\n");
}
else
{
printf("已成年");
}
return 0;
}
③if(表达式1) //多分支
语句1;
else if(表达式2)
语句2;
else
语句3;
#include<stdio.h>
int main()
{
int age;
scanf("%d", &age);
if (age < 18)
{
printf("未成年\n");
}
else if (age > 18 && age < 50)
{
printf("中年");
}
else
{
printf("老年");
}
return 0;
}
注释:if语句中的表达式用来判断条件是否为真,如果为真执行,为假不执行。
在学语言中如何判断真假?
0表示假,非0都为真
#include<stdio.h>
int main()
{
int age = 10;
if (age = 5)
{
printf("hehe\n");
}
return 0;
}
这段代码的输出结果为hehe,age=5是赋值语句,所以age=5为真,执行输出语句判断age等不等于2要用“==”
注意
上面这段代码什么都不输出,代码书写不规范,else应与第二个if结合。
结论:else与他最近的if相结合
改正
#include<stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
{
if (b == 2)
printf("hehe\n");
}
else
{
printf("haha\n");
}
return 0;
}
输出结果为haha
练习
1.判断一个数是否为奇数
#include<stdio.h>
int main()
{
int num=0;
scanf("%d", &num);
if (num % 2 ==1)
{
printf("这个数是奇数");
}
return 0;
}
2.输出1-100之间的奇数
#include<stdio.h>
int main()
{
int num=1;
for (num = 1; num < 100; num++)
{
if (num % 2 == 1)
{
printf("%d ",num);
}
}
return 0;
}
#include<stdio.h>
int main()
{
int num=1;
while(num<100)
{
printf("%d ", num);
num = num + 2;
}
return 0;
}
2.switch语句
switch语句常常用于多分支的情况。
switch(整形表达式)//这里必须是整形表达式,语句项中也必须是整形
{
语句项;
}
比如:
#include<stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("星期一");
break;
case 2:
printf("星期二");
break;
case 3:
printf("星期三");
break;
case 4:
printf("星期四");
break;
case 5:
printf("星期五");
break;
case 6:
printf("星期六");
break;
case 7:
printf("星期天");
break;
}
return 0;
}
注意:每一个case语句结尾都要加上break,否则它会继续执行下面的语句(break的作用是跳出循环)
如果表达的值与所有的case标签的值都不匹配怎么办?
这时就要用到default语句,处理不能被case语句处理的情况。
#include<stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("星期一");
break;
case 2:
printf("星期二");
break;
case 3:
printf("星期三");
break;
case 4:
printf("星期四");
break;
case 5:
printf("星期五");
break;
case 6:
printf("星期六");
break;
case 7:
printf("星期天");
break;
default:
printf("输入错误\n");
break; }
return 0;
}
二.循环语句
1.while语句
while(表达式)
循环语句;
举例:打印1-10的数字
#include<stdio.h>
int main()
{
int num = 1;
while (num <=10)
{
printf("%d ", num);
num = num + 1;
}
return 0;
}
while语句中的break和continue
break直接结束循环,continue跳过本次循环执行下一次循环
#include<stdio.h>
int main()
{
int num = 0;
while (num < 10)
{
num = num + 1;
if (num == 5)
continue;
printf("%d ", num);
}
return 0;
}
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
if(i == 5)
break;
printf("%d ",i);
}
return 0;
}
2.for循环
语法:
for(表达式1;表达式2;表达式3)
循环语句;
表达式1 表达式1为初始化部分,用于初始化循环变量的。 表达式2 表达式2为条件判断部分,用于判断
循环时候终止。 表达式3 表达式3为调整部分,用于循环条件的调整。
举例:打印1-10的数字
#include<stdio.h>
int main()
{
int i;
for (i = 1; i <= 10; i++)
//i等于1满足小于等于10执行printf语句,然后i++进行下一次判断
{
printf("%d ", i);
}
return 0;
}
for循环与while循环对比
#include<stdio.h>
int main()
{
int i=1;
while (i <= 10)
{
printf("%d ", i);
i++;
}
printf("\n");
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
while循环条件分散不易查看修改,for循环的条件集中容易查看和修改使用频率更高。
3.do while()循环
语法:
do
循环语句;
while(表达式);
执行流程:
do语句的特点:
循环至少执行一次,使用的场景有限,所以不是经常使用。
举例:输出1-10
#include<stdio.h>
int main()
{
int i=1;
do
{
printf("%d ", i);
i++;
} while (i <= 10);//循环条件
return 0;
}
练习:
1.计算10的阶乘。
#include<stdio.h>
int main()
{
int i = 1;
int sum = 1;
for (i = 1; i <= 10; i++)
{
sum = i * sum;
}
printf("%d ", sum);
return 0;
}
2.计算1-10阶乘的和
#include<stdio.h>
int main()
{
int i = 1;
int sum1 = 1;
int sum2 = 0;
for (i = 1; i <=10; i++)
{
for (int j = 1; j <=i; j++)
{
//sum1 = 1;
sum1 = j * sum1;
}
sum2 = sum2 + sum1;
sum1 = 1; //循环一次后将sum1重新置为1,计算下一个数的阶乘
}
printf("%d ", sum2);
return 0;
}