变量间直接换值的一种算法

变量间直接换值的一种算法
变量间直接换值的一种算法

变量间直接换值的一种算法

摘要:本文通过对变量间直接换值方法的探讨,提出了n(n>=2)个变量间不通过中间变量直接换值的一种算法,该算法思想简单、易懂、规律性强,代码编写简洁且不易出错。通过教学证明,学生能容易地深入领会这种直接换值算法的核心思想,在计算机程序设计教学方面有一定的借鉴意义。

关键词:变量;直接;换值;算法

1引言

变量间值的交换是计算机程序设计中常见的一种过程,一般的对于2个变量,例如变量A和B,当要交换它们的值时,需要借助于一个中间变量,例如变量C,利用中间变量C提供的暂存储空来协助完成变量A和B值的交换。如下是用c语言描述的这种算法:

int a,b,c;/*定义三个变量*/ c=a;/*c作为中间变量先保存a的值*/

a=b; /*将b的值换给a*/b=c;/*把c中预先保存的a的值换给b*/

在这种2个变量换值的算法中,中间变量必不可少,而当参与换值操作的变量的个数为n(n>2)时,必须对参与换值的变量逐个进行换值操作。而无论参与换值的变量个数是2还是n(n>2),要完成这些变量间值的交换,通常的方法都需要预先定义至少一个中间变量,利用中间变量提供的内存空间协助完成换值操作,这个多出的中间变量必然会占用一定的内存空间。严重的是,当n值很大时,实现换值过程的程序代码就会过于繁冗,并且由于要反复使用中间变量,编码过程就会显得枯燥且容易出错。笔者考虑,能否有一种算法能够不使用中间变量,而用一种统一的、很有规律性的公式来直接完成对n(n>=2)个变量的换值操作。本文所要讨论的就是这种更简单、更具规律性的通用性算法。

2变量间的直接换值算法

在计算机程序设计中,变量间的相互换值,不论参与换值的变量的数目n(n>=2)有多大,在过程式单进程运行的程序中,都是依次由每2个变量进行值的交换,进而完成所有变量的换值操作。因此,2个变量间值的交换是最基本、最常见也是较特殊的一种换值过程,下面将分别对n(n>2)个变量和2个变量间的直接换值算法进行讨论。

2.1n(n>2)个变量间的直接换值

这里讨论的多个变量间的直接换值是指如下情形。例如,对于a、b、c、d、e、f、g这7个变量,如图1题目要求将e的值换给d,d的值换给c,c的值换

专训2:控制变量法与转换法的应用

专训2:控制变量法与转换法的应用 对于一些看不见、摸不着的现象或不易直接测量的物理量,物理学中常用 一些非常直观的现象去认识或用易测量的物理量间接测量,这种研究问题的方 法叫转换法。在探究“导体的导电性能、电阻的影响因素”的实验中,通过观 察灯泡的亮度变化,或电流表示数的变化,来推断导体的导电性能和电路中电 阻的变化,利用了转换法。其中,根据电流表的示数作出判断更准确,而根据 灯泡的亮度作出判断更直观。 物理学中对于多因素(多变量)的问题,常常采用控制因素(变量)的方法,把多因素的问题变成多个单因素的问题,而只改变其中的某一个因素,从而研究 这个因素对事物的影响,然后分别加以研究,最后再综合解决,这种方法叫控 制变量法。探究电阻影响因素的实验运用了控制变量法。 探究导体的导电性能 1.【2015·汕尾】某物理兴趣小组学习了导体电阻的知识后,对食盐水溶液的导电性能与什么因 素有关提出了以下猜想:【导学号79002108】 ①食盐水溶液的导电性能与溶液的浓度有关; ②食盐水溶液的导电性能与溶液的质量有关; ③食盐水溶液的导电性能与溶液中两点间的距离有关。 (第1题图) 为了验证猜想,他们设计了如图A所示的装置,将电路中的a、b两金属片分别插入如图B甲、乙、丙、丁溶液中所示的位置(金属片a、b每次插入溶液中的深度都相同)进行探究: (1)在连接电路时,开关必须,本实验电路中接入电阻R0的目的是; (2)食盐水溶液的导电性能可以由来判断; (3)将金属片a、b分别插入如图B甲、乙所示位置可探究猜想(填序号);为了探究猜想②,应将金属片a、b分别插入两图所示位置;

