语句简介
C语句可分为五类,分别为表达式语句、函数调用语句、控制语句、复合语句、空语句。分支和循环语句都属于控制语句,控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句,分为三类分别为分支语句(条件判断语句):if语句、switch语句;循环执行语句:for语句、while语句、do...while语句;转向语句:break语句、goto语句、continue语句、return语句。
分支语句
if语句
分支语句就是让程序有选择的执行,分为三类:单分支、双分支、多分支。
单分支
语法结构:
if(表达式)
语句;
说明:如果表达式为真,则执行语句块;如果表达式为假,则不执行。在C语言中,零表示假,非零表示真。若要执行多条语句,则需要在if(表达式)后加上{},{}内为要执行的语句。举例说明:
#include <stdio.h>
int main()
{
//编写一个程序,如果年龄大于等于18岁,则输出“你已成年”
//分析:1、使用int age接收输入的年龄,2、使用if语句判断年龄是否大于等于18
int age = 0;
printf("请输入您的年龄:");
scanf("%d",&age);
if(age >= 18){
printf("你已成年\n");
} //该if语句中只包含一条语句,所以可写{},也可以不写,若有多条语句,则必须加上{}
//编写一个程序,如果年龄大于等于18岁,使用两条语句输出“你已成年” “需对自己的言行举止负责”
int age = 0;
printf("请输入您的年龄:");
scanf("%d",&age);
if(age >= 18){
printf("你已成年\n");
printf("需对自己的言行举止负责\n");
} //该if语句中只包含两条语句,所以必须加上{}
return 0 ;
}
输出结果为
双分支
语法结构:
if(表达式)
语句1;
else
语句2;
说明:如果表达式为真,则执行语句1;如果表达式为假,则执行语句2。
举例说明:
#include <stdio.h>
int main()
{
//编写一个程序,输入年龄,若大于等于18,则输出“您已成年”,若小于18,则输出“您还未成年”
//分析:1、使用int age 接收输入的年龄,2、使用if...else语句进行判断
int age = 0;
printf("请输入您的年龄:");
scanf("%d",&age);
if(age >= 18)
{
printf("您已成年\n");
}
else
{
printf("您还未成年\n");
}
return 0;
}
输出结果为:
多分支
语法结构:
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
说明:如果表达式1为真,则执行语句1;如果表达式1为假,则判断表达式2,若表达式2为真,则执行语句2;若表达式2为假,则执行语句3。多分支语句中可以有多个表达式。
举例说明:
#include <stdio.h>
int main()
{
//编写一个程序,输入一个分数,判断该分数的等级,若90分<=分数<=100分为优秀,若70分<=分数<90分为良好,
//若60分<=分数<80分为及格,若0<=分数<60分为不及格,
//分析:1、使用double score接收输入的分数,2、用if...else if...else语句判断
double score = 0.0;
printf("请输入您的成绩:");
scanf("%lf",&score);
if(score <= 100 && score >= 90)
{
printf("优秀\n");
}
else if(score < 90 && score >= 70)
{
printf("良好\n");
}
else if(score < 70 && score >= 60)
{
printf("及格\n");
}
else if(score < 60 && score >= 0)
{
printf("不及格\n");
}
else
{
printf("输入错误,请重新输入\n");
}
return 0;
}
输出结果为:
switch语句
switch语句多用于多分支
语法结构:
switch(表达式)
{
case 整形常量表达式1:
语句1;
break;
case 整形常量表达式2:
语句2;
break;
......
case 整形常量表达式n:
语句n;
break;
default:
default语句;
break;
}
说明:
举例说明:
#include <stdio.h>
int main() {
//编写一个程序,打印月份所属的季节,3、4、5春季;6、7、8夏季;9、10、11秋季;12、1、2冬季
//分析:1、用int month接收输入的月份,使用switch进行判断
int month = 0;
printf("请输入月份:");
scanf("%d", &month);
switch (month) {
case 3:
printf("春季\n");
break; //break表示完成一个case分支后跳出switch循环
case 4:
printf("春季\n");
break;
case 5:
printf("春季\n");
break;
case 6:
printf("夏季\n");
break;
case 7:
printf("夏季\n");
break;
case 8:
printf("夏季\n");
break;
case 9:
printf("秋季\n");
break;
case 10:
printf("秋季\n");
break;
case 11:
printf("秋季\n");
break;
case 12:
printf("冬季\n");
break;
case 1:
printf("冬季\n");
break;
case 2:
printf("冬季\n");
break;
default: //default语句可写可不写,若没有匹配的case时,会执行default语句
printf("您的输入错误,请重新输入\n");
break;
}
return 0;
}
输出结果为:
若不加break则会在执行完上一个case之后继续执行下一个case
#include <stdio.h>
int main() {
int month = 0;
printf("请输入月份:");
scanf("%d", &month);
switch (month) {
case 3:
printf("春季\n");
case 4:
printf("春季\n");
case 5:
printf("春季\n");
case 6:
printf("夏季\n");
case 7:
printf("夏季\n");
case 8:
printf("夏季\n");
case 9:
printf("秋季\n");
case 10:
printf("秋季\n");
case 11:
printf("秋季\n");
case 12:
printf("冬季\n");
case 1:
printf("冬季\n");
case 2:
printf("冬季\n");
default:
printf("您的输入错误,请重新输入\n");
}
return 0;
}
输出结果为:
该程序还可以通过break来简化:
#include <stdio.h>
int main() {
int month = 0;
printf("请输入月份:");
scanf("%d", &month);
switch (month) {
case 3:
case 4:
case 5:
printf("春季\n");
break;
case 6:
case 7:
case 8:
printf("夏季\n");
break;
case 9:
case 10:
case 11:
printf("秋季\n");
break;
case 12:
case 1:
case 2:
printf("冬季\n");
break;
default:
printf("您的输入错误,请重新输入\n");
break;
}
return 0;
}
输出结果为:
循环语句
for语句
语法结构
for(表达式1;表达式2;表达式3)
{
循环语句(可以是多条语句);
}
说明:表达式1为初始化,用于初始化循环变量;表达式2为条件判断,用于判断循环是否终止;表达式3为调整部分,用于循环条件的调整。for语句的执行顺序为:表达式1—表达式2—循环语句—表达式3—表达式2—循环语句—表达式3...... 先表达式1(初始化循环变量),再表达式2(判断条件),若条件成立,则执行循环语句,再执行表达式3(调整循环条件),再表达式2(判断条件)是否成立,若成立则一直循环下去;若表达式2(不成立),则退出循环。
举例说明:
#include <stdio.h>
//编写一个程序,打印1-100之间所有的奇数
//分析:1、用int i 存放变量;2、使用for循环判断100以内的数字;3、for循环里嵌套if语句判断i是否为奇数
int main() {
int i = 0;
for (i = 0; i <= 100; i++) {
if (i % 2 != 0) {
printf("%d ", i);
}
}
return 0;
}
输出结果为:
在for语句中可以使用break和continue语句。break是用来永久终止循环的;continue是用来终止本次循环的。
举例说明:
#include <stdio.h>
int main() {
int i = 0;
for (i = 0; i <= 10; i++) {
printf("%d ", i);
}
return 0;
}
输出结果为:
若使用break语句:
#include <stdio.h>
int main() {
int i = 0;
for (i = 0; i <= 10; i++) {
if (i == 5) {
break;
}
printf("%d ", i);
}
return 0;
}
输出结果为:
若使用continue语句
#include <stdio.h>
int main() {
int i = 0;
for (i = 0; i <= 10; i++) {
if (i == 5) {
continue;
}
printf("%d ", i);
}
return 0;
}
输出结果为:
while语句
语法结构
表达式1;
while(表达式2)
{
循环语句(可以是多条语句);
表达式3;
}
while语句的句法功能与for语句相同
举例说明:
#include <stdio.h>
//编写一个程序,打印20-200之间所有的偶数的和
//分析:1.使用int i 存放变量,int sum存放变量的和;2、使用for循环判断20-200之间的数字;
//3、在for循环内部嵌套if语句panduan偶数;4、将符合条件的变量i的值再加上sum的值赋值给sum
int main() {
int i = 20;
int sum = 0;
while (i <= 200) {
if (i % 2 == 0) {
sum += i;
}
i++;
}
printf("%d", sum);
return 0;
}
输出结果为:
在while语句中break和continue的用法与for语句中一致。
do...while语句
语法结构
表达式1;
do
{
循环语句(可以是多条语句);
表达式3;
}while(表达式2);
说明:do...while语句是先执行,后判断。至少会执行一次。而for语句和while语句是先判断后执行。
举例说明:
#include <stdio.h>
//编写一个程序,计算1-200之间,能被5整除,不能被3整除的个数
//分析:1|用int i存放变量;2、使用do...while语句筛选出1-200的数字;
//3、在do...while语句内部嵌套if语句判断符合条件的数字;4、若数字符合条件则num加1
int main() {
int i = 1;
int num = 0;
do {
if (i % 5 == 0 && i % 3 != 0) {
num++;
}
i++;
} while (i <= 200);
printf("%d", num);
return 0;
}
输出结果为:
目前我仅仅了解了以上几种控制语句的用法,goto语句暂时还没有学习到。对于上面的知识点我也做了一份思维导图,可能做的不太好,希望看到这篇文章的各位能指点一二。