分支与循环精讲
一分支语句
1.if语句
if有三种格式
①if(条件判断){
执行语句
}
代码演示
#include<stdio.h>
int main()
{
int n = 1;
if (n > 0) {
printf("hello c!");
}
return 0;
}
运行结果

在if中通过判断条件是否为真来执行语句
C语言中非0为真,非0判断条件为真
代码演示
#include<stdio.h>
int main()
{
if (1) {
printf("hello c!");
}
return 0;
}

注意1:这里并不是固定非0一定就是1,非0就为真
##1代码演示
#include<stdio.h>
int main()
{
if (-1) {
printf("hello c!");
}
return 0;
}
运行结果

##2代码演示
#include<stdio.h>
int main()
{
if (2) {
printf("hello c!");
}
return 0;
}
运行结果

当出现两种情况,if太过麻烦
②if-else
格式:
if(条件判断){
执行语句
}
else{
执行语句
}
代码演示
#include<stdio.h>
int main() {
int n = 0;
printf("请输入一个整数:");
scanf("%d", &n);
if (n > 0) {
printf("你的数是正数");
}
else {
printf("非正数");
}
return 0;
}
运行结果

③if-else if-else(多控制语句)
格式:
if(条件判断){
执行语句
}
else if(条件判断){
执行语句
}
…
else{
执行语句
}
代码演示
#include<stdio.h>
int main() {
int n = 0;
printf("请输入一个整数:");
scanf("%d", &n);
if (n > 0) {
printf("你的数是正数");
}
else if (n == 0) {
printf("你的数是0");
}
else {
printf("你的数是负数");
}
return 0;
}
运行结果:

注意2:else if可以有很多个,依据自身判断写出合适的代码
例题:
题目:根据输入的数字范围输出不同的信息
代码演示
#include <stdio.h>
int main() {
int number;
printf("请输入一个整数: ");
scanf("%d", &number);
if (number < 0) {
printf("这是一个负数。\n");
} else if (number == 0) {
printf("这是零。\n");
} else if (number > 0 && number <= 10) {
printf("这是一个介于1到10之间的正数。\n");
} else if (number > 10 && number <= 20) {
printf("这是一个介于11到20之间的正数。\n");
} else if (number > 20 && number <= 30) {
printf("这是一个介于21到30之间的正数。\n");
} else if (number > 30 && number <= 40) {
printf("这是一个介于31到40之间的正数。\n");
} else if (number > 40 && number <= 50) {
printf("这是一个介于41到50之间的正数。\n");
} else {
printf("这是一个大于50的正数。\n");
}
return 0;
}
运行结果:
人
2.switch语句
格式:
switch(规定的变量类型){
case result1:
{
执行语句
break;
}
case result2:
{
执行语句
break;
}
…
default :
{
执行语句
break;
}
注意3:switch里的变量只能为整型,字符
为啥字符可以?
字符类型本质其实是整型,可在ASCII码表找到对应,但字符串不可以**
代码演示:
#include<stdio.h>
//根据输入的数字判断今天星期几
int main() {
int day;
printf("请输入你的数字:\n");
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;
}
default:
{
printf("今天星期日");
break;
}
}
return 0;
}
运行结果

注意4:switch具有穿透性,当执行完对应的语句后,不会停下,后面若有语句,会执行后面所有语句;
将上述代码break去掉
#include<stdio.h>
//根据输入的数字判断今天星期几
int main() {
int day;
printf("请输入你的数字:\n");
scanf("%d", &day);
switch (day) {
case 1:
{
printf("今天星期一");
}
case 2:
{
printf("今天星期二");
}
case 3:
{
printf("今天星期三");
}
case 4:
{
printf("今天星期四");
}
case 5:
{
printf("今天星期五");
break;
}
case 6:
{
printf("今天星期六");
}
default:
{
printf("今天星期日");
}
}
return 0;
}
运行结果