(4)将金属片a、b分别插入如图B乙、丁所示位置,若I乙≠I丁,由此可得到的结论是:。 2.【2015·陕西】雨天乘车时,小华发现汽车前挡风玻璃上的刮水器随着雨的大小,刮动的速度 相应地发生变化。雨停后,刮水器自动停止工作。小华查阅相关资料后,发现 它的工作电路中安装有“雨水检测金属网”装置。小华想,该装置究竟在刮水 器工作中起到了什么作用,于是她自制了如图甲所示的雨水检测金属网(以下简称检测网),并设计了如图乙所示模拟电路进行探究。【导学号79002109】 (第2题图) (1)小华按照所设计的电路图连接电路,实验时,检测网未放入雨水中,电路处 于断开状态,再将检测网放入雨水中,电路接通,表明雨水是(填“导体”或“绝缘体”)。小华通过观察电路中的变化,来判断电动机转速的变化,从而反映 刮水器刮水速度的变化。 (2)将检测网竖立并浸入雨水中不同深度处进行实验,记录如下数据: 检测网浸入雨水中部分未浸入1/3浸入2/3浸入全部浸入电流表的示数0.16 0.20 0.32 ①结合上述实验将表格中的数据补充完整。 ②分析数据可知,检测网浸入雨水中深度越深,电流表示数越大。这说明a 、b间接入电路的电阻在(填“变大”或“变小”)。根据影响导体电阻大小的因 素可知:a、b间接入电路的电阻变化是由导体的变化引起的。 (3)小华设计的电路在无雨水时,电动机不能转动,无法实现车窗的清洗。 请你在不拆卸原电路的基础上,在该电路中加装一个电路元件,以解决此问题。 加装的元件是:。 简述你的做法:。 探究电阻的影响因素

JSP页面间传递参数方法介绍txt

JSP页面间传递参数是经常需要使用到的功能,有时还需要多个JSP页面间传递参数。下面介绍一下实现的方法。 (1)直接在URL请求后添加 如:直接传递参数< /a> 特别的在使用response.sendRedirect做页面转向的时候,也可以用如下代码: response.sendRedirect("thexuan.jsp?action=transparams&detail=directe") ,可用request.getParameter(name)取得参数 (2)jsp:param 它可以实现主页面向包含页面传递参数,如下: 还可以实现在使用jsp:forward动作做页面跳转时传递参数,如下: < jsp:forward page="Relative URL"> < jsp:param name="paramname" value="paramvalue" /> < /jsp:forward> 通过这种方式和一般的表单参数一样的,也可以通过request.getParameter(name)取得参数 (3)设置session和request 通过显示的把参数放置到session和request中,以达到传递参数的目的 session.setAttribute(name,value); request.setAttribute(name,value) 取参数: value=(value className)session.getAttribute(name); value=(value className)request.getAttribute(name); 大家肯定已经注意到了,在取参数的时候,做了类型转换,这是因为放置在session和request 中的对象的属性被看作https://www.360docs.net/doc/242884439.html,ng.Object类型的了,如果不转换,在将直付给value时会报classcastexception异常。 在多个JSP页面之间传递参数 1. 怎么在多个JSP页面之间进行参数传递?需要使用JSP的内置作用域对象session。利用它的两个方法setAttribute(),getAttribute() 2. 下面的这个实例实现了把第一个JSP页面的参数传递给第三个页面的功能

页面之间传递值的几种方式.doc

一.使用QueryString 使用QueryString在页面间传递值是一种非常常见的方法,我们在ASP中就常常用到。 (1)优点和缺点优点: 优点:1.使用简单,对于安全性要求不高时传递数字或是文本值非常有效。 缺点:1.缺乏安全性,由于它的值暴露在浏览器的URL地址中的。 2.不能传递对象。 (2)使用方法 1.在源页面的代码中用需要传递的名称和值构造URL地址。 2.在源页面的代码用Response.Redirect(URL);重定向到上面的 URL地址中。 3.在目的页面的代码使用Request.QueryString["name"];取出 URL地址中传递的值。 (3)应用举例 1.源页面*.aspx的代码: private void Button1_Click(object sender, System.EventArgs e) { String urlAddress; string Name1; string Name2; string Name3; string Name1Value = "HelloName1"; int Name2Value = 1234567; string Name3Value = "你好名称3"; urlAddress="destinationWebForm.aspx?Name1=" + Name1Value + "&" + "Name2=" + Name2Value.ToString() + "&" + "Name3=" + Name3Value; Response.Redirect(urlAddress); } 2.目的页面destinationWebForm.aspx的代码: private void Page_Load(object sender, System.EventArgs e) { String myName1Value; int myName2Value; string myName3Value; myName1Value = Request.QueryString["Name1"]; myName2Value=Convert.ToInt32(Request.QueryString["Name 2"]); myName3Value = Request.QueryString["Name3"]; } (4)可能出现的问题1在处理Resonse.QueryString函数汉字参数传递时,发生不能完整传递参数的具体值的错误,解决有两个方法。

专训3:控制变量法与转换法的应用

