当前位置 博文首页 > HyDraZya的博客:【C语言基础】分支和循环初步理解
#include <stdio.h>
#include <string.h>
//创建一个结构体类型
struct Book
{
char name[20];
short price;//55
};
int main()
{
//利用结构体类型创建一个该类型的结构体变量
struct Book b1 = {"C语言程序设计", 55};
struct Book* pb = &b1;
//利用pb打印出我的书名和价格
// -> 结构体指针使用->
printf("%s\n",pb->name);
printf("%d\n",pb->price);
// . 结构体实用变量使用.成员
printf("%s\n", b1.name);
printf("%d\n", b1.price);
//同理用*指针
printf("%s\n",(*pb).name);
printf("%d\n",(*pb).price);
b1.price = 15;
printf("%d\n", b1.price);
//赋值按照定义的变量顺序进行
strcpy(b1.name, "C++");
printf("%s\n", b1.name);
return 0;
}
1.代码结构:
2.分支结构 -?if语句
(1)if语句-单分支
说明:要么执行,要么不执行,当表达式成立的之后,则执行语句;如果表达式不成立,则直接跳过整个if语句继续执行后面的代码
语法结构:
if(表达式)
? ? ? ? 执行语句;
练习:
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age<18);
{
printf("未成年\n");
}
return 0;
}
注:表达式必须为真才执行语句
(2)if语句-双分支
说明:如果表达式成立,则执行语句1;如果不成立,则执行语句2
语法结构:
if(表达式1)
? ? ? ? 执行语句1;
else
? ? ? ? 执行语句2;
练习:
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age<18);
{
printf("未成年\n");
}
else
{
printf("成年\n");
}
return 0;
}
(3)if语句-多分支
说明:实现了多选一的操作,会根据不同的条件从上往下来进行匹配,如果匹配上了,则执行对应的语句,然后直接结束整个if-elif语句,但是,如果所有的条件都不成立的话,则执行else后面的语句
语法结构:
if(表达式1)
? ? ? ? 执行语句1;
else if(表达式2)
? ? ? ? 执行语句2;
else
? ? ? ? 执行语句3;
练习:
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age<18)
{
printf("少年\n");
}
else if(age >= 18 && age < 30)
{
printf("青年\n");
}
else if(age >= 30 && age < 50)
{
printf("中年\n");
}
else if(age >= 50 && age < 80)
{
printf("老年\n");
}
else
{
printf("老不死\n");
}
return 0;
}
注:不管if-elif-else有多少个分支,都只会执行其中的一个分支
(4)嵌套if语句
说明:说明:if语句的嵌套,可以在单分支,双分支,多分支之间进行任意组合
语法结构:
if(表达式1)
? ? ? ? 执行语句1;
if(表达式2)
? ? ? ? 执行语句2;
注:从语法角度来说,嵌套的层数没有任何的限制,但是,为了代码的可读性和可维护性,嵌套层数不要超过3层
3.分支结构 - Switch语句?
语法结构:
swtich(整型表达式)
{
? ? ? ? 语句项;
}
语句项:case?语句
case 整型常量表达式;
? ? ? ? 执行语句;
练习:?
#include <stdio.h>
int main()
{
int day = 0;
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break;
case 6:
case 7:
printf("weekend\n");
break;
}
return 0;
}
编程好习惯
在每个 switch 语句中都放一条 default 子句是个好习惯,甚至可以在后边再加一个 break 。?
例题:
#include <stdio.h>
int main()
{
int n = 1;
int m = 2;
switch (n)
{
case 1:
m++;
case 2:
n++;
case 3:
switch (n)
{//switch允许嵌套使用
case 1:
n++;
case 2:
m++;
n++;
break;
}
case 4:
m++;
break;
default:
break;
}
printf("m = %d, n = %d\n", m, n);
return 0;
}
while语法结构:
while (条件表达式)
????????循环语句;
?练习:
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d\n", i);
i = i + 1;
}
return 0;
}
while语句中的break和continue?
break:
#include <stdio.h>
int main()
{
int i = 1;
while(i <= 10)
{
if(i == 5)
break;
printf("%d\n", i);
i = i + 1;
}
return 0;
}
?总结: break 在 while 循环中的作用:
其实在循环中只要遇到 break,就停止后期的所有循环,直接中止循环。所以:while 中的 break 是用于永久终止循环的
continue:?
#include <stdio.h>
int main()
{
int i = 1;
while(i <= 10)
{
i = i + 1;
if(i == 5)
continue;
printf("%d ", i);
}
return 0;
}
?总结: continue?在?while?循环中的作用就是:
continue?是用于终止本次循环的,也就是本次循环中?continue?后边的代码不会再执行,而是直接 跳转到?while?语句的判断部分。进行下一次循环的入口判断。
for语法结构:
for(表达式1;表达式2;表达式3)
????????循环语句;
表达式1 表达式1为初始化部分,用于初始化循环变量的。 表达式2 表达式2为条件判断部分,用于判断 循环时候终止。 表达式3 表达式3为调整部分,用于循环条件的调整。
练习:
#include <stdio.h>
int main()
{
int i = 0;
//for(i=1 - 初始化; i<=10 - 判断部分;i++ - 调整部分)
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
for语句中的break和continue??
break:
#include <stdio.h>
int main()
{
int i = 0;
for(i = 1; i <= 10; i++)
{
if(i == 5)
break;
printf("%d",i);
}
getchar();
return 0;
}
continue:
#include <stdio.h>
int main()
{
int i = 0;
for(i = 1; i <= 10; i++)
{
if(i == 5)
continue;
printf("%d ",i);
}
getchar();
return 0;
}
?for语句的循环控制变量
1. 不可在 for 循环体内修改循环变量,防止 for 循环失去控制。
2. 建议 for 语句的循环控制变量的取值采用“前闭后开区间”写法。
int i = 0;
//前闭后开的写法
for(i=0; i<10; i++)
{}
//两边都是闭区间
for(i=0; i<=9; i++)
{}
do语句的语法结构:
do
????????循环语句;
while(表达式);
练习:
#include <stdio.h>
int main()
{
int i = 10;
do
{
printf("%d\n", i);
}
while (i < 10);
return 0;
}
do while循环中的break和continue
break:
#include <stdio.h>
int main()
{
int i = 10;
do
{
if(5 == 1)
break;
printf("%d ",i);
}while(i<10);
getchar();
return 0;
}
continue:
#include <stdio.h>
int main()
{
int i = 10;
do
{
if(5 == 1)
continue;
printf("%d\n",i);
}while(i<10);
getchar();
return 0;
}
特点:循环至少执行一次,使用的场景有限,所以不是经常使用。?
cs