------ <a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>
期待与您交流! -------
分支结构和循环结构
一.程序结构
1.程序结构的概念
要求程序设计者不能随心所欲地编写程序,而要按照一定 的结构形式来设计和编写程序.它的一个重要目的是使程序具有良好的结构,使程序易于设计,易于 理解,易于调试修改,以提高设计和维护程序工作的效率.
2.程序结构的三种类型:
1)顺序结构
2)分支结构
if if-else if-else-if switch
3)循环结构
while do-while for
二.分支结构
1.if语句
if语句实现分支控制
一般形式:表示如果表达式为真,执行语句块1,否则不执行。
if(表达式)
{
语句块1
}后续语句;
例 if(a==5){
printf("恭喜你");
}
2.if...else语句
如果表达式为真,则执行语句块1,否则执行语句块2
if(表达式)
{
语句块1
}else{
语句块2
};
3.if语句嵌套
if(表达式1)
{
......
if(表达式2){}else{
}
......}else {
}
4.if...else if...else语句
如果表达式1为真,则执行语句块1,否则判断表达式2,如果为真执行语句块2,否则再判断表达式3,如果真执行语句块3, 当表达式1、2、3都不满足,会执行最后一个else语句。
if(表达式1)
{
语句块1
}else if(表达式2){
语句块2
}else if(表达式3){
语句块3
}else{
语句块4
}
5.if 语句使用注意点
1)if(条件) 可以直接写分号 “;” 表示什么也不干 “;” 空语句
2)if(条件) return 0; 程序不会往下执行了,直接退出
3)if(1)、if(-1) 表示永真 if(0) 表示为永假
4)if语句的作用域问题
5)if语句的作用域紊乱
6)遇到省略大括号的if
6.Switch分支语句
使用格式
switch(表达式){
case 常量表达式1: 语句1;
case 常量表达式2: 语句2;
...
case 常量表达式n: 语句n;
default: 语句n+1;
}
注:其语义是:计算表达式的值,并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。
7.switch使用注意事项
case后面的大括号的问题
1) 表达式的类型(case语句后的值)必须是整型或可以转变为整型的值 (byte、short、char和int类型)。
2) 功能代码部分可以写任意多句。
3) case语句可以有任意多句,可以不用加括号“{}”
4) break关键字的意思是中断,指结束switch语句,break语句为可选。
case值的规定
1)case的值1、值2...值n只能为常数或常量,不能为变量
2)case的值必须是整数,不能为浮点数
3)case后面不可以直接定义变量
4)如果在case后面定义的变量必须加上大括号
5)default语句可以写在switch语句中的任意位置,功能类似于if语句中的else(就算是写在最前面,也会最后判断)
8.分支结构的应用举例
例1
/*题目6.输入一个整数score代表分数,根据分数输出等级A-E(C语言编程题)
A:90~100
B:80~89
C:70~79
D:60~69
E:0~60
*/
#include <stdio.h>
int main(int argc, const char * argv[]) {
//输入一个整数score的分数
int score;
printf("请输入一个分数:");
scanf("%d",&score);
while (getchar() != '\n');
//判断
if(score >= 0 && score <= 100){
if (score >= 90) {
printf("A\n");
}else if (score >= 80){
printf("B\n");
}else if (score >= 70){
printf("C\n");
}else if (score >= 60){
printf("D\n");
}else{
printf("E\n");
}
}else{
printf("输入的分数范围不正确!\n");
}
return 0;
}
例2
// 题目:使用switch-case编写石头剪刀布的输入
#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char * argv[]) {
// 将布用 0 来表示
// 将剪刀用 1 来表示
// 将石头用 2 来表示
// 电脑输入
int computer = arc4random_uniform(3); // 0 1 2
printf("计算机出的是");
switch (computer) {
case 0: printf("布\n"); break;
case 1: printf("剪刀\n"); break;
default: printf("石头\n"); break;
}
// 玩家输入
printf("请玩家出拳: 0布, 1剪刀, 2石头\n");
int player;
scanf("%d", &player);
printf("玩家出的是");
switch (player) {
case 0: printf("布\n"); break;
case 1: printf("剪刀\n"); break;
default: printf("石头\n"); break;
}
switch((player - computer + 3) % 3) {
case 0: printf("平局"); break;
case 1:printf("玩家赢"); break;
default: printf("计算机赢"); break;
}
printf("\n");
return 0;
}
三.循环结构
1、循环结构概述
循环结构是程序中一种很重要的结构。其特点是,在给定条件成立时,反复执行某程序段,直到条件不成立为止。
给定的条件称为循环条件,反复执行的程序段称为循环体。
2、构成循环结构的几个条件:
一般来说一个循环需要以下几部分构成:
1)循环控制条件
循环退出的主要依据,来控制循环到底什么时候退出
2)循环体循环的过程中重复执行的代码段
3)能够让循环结束的语句(递增、递减、真、假等)能够让循环条件为假的依据,否则退出循环
3.while循环
1)while循环的格式:
while ( 条件表达式 ){
语句1;
语句2; ....}
2)while循环使用方法:
1)while循环的特点:如果while中的条件一开始就不成立,那么循环体中的语句永远不会被执行
2)while语句的语义是:如果条件成立,就会执行循环体中的语句(“循环体”就是while后面大括号{}中的内
容)。然后再次判断条件,重复上述过程,直到条件不成立就结束while循环
3).while循环使用注意
1、死循环:任何数值都真假性
while (-1) {
printf("死循环\n");
}
2、当一个变量与一个常量进行== 或 != 的时候,通常把常量写在前面
int num = 3;
while (3 == num) {
printf("num = %d\n",num);num++;
}
3、while 后如果只有一条语句它可以省略大括号
1)空语句它也是一条语句
2)while小阔号后面不可以直接写分号
int num = 0;while (num < 3); {
printf("num = %d\n",num);
num++;
}
4、作用域:内部代码块中定义的变量不可以在外边代码块中访问
while (1 < 3)
{
int a = 0;
}
printf("a = %d\n",a);
5、作用域紊乱while (1 < 3)
int num = 5;
6、最简单死循环
while (1);
4.do...while循环
1)do ... while循环的基本格式
do {
语句1;
语句2;
....
} while ( 条件 );
直到型循环:先执行循环体,然后判断条件,直到条件为假就结束
2)do...while语句用法
(1)do...while语句的语义是:
当执行到do-while循环时,首先会执行一遍循环体中的语句.接着判断while中的条件,如果条件成立,就执行循环体中的语句。 如此循环
(2)do-while循环的特点:
不管while中的条件是否成立,循环体中的语句至少会被执行一遍
3)do...while和while的对比
while 是先判断再执行
do-while 是先执行再判断
5.for循环
1)for循环的语法格式一般形式:
for(表达式1;表达式2;表达式3) {
语句;
}
2)for循环执行过程:
3)for循环使用表达式1 ---> 表达式2 ---> 语句 ---> 表达式3 --->
表达式2 ----> 语句 ---> 表达式3 --->表达式2........
for语句常见的形式:
for(循环变量赋初值;循环条件;循环变量增值)
4)for循环的其他形式
1)表达式省略(三个表达式都可以省略)for(; ;) 死循环
2)循环控制无关的任意表达式表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上的简单表达式,中间用逗号间隔。for(sum=0,i=1;i<=100;i++)sum=sum+i;或 for(i=0,j=100;i<=j;i++,j--)k=i+j;
5)for循环的嵌套
(num1>num2?num1:num2)>num3?(num1>num2?num1:num2):num3
if(表达式1){
if(表达式2){
if...
}
}
6.break语句
break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳
出switch而执行switch以后的语句;如果没有break语句,则将成为一个死循环而无法退出。
7.continue语句
continue语句的作用是跳过循环体中剩余的语句而继续下一次。continue语句只
用在for、while、do-while等循环体中,常与if条件语句一起使用,用来加速循环。
8.循环结构应用举例
例1
// 题目:输入5个数,统计数据(求最大值,最小值,平均值,和)
//
#include <stdio.h>
int main1(int argc, const char * argv[]) {
// 求和
int i = 0, input, sum = 0;
while (i < 5) {
printf("请输入第 %d 个数字\n", i + 1);
scanf("%d", &input);
sum += input;
i++;
}
printf("这五个数字的和为 %d\n", sum);
return 0;
}
int main(int argc, const char * argv[]) {
// 让用户输入 5 个数字, 然后统计数字的最大数, 最小数, 和与平均值
int i = 0, min = 0, max = 0, sum = 0;
double avg = 0;
int input;
while (i < 5) {
// 提示输入
printf("请输入第 %d 个数字\n", i+1);
scanf("%d", &input);
// 求和
sum += input;
// 求最大小
if( i == 0 ) {
min = max = input;
} else {
// 判断后面的几次大小
if( input < min ) {
min = input;
}
if( input > max ) {
max = input;
}
}
i++;
}
// 计算平均数
avg = sum * 1.0 / 5;
printf("5 个数字求和为: %d\n", sum);
printf("5 个数字求平均为: %lf\n", avg);
printf("5 个数字中最大的为: %d\n", max);
printf("5 个数字中最小的为: %d\n", min);
return 0;
}例2
// 题目:求100-1000内的水仙花数
//
#include <stdio.h>
#include <math.h>
int main(int argc, const char * argv[]) {
for(int i = 100; i < 1000; i++) {
// 判断 i 是不是水仙花数
int gewei = i % 10;
int shiwei = i / 10 % 10;
int baiwei = i / 100;
if(pow(gewei, 3) + pow(shiwei, 3) + pow(baiwei, 3) == i) {
printf("%d\n", i);
}
}
return 0;
}
例3
// 题目:利用for循环打印等腰三角形
//
#include <stdio.h>
int main(int argc, const char * argv[]) {
int rows = 10;
for (int i = 0; i < rows; i++) {
// 加空格
for (int j = 0; j < rows - 1 - i; j++) {
printf(" ");
}
for (int j = 0; j < 2 * i + 1; j++) {
printf("*");
}
printf("\n");
}
for (int i = rows - 1 - 1 ; i >= 0; i--) {
// 加空格
for (int j = 0; j < rows - 1 - i; j++) {
printf(" ");
}
for (int j = 0; j < 2 * i + 1; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
本文深入探讨Java编程中的分支结构(if语句、switch语句)与循环结构(while循环、do-while循环、for循环),详细解析各部分概念、使用方法及常见注意事项,并通过实例代码展示应用。

被折叠的 条评论
为什么被折叠?