专训3:控制变量法与转换法的应用对于一些看不见摸不着的现象或不易直接测量的物理量,物理学中常用一些非常直观的现象去认识或用易测量的物理量间接测量,这种研究问题的方法叫转换法。在探究“导体的导电性能、电阻的影响因素”的实验中,通过观察灯泡的亮度变化,或电流表示数的变化,来推断导体的导电性能和电路中电阻的变化,利用了转换法。其中,根据电流表的示数作出判断更准确,而根据灯泡的亮度作出判断更直观。 物理学中对于多因素(多变量)的问题,常常采用控制因素(变量)的方法,把多因素的问题变成多个单因素的问题,而只改变其中的某一个因素,从而研究这个因素对事物的影响,然后分别加以研究,最后再综合解决,这种方法叫控制变量法。探究电阻影响因素的实验运用了控制变量法。 探究导体的导电性能 1.某物理兴趣小组学习了导体电阻的知识后,对食盐水溶液的导电性能与什么因素有关提出了以下猜想: ①食盐水溶液的导电性能与溶液的浓度有关 ②食盐水溶液的导电性能与溶液的质量有关 ③食盐水溶液的导电性能与溶液中两点间的距离有关 (第1题图) 为了验证猜想,他们设计了如图A所示的装置,将电路中的a、b两金属片分别插入如图B甲、乙、丙、丁溶液中所示的位置(金属片a、b每次插入溶液中的深度都相同)进行探究: (1)在连接电路时,开关必须________,本实验电路中接入电阻R0的目的是________________; (2)食盐水溶液的导电性能可以由_____________________________来判断; (3)将金属片a、b分别插入如图B甲、乙所示位置可探究猜想________(填

序号);为了探究猜想②,应将金属片a、b分别插入________两图所示位置; (4)将金属片a、b分别插入如图B乙、丁所示位置,若I乙≠I丁,由此可得到的结论是:____________________________________________________。 2.(中考·陕西)雨天乘车时,小华发现汽车前挡风玻璃上的刮水器随着雨的大小,刮动的速度相应地发生变化。雨停后,刮水器自动停止工作。小华查阅相关资料后,发现它的工作电路中安装有“雨水检测金属网”装置。小华想,该装置究竟在刮水器工作中起到了什么作用,于是他自制了如图甲所示的雨水检测金属网(以下简称检测网),并设计了如图乙所示模拟电路进行探究。 (第2题图) (1)小华按照所设计的电路图连接电路,实验时,检测网未放入雨水中,电路处于断开状态,再将检测网放入雨水中,电路接通,表明雨水是________(填“导体”或“绝缘体”)。小华通过观察电路中____________的变化,来判断电动机转速的变化,从而反映刮水器刮水速度的变化。 (2)将检测网竖立并浸入雨水中不同深度处进行实验,记录如下数据: ①结合上述实验将表格中的数据补充完整。 ②分析数据可知,检测网浸入雨水中深度越深,电流表示数越大。这说明a、b间接入电路的电阻在____________(填“变大”或“变小”)。根据影响导体电阻大小的因素可知:a、b间接入电路的电阻变化是由导体的______________变化引起的。 (3)小华设计的电路在无雨水时,电动机不能转动,无法实现车窗的清洗。请你在不拆卸原电路的基础上,在该电路中加装一个电路元件,以解决此问题。 加装的元件是:__________________________________________________。 简述你的做法:__________________________________________________。 探究电阻的影响因素(控制变量法)

C#页面间传值的几种方法

