1,循环语句
有时候我们需要连续重复相同/类似的代码很多遍,就需要用到循环语句
循环 -》 就是连续去做重复的事情
在c语言中,有三种循环语句 while do while for
还有一条语句可以实现循环的效果 : goto
2,while语句
语法:
while(表达式)
循环体语句块
当while()中的表达式成立,就会执行循环体语句块,执行完语句块之后,再次判断表达式是否成立
如果成立,再次执行循环体语句块,执行完语句块之后,再次判断表达式是否成立
如果成立,再次执行循环体语句块,执行完语句块之后,再次判断表达式是否成立
.......
直到某一次判断表达式不成立,结束该while语句
如果表达式永远成立,我们称之为“死循环”
表达式:任意的合法的c语言表达式都可以
while语句的循环体建议用 {} 括起来(如果不括起来,循环体语句就只有一条),
while的首字母w和 左括号{ 和右括号}在一条线上,{}里面的语句块要用 tab键往右缩进
练习:
求 [100,200]范围内所有偶数之和
3, do ... while语句
语法:
do
{
循环体语句块
}while(表达式); //必须要有分号
先无条件的执行循环语句一次
判断表达式是否成立,如果成立,则再次执行语句块,执行完之后,再次判断表达式是否成立
如果成立,则再次执行语句块,执行完之后,再次判断表达式是否成立
如果成立,则再次执行语句块,执行完之后,再次判断表达式是否成立
...
直到某一次判断表达式不成立,结束该do while语句
练习:
1,求一个整数的 n次方
2,输入一个正整数,逆序输出这个整数的每一位
12345 -> 5 4 3 2 1
0 -> 0
3,输入一个正整数,求它的阶乘
n = 1*2*3...*n
累乘
int j = 1;//保存阶乘
int i = 1;//用来循环
int n;
scanf("%d",&n);
while(i<=n)
{
j *= i;
i++;
}
4,求两个正整数的最大公约数
被这两个数能同时整除,并且是最大的那一个
穷举法:把所有可能的情况一一列举出来,进行分析判断,找出符合要求的那一个
int n,m;
scanf("%d%d",&n,&m);
m,n的最大公约数,怎么穷举?
1,先确定范围 [1,min(n,m)]
2,再循环判断是否为公约数,保留最大的那个
5,输入一个正整数n,判断是否为质数/素数?
质数:只能被1和它本身整除
思路:
统计 [2,n-1]范围内能被n整除的个数 《-穷举
int n;
scanf("%d",&n);
int i=2;
int count = 0;
while(i<n)
{
if(n%i == 0)//能被整除
{
count++;
break;
}
}
if(count == 0)
{
是质数
}
else
{
不是质数
}
4, for语句
语法:
for(表达式1;表达式2;表达式3) //注意:是分号,不是逗号
循环体语句块
先运行一次表达式1,再判断表达式2是否成立,如果成立,就执行语句块,然后执行表达式3,
再判断表达式2是否成立,如果成立,就执行语句块,然后执行表达式3,
再判断表达式2是否成立,如果成立,就执行语句块,然后执行表达式3,
......
直到表达式2不成立
表达式1,2,3都可以省略,-》空语句,但是两个分号不能省略
如果表达式2省略,表示一直成立
例子:
求 [100,200]范围内所有偶数之和
int i;
int sum = 0;
for(i=100;i<=200;i+=2;)
{
sum += i;
}
int i=100;
int sum = 0;//必须要置0
while(i<=200)
{
sum += i;//累加, sum的初始值必须为0
i+=2;
}
练习:
请大家把之前用 while循环实现的功能,全部改为 for循环
练习:
1,输出所有的水仙花数
水仙花数是一个三位数,并且它个位,十位,百位的立方和等于它本身
int i;
int a,b,c;//分别保存i的个十百位
for(i=100;i<1000;i++)
{
a = i%10;
b = i/10%10;
c = i/100;
if(a*a*a+b*b*b+c*c*c == i)
{
printf("%d\n",i);
}
}
2,求表达式 a+aa+aaa+.... + aa..aaa(n个a) 的值
a,n由键盘输入 a的范围 [0,9]
如:
a 3 n 5
求 3 + 33 + 333 + 3333 + 33333 的值
第 1 2 3 4 5 项
求第i项(i个a),用s(i)表示
i=1 3
i=2 33
i=3 333
....
s(0) = 0
s(i) = s(i-1)*10+a i>0
int si = 0;//表示第i项
int sn = 0;//表示前i项之和
for(i=1;i<=n;i++)
{
si = si*10 + a;
sn += si;
}
5,两个关键字
break 和 continue
之前讲过 break语句放在 switch语句的 case子句中,用来结束 switch语句的
break还可以放在循环语句中(while\do while\for),作用是跳出/结束当前循环语句
例子:
int data = 0;
while(data < 20)//打印 [0,19]
{
printf("%d\n",data++);
}
int data = 0;
while(data < 20)//打印 [0,9]
{
if(data == 10)
break;
printf("%d\n",data++);
}
....
continue 只能放在循环语句中,作用是跳出这一次循环(这一次的循环体语句不再继续执行)
6,多重循环
顾名思义就是循环语句里面又有循环语句
例子:
int i,j;
for(i=0;i<10;i++)
{
for(j=0;j<=i;j++)
{
printf("%d ",j);
}
printf("\n");
}
->
for(j=0;j<=0;j++)
{
printf("%d ",j);
}
printf("\n");
for(j=0;j<=1;j++)
{
printf("%d ",j);
}
printf("\n");
for(j=0;j<=2;j++)
{
printf("%d ",j);
}
printf("\n");
...
for(j=0;j<=9;j++)
{
printf("%d ",j);
}
printf("\n");
0
0 1
0 1 2
0 1 2 3
....
0 1 2 3 4 5 6 7 8 9
练习:输出[100,200]范围内所有的质数
int n;
int i=2;
int count = 0;//记录 [2,n-1]范围�
没有合适的资源?快使用搜索试试~ 我知道了~
C语言循环结构及测试代码
共8个文件
exe:3个
png:2个
c:2个
需积分: 0 0 下载量 103 浏览量
2023-08-04
20:22:06
上传
评论
收藏 272KB ZIP 举报
温馨提示
C语言循环结构及测试代码
资源推荐
资源详情
资源评论
收起资源包目录
04循环结构.zip (8个子文件)
04循环结构
作业2.png 208KB
循环结构.png 32KB
循环结构.txt 11KB
code
test.c 3KB
test.exe 53KB
循环结构作业.c 6KB
a.exe 55KB
循环结构作业.exe 53KB
共 8 条
- 1
资源评论
ikun-realman
- 粉丝: 1
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功