switch和if语句用法相似,else与default相近都是用来当替补,做备胎的,需要记住以下几点;
#①:else所匹配的是前面最近的if,else放在最后;
#②:一个swich语句只有一个default,
3.三目操作符
**格式:
条件表达式?表达式1:表达式2;**
代码演示
#include<stdio.h>
int main() {
int a, b;
printf("输入两个数:");
scanf("%d %d", &a, &b);
int max = a > b ? a : b;
printf("%d\n", max);
return 0;
}
运行结果

三目操作符用来简单,合理运用能提高代码效率
二,循环语句
1.for循环
格式
for(初始化;条件判断;更新迭代){
}
代码演示
#include<stdio.h>
int main() {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
printf("1-100的和:%d", sum);
}
运行结果

2.while循环
格式:
初始化
while(条件判断){
执行语句
}
思维图
代码演示
#include<stdio.h>
int main() {
int sum = 0;
int i = 1;
while (i <= 100) {
sum += i;
i++;
}
printf("1-100的和:%d", sum);
}
运行结果

3.do while循环
注意5:do while循环与之前不同,是先运行在判断,其他循环都是先判断在运行,所以无论条件判断是真是假都至少执行一次.
格式:
do{
执行语句
}
思维图

代码演示:
#include<stdio.h>
int main() {
int n = -1;
do {
printf("helllo c");
} while (n >= 0);
return 0;
}
运行结果

很明显-1是小于0的,在条件判断里面是假,但还是执行了一次;
三,go to语句
go to 语句的作用是跳过,我们用一个关机代码演示一遍
1.go to实例
//1,程序运行一分钟后关机.
//2,如果输入:我是猪,则结束关机
//windows关机:shutdown
//shutdown -s -t 60---->关机
//shutdown -a--->取消关机
//system函数执行系统命令,头文件<windows.h>
//两个字符串判断是否相等,不能使用==,使用strcmp函数,头文件<string.h>
#include<stdio.h>
#include<windows.h>
#include<string.h>
int main() {
char arr[20] = { 0 };
system("shutdown - s - t 60");
again:
printf("你的电脑要关机了,如果不想,请输入我是猪\n");
scanf("%s", arr);
if (strcmp(arr, "我是猪") == 0) {
system("shutdown -a");
}
else {
goto again;//用到了跳转语句,直接跳到again
}
return 0;
}
四,猜数字小游戏
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void game(int input);
int main() {
int input = 0;
do
{
printf("*******************\n");
printf("****** 1.play******\n");
printf("***** 0.exit*****\n");
scanf("%d", &input);
switch (input) {
case 1:
{
printf("play game");
game(input);//进入函数里面猜数字;
break;
}
case 0:
{
printf("已退出");
break;
}
default:
{
break;
}
}
} while (input);
return 0;
}
void game(int input) {
int num = 0;
printf("请输入1-100你猜的数字\n");
srand((unsigned int)time(NULL));
int random = rand()%100+1;
while (1) {
scanf("%d", &num);
if (num > random) {
printf("猜大了\n");
}
else if (num < random) {
printf("猜小了\n");
}
else
{
printf("恭喜猜对了\n");
break;
}
}
}
小游戏比较简单,感兴趣可以玩一下,可以发挥自己想象力不断改善完善小游戏
五,break和continue
这两个关键字很重要,常用
break是结束整个循环;‘’
continue是结束当前循环,下一次循环满足条件表达式会继续执行的;
代码演示break:
#include<stdio.h>
int main()
{
for (int i = 1; i <= 5; i++) {
if (i == 3) {
break;
}
printf("数字为%d\n",i);
}
return 0;
}
运行结果

代码演示continue:
#include<stdio.h>
int main()
{
for (int i = 1; i <= 5; i++) {
if (i == 3) {
continue;
}
printf("数字为%d\n",i);
}
return 0;
}
运行结果

很明显当用break是i=3时直接跳过,结束了所有循环;
continue时只是跳过了i=3,后面循环还是会执行;
1198

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



