目录
1.前言
循环结构概念:循环结构是C语言的一种基本结构,它允许代码被多次重复的执行。在C语言中,有三种主要的结构:for循环,while循环和do-while循环,循环结构的存在使得程序能够高效地处理需要重复操作的任务。
1.1本篇所讲重点
本篇以:for---while---do-while---switch----break----continue
2.for循环
2.1for循环讲解
在C语言中,for循环绝对是使用最多的循环了,它的语法格式如下:
for (表达式1; 表达式2; 表达式3)
{
循环语句;
}
表达式1:用于初始化循环变量,例如int i = 0,定义并且初始化了一个循环变量i.
表达式2:在每次循环迭代前进行求值。只要条件表达式的值为真,循环就会继续执行。
表达式3:在每次循环执行完之后,更新循环变量i的值。
2.2for循环嵌套
这其实就是嵌套,第一个循环语句,按需求写,原理就是外层控制内层循环,在C语言中,for循环是非常受欢迎的循环,也是非常有用的。
for(表达式1;表达式2;表达式3)
{
循环语句;
for(表达式1;表达式2;表达式3)
{
循环语句;
}
}
现在就让我们来练习一下吧,关于for循环嵌套的练习
1.打印99乘法表
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
for (int i = 0; i <= 9; i++)
{
for (int j = 1; j < i + 1; j++)
{
printf("%d*%d=%d\t", j, i, j * i);
}
printf("\n");
}
return 0;
}
讲解:
99乘法表使用了for循环嵌套,首先看问题,99乘法表是由数字组成,这就需要使用整形(int)来定义数据类型,然后99乘法表最高是9乘以9所以定义表达式2是小于或者等于9,这是i++,循环返回时,更新数据,现在外层循环讲完了,这时就该内层循环了,首先定义整形数据类型j,然后j等于1,j小于i+1,j++更新数据,这一段循环是指,外层循环i在循环时,i= 0,小于9直接进入了,内层循环中,所以j等于1,是指打印99乘法表时,j要优先输出,然后 内层循环过后,进入外层,后在进入内层,直到全部满足条件为止结束。
运行结果:
2.3单for循环练习:
1.打印1到10的数字
#include <stdio.h>
int main()
{
for (int i = 0; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
讲解:
循环10次,每次加1,加到满足条件为止。
运行结果如下:
2.求1+2+3....+100之和
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int sum = 0;
for (int i = 0; i <= 100; i++)
{
sum += i;
}
printf("1+2+3...+100的结果为:%d\n", sum);
return 0;
}
讲解:
首先定义一个sum,去接受1+2+3...+100的值,然后定义i去加这个数字,i= 0; i< = 100; i++,就是这个循环变量初始化为0,循环100次,进入循环后,sum += i,接收这个值,加完之后更新数据,在次进入循环,这时i为1,在加,循环往复100次,最终得到5050这个值。
运行结果如下:
2.4.逆序输出
#include <stdio.h>
int main()
{
int num = 0;
printf("请输入一个正整数:");
scanf("%d", &num);
for (; num > 0; num /= 10)
{
printf("%d ", num % 10);
}
return 0;
}
这里for循环的用法之一(后面会讲),逆序输出正整数,首先表达式2,先判断num大于0,num /= 10(num = num / 10), 每次循环都除以10,例如1234,第一次除得到4,第二次3,依此类推,直到0为止,printf("%d ",num % 10);,num%10,这里的意思就是,num % 10 之后得到4,打印到屏幕上,取模之后这个数字就是123了,123在除以10,在取模,直到零为止。
调试图:
调试到scanf输入1234后:
当1234进入循环后,printf("%d",num % 10);取模后,得到个位4,打印到屏幕上,for在表达式除以10,就剩余123,在进取模,这时123的3就是个位,在取3,直到零为止。
讲解最终结果:
运行结果如下:
3.while循环
while相对for来说比较简单,只需要判断条件就可以,为真循环,为假不执行
3.1while讲解
while (条件表达式)
{
循环语句
}
条件表达式:先判断表达式的值,为真执行,为假不执行,执行到结果位假时,结束循环。
3.2while为真为假案例
为真时会一直执行语句,无限循环,这也是一个易错点,在写代码时需要注意,当条件表达式没有临界点时,它会一直循环,不会停止,直到你手动结束它。
为假时则不执行
3.3练习
打印1到10的数:
#include <stdio.h>
int main()
{
int i = 1;
while( i <= 10)
{
printf("%d ",i);
i++;
}
return 0;
}
讲解:
首先,这是按顺序执行的程序,进入程序后,先执行int i = 1;执行完之后i得到了1。
执行到printf把1打印在屏幕上之后,i++执行,执行完之后,返回到while条件表达式,判断有没有满足条件,不满足条件继续执行,循环往复,直到满足条件,当i等于10的时候,执行完printf,i++,在此判断 i <= 10, 不满足,不需要在执行,程序结束。
运行结果如下:
打印星号:
#include <stdio.h>
int main()
{
int i = 1, j ;
while(i <= 5)
{
j = 1;
while(j <= i)
{
printf("*");
j++;
}
printf("\n");
i++;
}
return 0;
}
讲解:
目的是使用*打印图案,首先初始化变量i,为1,第一层while进入循环,i小于5,执行下面语句,这里先定义了,j = 1,目的是为内层循环做准备,当 j <= i 时,执行下面的语句打印一个*号,j自增,然后换行,i自增,然后跳到i <= 5这里,继续循环,要注意的是,这是j为2,需要打印2个星,依次循环直到停止,就会得到最终的一个图案。
运行结果:
4.do-while循环
do-while和while很相似,不同的是,do-while需要先进行一次循环,在判断。
4.1do-while讲解
语法如下:
do
{
循环语句;
} while (条件表达式);
4.2do-while先执行一次
例如:输入 12 结果:2
#include <stdio.h>
int main()
{
int i = 0;
scanf("%d", &i);
int a = 0;
do {
a++;
i = i / 10;
} while (i);
printf("%d",a);
return 0;
}
运行结果如下:
4.3练习
题目:计算数字累加,让用户输入一个数n,计算1到n的和
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int cnt = 0;
int sum = 0;
do
{
sum += cnt;
cnt++;
} while (cnt <= n);
printf("%d ", sum);
return 0;
}
讲解:
我创建了三个变量,一个用户输入的n,输入需要累加计算的数,然后创建cnt来判断,在创建一个变量在接受最终的结果。
运行结果如下:
5.switch语句
在C语言中除了if之外,还有switch这样的分支结构。
5.1switch讲解
这样的结构相较于if来说是比较清晰的,不过各有各的本事,不能去混淆它俩。
switch (表达式)
{
case 1:
语句;
break;
case 2:
语句;
break;
...
default:
语句;
break;
}
我相信你在看了我的详解if语句之后,在看这个switch语句来水非常简单了,那么直接来练习一下
5.2练习
用户输入一个数字,判断星期几,超出7就显示错误,重新输入
#include <stdio.h>
int main()
{
int week = 0;
while (1)
{
scanf("%d", &week);
switch (week)
{
case 1:
printf("星期一");
break;
case 2:
printf("星期二");
break;
case 3:
printf("星期三");
break;
case 4:
printf("星期四");
break;
case 5:
printf("星期五");
break;
case 6:
printf("星期六");
break;
case 7:
printf("星期日");
break;
default:
printf("输入错误重新输入\n");
}
}
return 0;
}
运行结果:
5.3 switch注意事项:
关于default顺序的问题:
在使用switch中,可能会遇到这一种情况,例如switc表达式中的值无法匹配case语句的时候,这时候就要假如default了。
去掉break,这些代码的运行结果是什么???
#include <stdio.h>
int main()
{
int week = 0;
while (1)
{
scanf("%d", &week);
switch (week)
{
case 1:
printf("星期一");
case 2:
printf("星期二");
case 3:
printf("星期三");
case 4:
printf("星期四");
case 5:
printf("星期五");
case 6:
printf("星期六");
case 7:
printf("星期日");
default:
printf("输入错误重新输入\n");
}
}
return 0;
}
讲解:
break在C语言中是满足条件,跳出循环,当输入1时,输出case 1中的语句,按照顺序往下输出,到break时跳出循环,但是去掉break之后,程序就会按照顺序依次输出
6.break和continue
break:满足条件跳出循环
continue:满足条件跳出本次循环
for循环中的break和continue
break
#include <stdio.h>
int main()
{
for (int i = 0; i <= 100; i++)
{
if (i == 5)
{
break;
}
printf("%d ", i);
}
return 0;
}
讲解:
break:满足条件,跳出循环,i == 5 时满足条件,跳出循环,到输出到4时,条件满足5时退出循环。
continue
#include <stdio.h>
int main()
{
for (int i = 0; i <= 10; i++)
{
if (i == 5)
{
continue;
}
printf("%d ", i);
}
return 0;
}
讲解:
continue:满足条件,跳出本次循环,当i == 5时,continue跳出本次循环,就是跳出5,之后正常循环输出。
本篇到此为止,如果对您有帮助,请给博主一个小小赞。
标签:int,C语言,break,while,详解,表达式,printf,循环 From: https://blog.csdn.net/hklhklhkhl123/article/details/144297168