1。使用QueryString 使用QuerySting在页面间传递值已经是一种很老的机制了,这种方法的主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在浏览器的地址栏上的(不安全),同时又不能传递对象,但是在传递的值少而安全性要求不高的情况下,这个方法还是一个不错的方案。使用这种方法的步骤如下: 1,使用控件创建web表单(form) 2,创建可以返回表单的按钮和链接按钮 3,在按钮或链接按钮的单击事件里创建一个保存URL的字符变量 4,在保存的URL里添加QueryString参数 5,使用Response.Redirect重定向到上面保存的URL 下面的代码片断演示了如何实现这个方法: 源页面WebForm1.aspx.cs中的部分代码: private void Button1_Click(object sender, System.EventArgs e) { string url; url="WebForm2.aspx?name=" + TextBox1.Text + "&email=" + TextBox2.Text; Response.Redirect(url); } 目标页面WebForm2.aspx.cs中的部分代码: private void Page_Load(object sender, System.EventArgs e) { Label1.Text=Request.QueryString["name"]; Label2.Text=Request.QueryString["email"]; } 2。使用Session变量 使用Session变量是可以在页面间传递值的的另一种方式,在本例中我们把控件中的值存在Session变量中,然后在另一个页面中使用它,以不同页面间实现值传递的目的。但是,需要注意的是在Session变量存储过多的数据会消耗比较多的服务器资源,在使用session时应该慎重,当然了,我们也应该使用一些清理动作来去除一些不需要的session来降低资源的无谓消耗。使用Session变量传递值的一般步骤如下: 1,在页面里添加必要的控件 2,创建可以返回表单的按钮和链接按钮 3,在按钮或链接按钮的单击事件里,把控件的值添加到session变量里 4,使用Response.Redirect(或Server.Transfer)方法重定向到另一个页面5,在另一个页面提取session的值,在确定不需要使用该session时,要显式清除它 下面的代码片断演示了如何实现这个方法: 源页面WebForm1.aspx.cs中的部分代码: private void Button1_Click(object sender, System.EventArgs e) {

两个变量交换值

不使用第三方变量交换两个变量的值(c#)2009-07-22 16:47这需要进行位操作,必较麻烦的, 在学习程序语言和进行程序设计的时候,交换两个变量的值是经常要使用的。通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下: int a,b; a=10; b=15; int t; t=a; a=b; b=t; 这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用。在实际软件开发当中,此算法简单明了,不会产生歧义,便于程序员之间的交流,一般情况下碰到交换变量值的问题,都应采用此算法(以下称为标准算法)。 上面的算法最大的缺点就是需要借助一个临时变量。那么不借助临时变量可以实现交换吗?答案是肯定的!这里我们可以用三种算法来实现:1)算术运算;2)指针地址操作;3)位运算。 1)算术运算 简单来说,就是通过普通的+和-运算来实现。代码如下: int a,b; a=10;b=12; a=b-a; //a=2;b=12 b=b-a; //a=2;b=10 a=b+a; //a=10;b=10 通过以上运算,a和b中的值就进行了交换。表面上看起来很简单,但是不容易想到,尤其是在习惯标准算法之后。 它的原理是:把a、b看做数轴上的点,围绕两点间的距离来进行计算。 具体过程:第一句“a=b-a”求出ab两点的距离,并且将其保存在a中;第二句“b=b-a”求出a到原点的距离(b到原点的距离与ab两点距离之差),并且将其保存在b中;第三句“a=b+a”求出b到原点的距离(a到原点距离与ab两点距离之和),并且将其保存在a中。完成交换。此算法与标准算法相比,多了三个计算的过程,但是没有借助临时变量。(以下称为算术算法) 2)指针地址操作 因为对地址的操作实际上进行的是整数运算,比如:两个地址相减得到一个整数,表示两个变量在内存中的储存位置隔了多少个字节;地址和一个整数相加即“a+10”表示以a为基地址的在a后10个a类数据单元的地址。所以理论上可以通过和算术算法类似的运算来完成地址的交换,从而达到交换变量的目的。即: int *a,*b; //假设 *a=new int(10); *b=new int(20); //&a=0x00001000h,&b=0x00001200h a=(int*)(b-a); //&a=0x00000200h,&b=0x00001200h b=(int*)(b-a); //&a=0x00000200h,&b=0x00001000h a=(int*)(b+int(a)); //&a=0x00001200h,&b=0x00001000h 通过以上运算a、b的地址真的已经完成了交换,且a指向了原先b指向的值,b指向原先a 指向的值了吗?上面的代码可以通过编译,但是执行结果却令人匪夷所思!原因何在? 首先必须了解,操作系统把内存分为几个区域:系统代码/数据区、应用程序代码/数据区、

控制变量法(整合)

控制变量法 物理学研究中常用的一种研究方法——控制变量法。所谓控制变量法,就是在研究和解决问题的过程中,对影响事物变化规律的因素或条件加以人为控制,使其中的一些条件按照特定的要求发生变化或不发生变化,最终解决所研究的问题。可以说任何物理实验,都要按照实验目的、原理和方法控制某些条件来研究。 如:导体中的电流与导体两端的电压以及导体的电阻都有关系,中学物理实验难以同时研究电流与导体两端的电压和导体的电阻的关系,而是在分别控制导体的电阻与导体两端的电压不变的情况下,研究导体中的电流跟这段导体两端的电压和导体的电阻的关系,分别得出实验结论。通过学生实验, I U R。 让学生在动脑与动手,理论与实践的结合上找到这“两个关系”,最终得出欧姆定律=/ 研究导体的电阻大小与哪些因素有关,控制导体的长度和材料不变,研究导体电阻与横截面积的关系。研究滑动摩擦力的大小跟哪些因素有关,保证压力相同时,研究滑动摩擦力与接触面粗糙程度的关系。 利用控制变量法研究物理问题,注重了知识的形成过程,有利于扭转重结论、轻过程的倾向,有助于培养学生的科学素养,使学生学会学习。 中学物理课本中,蒸发的快慢与哪些因素的有关;滑动摩擦力的大小与哪些因素有关;液体压强与哪些因素有关;研究浮力大小与哪些因素有关;压力的作用效果与哪些因素有关;滑轮组的机械效率与哪些因素有关;动能、重力势能大小与哪些因素有关;导体的电阻与哪些因素有关;研究电阻一定、电流与电压的关系;研究电压一定、电流和电阻的关系;研究电流做功的多少跟哪些因素有关系;电流的热效应与哪些因素有关;研究电磁铁的磁性强弱跟哪些因素有关系等均应用了这种科学方法。 控制变量法 “控制变量法”是物理中常用的探索问题和分析解决问题的科学方法之一。自然界中发生的各种物理现象往往是错综复杂的,因此影响物理学研究对象的因素在许多情况下并不是单一的,而是多种因素相互交错、共同起作用的。譬如说某段导体中通过电流的大小不仅和其两端电压有关,还和这段导体的长度、横截面积的大小及材料种类等因素有关。所以要想精确地把握研究对象的各种特性,弄清事物变化的原因和规律,单靠自然条件下整体观察研究对象是远远不够的,还必须对研究对象施加人为的影响,造成特定的便于观察的条件,这就是“控制变量”的方法。例如为了研究某物理量同影响它的三个因素中的一个因素之间的关系,可将另外两个因素人为地控制起来,使它们保持不变,以便观察和研究该物理量与这一因素之间的关系。 法。具体做法是根据研究目的,运用一定的手段(控制实验仪器设备等)主动干预或控制自然事物、自然现象发生发展的过程,在特定的观察条件下去探索客观规律。例如,在引导学生探索、研究导电体的电阻的大小同导电体的哪些特性有关时,可先故意将横截面积、长度都不同的一根镍铬合金丝和一根铜丝分别串入接有小灯泡的直流电路中,让学生分别观察灯泡发光的亮度,并问学生:刚才的实验现象能否说明电阻大小与导电体的某个特性有关?学生经过思考与讨论,得到的结论当然是否定的。再用横截面积和长度都不同的两根镍铬合金丝分别串入上述电路中,观察小灯泡的亮度,并让学生思考这个实验能否说明电阻大小同导电体的某种特性有关,结论同样是不能。这时就可不失时机地问学生:“那么,我们应该取怎样的两根金属丝串入上述电路来做这个实验,以研究导电体的电阻大小到底与哪些因素有关呢?”同时向学生出示课前准备好的几根金属丝让他们选择。学生经过思考并

ASP页面传值

https://www.360docs.net/doc/242884439.html,页面之间传递值的几种方式 页面传值是学习https://www.360docs.net/doc/242884439.html,初期都会面临的一个问题,总的来说有页面传值、存储对象传值、ajax、类、model、表单等。但是一般来说,常用的较简单有QueryString,Session,Cookies,Application,Server.Transfer。 一、QueryString QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。 这种方法的优点:1.使用简单,对于安全性要求不高时传递数字或是文本值非常有效。 这种方法的缺点:1.缺乏安全性,由于它的值暴露在浏览器的URL地址中的。 2.不能传递对象。 使用方法:1.在源页面的代码中用需要传递的名称和值构造URL地址。 2.在源页面的代码用Response.Redirect(URL);重定向到上面的URL地址中。 3.在目的页面的代码使用Request.QueryString["name"];取出URL地址中传递的值。 例子:(1)a.aspx private void Button1_Click(object sender, System.EventArgs e) { string s_url; s_url = "b.aspx?name=" + Label1.Text; Response.Redirect(s_url); } (2)b.aspx private void Page_Load(object sender, EventArgs e) { Label2.Text = Request.QueryString["name"]; } 二、Session 想必这个肯定是大家使用中最常见的用法了,其操作与Application类似,作用于用户个人,所以,过量的存储会导致服务器内存资源的耗尽。 优点:1.使用简单,不仅能传递简单数据类型,还能传递对象。 2.数据量大小是不限制的。 缺点:1.在Session变量存储大量的数据会消耗较多的服务器资源。 2.容易丢失。 使用方法:1.在源页面的代码中创建你需要传递的名称和值构造Session变 量:Session["Name"]="Value(Or Object)"; 2.在目的页面的代码使用Session变量取出传递的值。Result = Session["Nmae"]

变量交换的几种常见方法

变量交换的几种常见方法 前几天发现了一个问题:有人告诉我,要进行变量交换,就必须引入第三变量! 假设我们要交换a和b变量的值,如果写成 int a=5,b=10; a=b; b=a; 那么结果就是两个都是10,理由不言而喻。 所以就应该引入第三变量,在a的值被覆盖之前就把a的值保留好。int a=5,b=10,tmp; tmp=a; a=b; b=tmp; 这样,就要引入了第三个变量,然而,我们能不能不引入第三变量来实现变量交换呢? 答案自然是肯定的,首先我们可以这样设想,如果a的值被覆盖了,那么就没法知道b应该放什么值了, 所以,我们要保留a的值,因此我们可以把a和b的值合起来,放在a里,再把合起来的值分开,分别放到b和a中:

int a=5,b=10; a=a+b; //a=15,b=10 b=a-b; //a=15,b=5 a=a-b; //a=10,b=5 但是这样做有一个缺陷,假设它运行在vc6环境中,那么int的大小是4 Bytes,所以int变量所存放的最大值是2^31-1即2147483647,如果我们令a的值为2147483000,b的值为1000000000,那么a和b 相加就越界了。 事实上,从实际的运行统计上看,我们发现要交换的两个变量,是同号的概率很大,而且,他们之间相减,越界的情况也很少,因此我们可以把上面的加减法互换,这样使得程序出错的概率减少: int a=5,b=10; a-=b; //a=-5,b=10 b+=a; //a=15,b=5 a+=b; //a=10,b=5 通过以上运算,a和b中的值就进行了交换。表面上看起来很简单,但是不容易想到,尤其是在习惯引入第三变量的算法之后。 它的原理是:把a、b看做数轴上的点,围绕两点间的距离来进行计算。 具体过程:第一句“a-=b”求出ab两点的距离,并且将其保存在a 中;第二句“b+=a”求出a到原点的距离(b到原点的距离与ab两点距离之差),并且将其保存在b中;第三句“a+=b”求出b到原点

2020沪科版物理九年级上册第15章《探究电路》专训试题2:控制变量法与转换法的应用

用 专训2:控制变量法与转换法的应 对于一些看不见摸不着的现象或不易直接测量的物理量,物理学中常用一些非常直观的现象去认识或用易测量的物理量间接测量,这种研究问题的方法叫转换法。在探究“导体的导电性能、电阻的影响因素”的实验中,通过观察灯泡的亮度变化,或电流表示数的变化,来推断导体的导电性能和电路中电阻的变化, 利用了转换法。其中,根据电流表的示数作出判断更准确,而根据灯泡的亮度作出判断更直观。 物理学中对于多因素(多变量)的问题,常常采用控制因素(变量)的方法,把多因素的问题变成多个单因素的问题,而只改变其中的某一个因素,从而研究这个因素对事物的影响,然后分别加以研究,最后再综合解决,这种方法叫控制变量法。探究电阻影响因素的实验运用了控制变量法。 探究导体的导电性能 1.(中考·汕尾)某物理兴趣小组学习了导体电阻的知识后,对食盐水溶液的导电性能与什么因素有关提出了以下猜想: ①食盐水溶液的导电性能与溶液的浓度有关 ②食盐水溶液的导电性能与溶液的质量有关 离有关 ③食盐水溶液的导电性能与溶液中两点间的距 (第1 题图) 如 图A 所示的装置,将电路中的a、b 两金属片 计 了 为了验证猜想,他们设 图B 甲、乙、丙、丁溶液中所示的位置(金属片a、b 每次插入溶液中 分别插入如 的深度都相同)进行探究: (1)在连接电路时,开关必须________,本实验电路中接入电阻R0 的目的是

________________; (2)食盐水溶液的导电性能可以由____________________________来_判断; (3)将金属片a、b 分别插入如图 B 甲、乙所示位置可探究猜想________(填序号);为了探究猜想②,应将金属片a、b 分别插入________两图所示位置; (4)将金属片a、b 分别插入如图 B 乙、丁所示位置,若 I 乙≠I 丁,由此可得 到的结论是:___________________________________________________。_ 2.(中考·陕西)雨天乘车时,小华发现汽车前挡风玻璃上的刮水器随着雨的 大小,刮动的速度相应地发生变化。雨停后,刮水器自动停止工作。小华查阅 相 关资料后,发现它的工作电路中安装有“雨水检测金属网”装置。小华想,该装 置究竟在刮水器工作中起到了什么作用,于是他自制了如图甲所示的雨水检测金属网(以下简称检测网),并设计了如图乙所示模拟电路进行探究。 (第2题图) (1)小华按照所设计的电路图连接电路,实验时,检测网未放入雨水中,电 路处于断开状态,再将检测网放入雨水中,电路接通,表明 雨水是________(填“导体”或“绝缘体”)。小华通过观察电路中____________的变化,来判断电 动机转速的变化,从而反映刮水器刮水速度的变化。 (2)将检测网竖立并浸入雨水中不同深度处进行实验,记录如下数据: 检测网浸入雨水中部分未浸入1/3 浸入2/3 浸入全部浸入电流表的示数/A 0.16 0.20 0.32 ①结合上述实验将表格中的数据补充完整 。 ②分析数据可知,检测网浸入雨水中深度越深,电流表示数越大。这说明a、 b 间接入电路的电阻在____________(填“变大”或“变小”)。根据影响导体电 阻大小的因素可知:a、b 间接入电路的电阻变化是由导体的______________变 化引起的。 (3)小华设计的电路在无雨水时,电动机不能转动,无法实现车窗的清洗。 请你在不拆卸原电路的基础上,在该电路中加装一个电路元件,以解 决 此 问 题 。

几种JSP页面传值方式 八

几种JSP页面传值方式八 2010-01-25 几种JSP页面传值方式: 文章分类:Web前端 几种JSP页面传值方式: 1. 隐藏域传值: <form method="post" action="client_crud.jsp" > <input type="hidden" name="id" value="<%=id %>"> 2. URL传值: 用button a. <input name="btnModify" type="button" class="button1" onClick="self.location='client_modify.jsp?id=<%=id %>'" value="修改分销商" /> b.把input的onClick=”modifyRegion()” function modifyRegion() { window.self.location = client_node_modify.jsp?id=<%=id%>"; } 3. JS方式传值 //取得form对象提交表单 with(document.getElementById("userForm")) { method="post"; action="user_add.jsp?command=add"; submit(); } function searchItem() { with(document.forms[0]) { action="servlet/basedata/SearchItemServlet"; method="post"; submit(); } } ---------------------------------------------------------------------------------------------------------------------------------------

交换两个变量值

//【习3.1】交换两个变量值问题讨论。 public class Swap { // ①不能实现交换两个变量值的方法 public static void swap(int x, int y) { int temp = x; x = y; y = temp; } public static void swap(Object x, Object y) //不行 { Object temp = x; //两个对象之间的赋值是引用赋值,传递的是引用,即变量的地址 x = y; //改变形式参数x的引用,而未能改变实际参数的值, y = temp; //相当于改变了指针的值,而未改变通过指针指向的变量值 } //交换了,但改变的值没有带回 // ②能够交换两个数组元素值 public static void swap(int[] table, int i, int j) // 交换数组中下标为i、j的元素 { if (table != null && i >= 0 && i < table.length && j >= 0 && j < table.length && i != j) // 判断i、j是否越界 { int temp = table[j]; table[j] = table[i]; table[i] = temp; } } public static void swap(Object[] table, int i, int j) //交换数组中下标为i、j的元素 { if (table != null && i >= 0 && i < table.length && j >= 0 && j < table.length && i != j) //判断i、j是否越界 {

复习题2(算法部份)

第1章计算机和算法 1.使用计算机解题的步骤,以下描述正确的是:_____。 A.正确理解题意→设计正确算法→寻找解题方法→编写程序→调试运行 B.正确理解题意→寻找解题方法→设计正确算法→编写程序→调试运行 C.正确理解题意→寻找解题方法→设计正确算法→调试运行→编写程序 D.正确理解题意→寻找解题方法→设计正确算法→编写程序→调试运行 答案:B 2.计算机是一种按照设计好的程序,快速、自动地进行计算的电子设备,计算机开始计算之前,必须把解决某个问题的程序存贮在计算机的_____中。 A.硬盘B.软盘C.内存D.CPU 答案:C 3.计算机程序由以下两部分即:_____组成。 A.执行部分和数据部分 B.数据部分和程序部分 C.指令部分和数据部分 D.程序部分和指令部分 答案:C 4.计算机程序由一系列指令构成,每条指令要求计算机执行_____动作。 A.一组B.二个C.一个D.一个以上 答案:C 5.计算机程序由指令部分和数据部分组成,其中数据部分用来存储_____。 A.计算所需的原始数据和计算的中间结果,不能存储计算的最终结果 B.计算所需的原始数据,不能存储计算的中间结果和计算的最终结果 C.计算的中间结果和计算的最终结果,不能存储计算所需的原始数据 D.计算所需的原始数据、计算的中间结果或最终结果 答案:D 6.人们在设计计算机程序时,_____。 A.只要考虑“数据的存贮”而不要考虑“计算的过程” B.不要考虑“数据的存贮”而只要考虑“计算的过程” C.必须同时考虑“数据的存贮”和“计算的过程” D.以上答案都错 答案:C 7.设计计算机程序时,要考虑“计算的过程”,其含义是在对解决问题的方法进行步骤化时,_____。 A.只要指出“动作”而不必指出“动作的次序” B.不必指出“动作”而只要指出“动作的次序” C.必须同时指出“动作”和“动作的次序” D.以上说法都正确 答案:C 8.算法的特征是:有穷性、_____、能行性、有0个或多个输入和有一个或多个输出。 A.稳定性B.确定性C.正常性D.快速性 答案:B

Jsp页面传参的4种常用方式

Jsp页面传参的4种常用方式 来源:未知更新时间:2010-06-27 点击: 266次 jsp页面之间传递参数的方式有很多种,今天为大家总结常用的4种传参方式。 1.JavaScript传参:这种传参方式用opener关键字, 可以实现跨页传参.其用法就是用opene r关键字调用父窗体的一个组件. 举例: opener.myform.txt.value = document.myform.txt.value; 优点: 简单,对网络传输限制比较底. 缺点: 不灵活,对与大量的传参不现实,也不实际. 2. " ? "传参: 在传递地址的尾部加上? 后面跟参数的名字和其值,在另外一个Jsp页面中就可以用request.getParameter("参数名字");获取到传递的参数. 举例: http://localhost:8080/bbs/tiezi/jishu.jsp?id=1 优点: 灵活,只要把需要传递的参数放到一个变量中传递到传递的也面就可以了. 缺点: 对于批量传参也不现实. 3. session传参:通常把它用来实现状态维持.session中有2个参数,第一个为标识,第二个为值,形式("key","value") 如果你的思维敏捷,就能联想到散列表,对它就是散列表的一种实现. 应用举例: session.setAttribute("login","ok"); session.getAttribute("login"); 优点: 不用关心是什么数据类型,都可以放到session中,它以对象的形式存储于散列表中. 缺点: session中把所有数据当成对象来存取,所以每次我们用它的时候都要把类型强制转换为我们需要的类型. 4. JavaBean传参: 这是最高级的一种传递参数,它把任何数据类型,任何方式封装在JavaB ean中.我们在属性中定义需要传递的参数,然后加入一个get和set方法就可以了,在Jsp 中调用的时候可以设置其生命周期,完成传递参数的过程. 应用举例: package bean; public class sampleBean

交换两个变量的值,不使用第三个变量的方法及实现

交换两个变量的值,不使用第三个变量的方法及实现: 附录中有C/C++代码: 通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下: int a,b; a=10; b=15; int t; t=a; a=b; b=t; 这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用。在实际软件开发当中,此算法简单明了,不会产生歧义,便于程序员之间的交流,一般情况下碰到交换变量值的问题,都应采用此算法(以下称为标准算法)。 上面的算法最大的缺点就是需要借助一个临时变量。那么不借助临时变量可以实现交换吗?答案是肯定的!这里我们可以用以下几种算法来实现:1)算术运算;2)指针地址操作;3)位运算;4)栈实现。 1)算术运算 int a,b; a=10;b=12; a=b-a; //a=2;b=12 b=b-a; //a=2;b=10 a=b+a; //a=12;b=10 它的原理是:把a、b看做数轴上的点,围绕两点间的距离来进行计算。 具体过程:第一句“a=b-a”求出ab两点的距离,并且将其保存在a中;第二句“b=b-a”求出a到原点的距离(b到原点的距离与ab两点距离之差),并且将其保存在b中;第三句“a=b+a”求出b到原点的距离(a 到原点距离与ab两点距离之和),并且将其保存在a中。完成交换。 此算法与标准算法相比,多了三个计算的过程,但是没有借助临时变量。(以下称为算术算法)除了使用加、减法外,还可以使用乘、除法实现,实现代码如下: //if a=10;b=12; a=a*b; //a=120;b=12 b=a/b; //a=120;b=10 a=a/b; //a=12;b=10 缺点:是只能用于数字类型,字符串之类的就不可以了。a+b有可能溢出(超出int的范围),溢出是相对的,+了溢出了,-回来不就好了,所以溢出不溢出没关系,就是不安全。 2)指针地址操作 因为对地址的操作实际上进行的是整数运算,比如:两个地址相减得到一个整数,表示两个变量在内存中的储存位置隔了多少个字节;地址和一个整数相加即“a+10”表示以a为基地址的在a后10个a类数据单 元的地址。所以理论上可以通过和算术算法类似的运算来完成地址的交换,从而达到交换变量的目的。即:int *a,*b; //假设 *a=new int(10); *b=new int(20); //&a=0x00001000h,&b=0x00001200h a=(int*)(b-a); //&a=0x00000200h,&b=0x00001200h

