提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、if语句
- 二、switch语句
- 三、while循环
- 四、for循环
- 五、do-while循环
- 六、break和continue语句
- 七、循环的嵌套
- 八、goto语句
- 总结
前言
计算机科学家通过观察,将世界万物变化的规律归纳为顺序、选择与循环三种逻辑结构,并用代码的形式演绎它们,开发出了包括if语句、switch语句、for循环语句等计算机语言结构,又称分支和循环。通过上述结构的排列组合,程序员能借助计算机解决生活中的许多问题。
提示:以下是本篇文章正文内容,下面案例可供参考
一、if语句
-
if
if的语法格式
if (表达式) 语句;
若表达式为真(结果非0),则执行语句;若表达式为假(结果为0),则不执行语句。
注意:if只能控制紧跟其后的第1条语句,若要控制if后的多条语句,则需要用大括号将其括起来,如:
if (表达式)
{
语句1;
语句2;
……
}
-
if……else
若表达式为真,则执行语句1;若表达式为假,则执行语句2.
if……else的语法格式
if (表达式) 语句1; else 语句2;
注意:else总是与距离其最近的if配对,而同两者对其与否无关,如:
if (表达式1)
语句1;
if (表达式2)//else与此if配对
语句2;
else
语句3;
-
if……else if……else
若表达式1为真,则执行语句1;若表达式2成立,则执行语句2;以此类推,若表达式1~n-1都不成立,则执行语句n。
if……else if……else的语法格式
if (表达式1) 语句1; else if (表达式2) 语句2; …… else if (表达式n-1) 语句n-1; else 语句n;
-
if语句案例举隅
1. 输入一个人的年龄
2. 如果年龄<18岁,打印“少年”
3. 如果年龄在18岁至44岁之间,打印“青年”
4. 如果年龄在44岁至59岁之间,打印“中老年”
5. 如果年龄在60岁至89岁之间,打印“老年”
6. 如果年龄≥90岁,打印“老寿星”
#include <stdio.h>
int main()
{
int age = 0;
printf("请输入您的年龄:>");
scanf("%d", &age);
if (age < 18)
printf("少年\n");
else if (age >=18 && age <44)
printf("青年\n");
else if (age >=44 && age <60)
printf("中老年\n");
else if (age >=60 && age <89)
printf("老年\n");
else
printf("老寿星\n");
return 0;
}
二、switch语句
switch语句的语法格式
switch (表达式) { case value1: 语句1; break; case value2: 语句2; break; …… default: 语句n; break; }
根据表达式不同的值,执行不同的case分支下的语句,如表达式的结果为value1,则执行语句1。若表达式的结果与任意case分支的值均不匹配,则执行default分支下的语句。
break的作用是结束switch语句,当有break时,程序执行完相应case分支下的语句后随即跳出switch语句;没有break时,程序会依次执行每一个case分支下的语句,直到遇到break或执行完整个switch语句为止。
注意:switch后的表达式必须是整型表达式,case后的值必须是整型常量表达式。尽管如此,由于字符在计算机中是以ASCLL码的形式存储的,因而switch后表达式的结果或case后的值为ASCLL码表上的某一字符时,该语句并不会出现语法错误。
if语句和switch语句都属于分支语句,前者更适用于分支标准为数值范围的情况,后者更适用于分支标准为某个精确的数值的情况。
1. 输入一个1~7的数字,打印对应的星期几
2. 例如:输入1,输出“星期一”
#include <stdio.h>
int main()
{
int day = 0;
printf("请输入数字:>");
scanf("%d", &day);
switch (day)
{
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;
deault:
printf("请重新输入\n");
break;
}
return 0;
}
三、while循环
while循环的语法格式
while (表达式) 语句;
首先执行表达式,若表达式为假,则循环直接结束;若表达式为真,则执行循环语句,执行完后再判断是否进行下一次循环。
1. 输入一个正整数,逆序打印这个整数的每一位
2. 如:输入1234,输出“4 3 2 1”
#include <stdio.h>
int main()
{
int i = 0;
printf("请输入一个正整数:>");
scanf("%d", &i);
while(i)
{
printf("%d ", i % 10);
i = i / 10;
}
return 0;
}
四、for循环
for循环的语法格式
for (表达式1; 表达式2; 表达式3) 语句;
表达式1用于循环变量的初始化,表达式2用于循环结束条件的判断,表达式3用于循环变量的调整。
首先执行表达式1初始化循环变量,然后执行表达式2进行判断,如果结果为假,则循环结束,如果结果为真,则执行循环语句,循环语句执行完后,再执行表达式3以调整循环变量,然后再执行表达式2判断是否进行下一次循环。
1. 计算1~100之间3的倍数的数字之和
#include <stdio.h>
int main()
{
int i = 0;
int sum = 0;
for (i = 1; i <= 100; i++)
{
if (i % 3 == 0)
sum += i;
}
printf("%d\n", sum);
return 0;
}
五、do-while循环
do-while循环的语法格式
do { 语句; } while (表达式);
do-while循环先直接进入循环体,执行循环语句,然后再执行while后的判断表达式,结果为真则进行下一次循环,结果为假则不再继续循环。
1. 输入一个正整数,计算这个整数是几位数
2. 如:输入1234,输出“4”
#include <stdio.h>
int main()
{
int num = 0;
int count = 0;
printf("请输入一个正整数:>");
scanf("%d", &num);
do
{
count++;
num = num / 10;
} while (num);
printf("%d\n", count);
return 0;
}
六、break和continue语句
-
break
break的作用是用于永久地终止循环,只要break被执行,直接就会跳出循环,继续往后执行。
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
break;//当i等于5后,就执行break,循环就终止了
printf("%d ", i);
i += 1;
}
return 0;
}
如上述代码所示,打印1、2、3、4后,当i等于5时,循环在break的地方终止,不再打印,不再循环。在for循环和do-while循环中亦是如此。
-
continue
continue的作用是跳过本次循环continue后面的代码,再for循环和while循环中有所差异。
while循环中的continue
#include <stdio.h> int main() { int i =1; while (i <= 10) { if (i == 5) continue; //当i等于5后,就执行continue,直接跳过continue后的代码,去循环判断的地方 //因为这里跳过了i += 1,所以i一直为5,程序陷入死循环 printf("%d ", i); i += 1; } return 0; }
for循环中的continue
#include <stido.h> int main() { int i = 1; for (i = 1; i <= 10; i++) { if (i == 5) continue;//这里continue跳过了后边的打印,来到了i++的调整部分 printf("%d ", i); } return 0; }
七、循环的嵌套
循环的嵌套,即一个循环内部使用另一个或多个循环。
1. 找出100~200之间的素数,打印在屏幕上,并计算其个数
2. 注:素数又称为质数,指只能被1和其本身整除的数字
#include <stdio.h>
#include <math.h>
int main()
{
int i = 0;
int j = 0;
int count = 0;
for (i = 100; i <= 200; i++)
{
int flag = 1;
for (j = 2; j <= sqrt(i); j++)
//sqrt(i)表示i的平方根,只要判断2~sqrt(i)有无数能整除i即可
{
if (i % j == 0)
{
flag = 0;
break;
}
}
if (flag == 1)
{
printf("%d\n", i);
count++;
}
}
printf("100~200间素数的个数是%d\n", count);
return 0;
}
八、goto语句
goto语句可以实现在同一个函数内跳转到设置好的标号处。
#include <stdio.h>
int main()
{
printf("hehe\n");
goto next; //next即为goto语句的标号
printf("haha\n");
next: //跳转至此,即跳过了“haha”的打印
printf("heihei\n");
return 0;
}
goto语句也可用于快速跳出多层循环。
for (...)
{
for (...)
{
for (...)
{
if (disaster)
goto error;
}
}
}
error:
...
总结
分支和循环语句是构建C语言程序基本框架,前者包括if语句和switch语句,后者包括while循环、for循环和do-while循环语句。不同的语句之间可以嵌套使用,来解决复杂的问题。此外,还可以配合break、continue和goto等关键字使程序的实现和终止更加灵活。