for循环进阶
【引例】 输出一行10个“*”
#include<cstdio>
int main(){
printf("**********\n");
return ;
}
思考:
(1)输出一行100个“*”
(2)输出一行1000个“*”
(3)输出……
引入for
#include<cstdio>
int main(){
for (int i=;i<=;i++)
printf("*");
return ;
}
要求:单步执行,观察循环控制变量i的变化。
【例1】输出1,2,3…,10,每个数字一行。
for的格式1:
for (控制变量初始化;条件表达式;增量表达式)
<一条语句>;
for的格式2:
for (控制变量初始化;条件表达式;增量表达式)
{
语句1;
语句2;
……
}
for语句执行过程:
(1)执行“控制变量初始化”语句,使控制变量获得一个初值。
(2)判断控制变量是否满足“条件表达式”,若满足条件则执行一遍循环体,否则跳到步骤5。
(3)根据增量表达式,计算出控制变量所得到的新值
(4)自动转到第(2)步。
(5)循环结束,执行for循环后面的语句。
【例2】键入一个自然数n,求s=1+2+...+n的值
如:
输入:
100
输出:
5050
#include<cstdio>
int main(){
int s=, n;
scanf("%d",&n);
for (int i=;i<=n;i++)
s=s+i;
printf("%d\n",s);
return ;
}
【例2拓展】 键入一个自然数n(<10000),求这个自然数的所有约数之和S (n的约数不包含1和n)。
如:
输入:
6
输出:
5
#include<cstdio>
int main(){
int s=,n;
scanf("%d",&n);
for (int i=; i<=n-;i++)
if (n%i==) s=s+i;
printf("%d ",s);
return ;
}
【例3】输入正整数n(<1000000),判断它是否为素数。是素数输出”yes”,不是素数输出”no”.素数也称为质数。
程序1(例二的延伸)
#include<cstdio>
int main(){
int s=,n;
scanf("%d",&n);
for (int i=; i<=n-;i++)
if (n%i==) s=s+i;
if (s==) printf("yes");
else printf("no");
return ;
}
程序2(使用标志变量,添加break):
#include<cstdio>
int main(){
int n,f=;
scanf("%d",&n);
for (int i=; i<=n-;i++)
if (n%i==) {
f=; }
if (f==) printf("yes");
else printf("no");
return ;
}
尝试:n=1000000007
程序3(提高程序效率)
#include<cstdio> #include<cmath> int main(){ int n,m,f=; scanf("%d",&n); m= floor(sqrt(n)+0.5); for (int i=; i<=m;i++) if (n%i==) { f=; break; } if (f==) printf("yes"); else printf("no"); return ; }
知识补充:floor(x)返回不超过x的最大整数
思考:循环结束时变量i的值是多少,输出结果验证和你的猜测。
程序4(灵活利用for循环)
#include<cstdio>
#include<cmath>
int main(){
int i,n,m;
scanf("%d",&n);
m=floor(sqrt(n)+0.5);
for (i=; i<=m&&n%i!=;i++);
if (i==m+) printf("yes");
else printf("no");
return ;
}
注意:
在for循环“控制变量初始化语句”中声明的变量,这些变量只在for循环结构中有效,离开了该for结构,变量就无效了。
练习1. 编一个程序,从键盘输入一个分数的分子a和分母b(a<b),输出它的小数形式,精确到小数点后n位。a,b,n<1000,不考虑四舍五入。
练习2.
数列的前两项分别是1、1,从第三项开始,每个数均为前面两项的和,即: 1,1,2,3,5,8,…。
输入:n
输出:数列第n项的值,n<=90
如:
输入:6
输出:8
for循环进阶的更多相关文章
- 大数据之路day04_1--数组 and for循环进阶
Java数组 在开始之前,提一个十分重要的一点:注意:在给数组分配内存空间时,必须指定数组能够存储的元素来确定数组大小.创建数组之后不能修改数组的大小,可以使用length属性获取数组的大小.在jav ...
- 【Python】学习笔记十四:循环进阶
range() 在Python中,for循环后的in跟随一个序列的话,循环每次使用的序列元素,而不是序列的下标. 我们继续开发range的功能,以实现下标对循环的控制: s = 'abcdefghj' ...
- 事件循环进阶:macrotask与microtask
这段参考了参考来源中的第2篇文章(英文版的),(加了下自己的理解重新描述了下), 这里没法给大家演示代码,我就简单说下我的理解吧. promise和settimeout 在一起的时候执行顺序是个有意思 ...
- Python之while循环
1.While循环基础 2.While循环进阶 3.其他
- JavaScript的for循环
1.循环的目的 什么是循环?循环的目的是什么?循环能做什么? 举一个小例子:武汉疫情,学了JavaScript,必须拿JavaScript干点有意义的事情.我们想告诉武汉:“武汉加油,武汉挺住啊!”. ...
- 从浏览器多进程到JS单线程,JS运行机制的一次系统梳理
前言 见解有限,如有描述不当之处,请帮忙及时指出,如有错误,会及时修正. ----------超长文+多图预警,需要花费不少时间.---------- 如果看完本文后,还对进程线程傻傻分不清,不清楚浏 ...
- 从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理
前言 来源:https://dailc.github.io/2018/01/21/js_singlethread_eventloop.html 见解有限,如有描述不当之处,请帮忙及时指出,如有错误,会 ...
- ansible-play中for,if的使用
#迭代循环的使用 #实现同时新建三个文件,同时部署三个服务 --- - host: websrvs remote_user: root task: - name: create some files ...
- 使用C#开发数据库应用程序
第一章 用Hello ACCP.NET快速热身(一) 1-1.进入C#世界 a.第一个C#程序 (1)新建项目[项目:project] (2)生成解决方案[生成:build,解决方案:solution ...
随机推荐
- linux笔记:linux系统安装-系统分区
分区类型: 1.主分区:最多只能有4个. 2.扩展分区:最多只能有1个:主分区+扩展分区最多有4个:不能写入数据,只能包含逻辑分区. 3.逻辑分区. 格式化: 向磁盘中写入文件系统.会附带地清空磁盘中 ...
- 能源项目xml文件 -- app-datasource.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- 配置electron
配置语句: git clone https://github.com/electron/electron-quick-start 文件夹名字 打开该文件(我用的webstorm)
- 关于mvc3.0RadioButtonFor的使用
以前本人没有使用过mvc,近期的话公司要求使用mvc进行开发项目,我不得不学习,我在这里分享下Html.RadioButtonFor的使用,例如 @Html.RadioButtonFor(d => ...
- PHP读取文件夹目录,按时间排序,大小排序,名字排序
工作中有时候会遇到文件存储数据,但是在前台显示的时候又因为没有数据库,无法使用上传或最后一次修改日期字段排序,所以有了如下代码: <?php $dir = "./";//目录 ...
- 今天同事给介绍了一个LINQ的工具,LINQPad
今天刚知道LINQPad,详细信息参照http://www.linqpad.net/,免费下载,安装之后样子如下所示,根据向导,链接上本地数据库,比较熟悉的操作风格. 对LINQ的了解太浅,还没有更多 ...
- struts2视频学习笔记 15-17 (访问或添加request属性,文件上传)
课时15 访问或添加request/session/application属性 1.简单说 page指当前页面.在一个jsp页面里有效 2.request 指从http请求到服务器处理结束,返回响应的 ...
- BZOJ3928 [Cerc2014] Outer space invaders
第一眼,我勒个去...然后看到n ≤ 300的时候就2333了 首先把时间离散化,则对于一个时间的区间,可以知道中间最大的那个一定要被选出来,然后把区间分成左右两份 于是区间DP就好了,注意用左开右开 ...
- mysql 无法远程访问(授权也没办法,确切的说是因为只绑定了127IP)
默认状况下,出于安全考虑,mysql数据库屏蔽了远程访问功能. 然而在许多状况下,你需要在家或者从web程序去访问远端数据库服务器,这就相当麻烦了. 第一步: 激活网络设置你需要编辑mysql配置文件 ...
- was7中文redhat6上安装出现中文乱码解决方案
转:http://blog.csdn.net/w1985g/article/details/8789378 在rhel-server-6.1-x86_64上安装WebSphere 7时,安装界面出现中 ...