《c语言程序设计》--4种“交换算法”介绍。

第 1 页 共 2 页 算法 交换 在很多问题的解决中都需要使用到交换这个方法,比如排序时,需要将两个变量的值互换等等。交换是指将两个变量的值进行互换。假设有整型变量a 和b ,分别存储整数2和6,如图01-01所示。要将变量a 和b 交换就意味着交换变量a 和变量b 中的值,使得变量a 存放变量b 交换前的值,而变量b 存放变量a 交换前的值,如图01-02所示。 图01-01 图01-02 语句“a=b; b=a;”是不能实现变量a 、b 交换的,只可能使得a 、b 最终都存放变量b 的值(大家可以编程试一试)。其原因是赋值操作具有覆盖性,执行a=b ;语句后,a 原来的值已经被覆盖了,此时a 最新的值就是b 的值,再实现b=a ;时,b 的值就是a 最新的值,也就是b 的值。 一、 中间变量法 要实现交换,最基本、最通用的方法是中间变量法。该方法的基本思路是定义第三个变量t ,用于暂时保存两个变量中的某一个变量的原值。具体实现代码如下: t = a; a = b; b = t; 交换过程请大家自己仿照图01-01自己给出。注意每一个变量画一个方框, 每执行一步后,改变被赋值变量的值。 【注意事项】 此处,中间变量t 可以暂存变量 a 的值也可以暂存变量 b 的值,不过一旦对变量t 的赋值语句确定后,后面两个赋值语句的顺序不是任意的。赋值顺序的记忆可总结为“t 中暂存的变量先被赋值”。即t = a; a = b; b = t;或者t = b; b = a; a = t;。

二、算术加减法 对于数值型数据还可以采用算术加减法来实现交换,其基本思想是以a获得b的值,以b获得a的值作为目标,进行加减运算,从而完成交换。具体实现可用如下代码: a = a+b; b = a-b; a = a-b; 三、思考与练习 1. 请编写程序验证“交换”算法。 2. 请编写程序验证“交换”算法,要求“交换”算法使用函数来实现。 3. 请大家思考一下,使用算术加减法实现的“交换”算法有什么限制? 4. 请大家思考一下,我们能不能使用乘除法来实现“交换”算法?如果可 以,那么具体代码如何来编写呢?使用乘除法来实现“交换”算法,有 什么限制呢? 5. 拓展 两个变量(一般为整型或字符型)的交换还可以使用“异或”运算符。 具体步骤如下: int a,b; a=a^b; b=a^b; a=a^b;

相关文档
最新文档