3.15课·········out传值(传址)
public void Hs(out int a, out int b)
{
a = 4;
b = 6;
a = b++;//a=6,b=b+1=7//b先赋值给a,然后b+1
b = ++a;//a=a+1=7,b=7//a先加1,然后赋值给b
}
static void Main(string[] args)
{
int a = 0;
int b = 1;
Program hanshu = new Program();
hanshu.Hs(out a, out b);
Console.WriteLine("a=" + a+" ,b="+b);
Console.ReadLine();
//out相当于return返回值
//拿过来变量名的时候,里面默认为空值
out...可以返回多个值
//传值,只将这个变量的值给拿走,不返还,除非return赋值。
//将a的值传入函数,无论这个值在函数中如何变化,不会影响main中的a
//传址,将这个变量的值拿走运算,完成后还是得返还回来(不用return,用out)
//将a的值传入函数,函数中这个值如何变化,main中的a也会跟着变化
//相当于:函数中的这个值,是main中这个a的快捷方式
题目:求解一元二次方程ax^2+bx+c=0的根的情况及结果
函数部分:
/// <summary>
/// 求解一元二次方程ax^2+bx+c=0的根的情况及结果
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <param name="c"></param>
/// <param name="x1"></param>
/// <param name="x2"></param>
public void Fangcheng(double a, double b, double c, out double x1, out double x2)
{
double de = b * b - * a * c;
if (de > )
{
Console.WriteLine("此方程有两个不相同的实数根!");
x1 = (-b + Math.Sqrt(de)) / (a * );
x2 = (-b - Math.Sqrt(de)) / (a * );
}
else//de==0
{
Console.WriteLine("此方程有两个相同的实数根!");
x1 = (-b + Math.Sqrt(de)) / (a * );
x2 = x1;
}
}
程序部分:
static void Main(string[] args)
{
double x1;
double x2;
Console.WriteLine("求解一元二次方程ax^2+bx+c=0的根的情况及结果:");
Console.Write("请输入a=");
for (; ; )//循环输入,直至有解
{
double a = double.Parse(Console.ReadLine());
if (a == )
{
Console.WriteLine("此方程不是一元二次方程!");
Console.Write("请重新输入a=");
}
else
{
Console.Write("请输入b=");
double b = double.Parse(Console.ReadLine());
Console.Write("请输入c=");
double c = double.Parse(Console.ReadLine()); double de = b * b - * a * c;
if (de < )
{
Console.WriteLine("此方程没有实数根!");
Console.Write("请重新输入a=");
}
else//de>=0
{
Program pp = new Program();
pp.Fangcheng(a, b, c, out x1, out x2); if (x1 == x2)
{
Console.WriteLine("x1=x2=" + x1);
break;
}
else
{
Console.WriteLine("x1=" + x1);
Console.WriteLine("x2=" + x2);
break;
}
}
}
}
题目:擂台比武(猜拳)
函数部分:
/// <summary>
/// 擂台比武,随机出招,看谁赢
/// </summary>
/// <param name="x"></param>
/// <param name="d"></param>
/// <param name="p"></param>
/// <param name="pc"></param>
public void Caiquan(int x,out string d,out int p,out int pc)
{
p = ; pc = ;
Random ran = new Random();
int y = ran.Next(, );//1,2,3随机一个数
switch (y)
{
case :
Console.WriteLine("看招,王麻子剪刀!");
break;
case :
Console.WriteLine("吕布在此,谁敢放肆!");
break;
case :
Console.WriteLine("我是石头他爸郭涛!");
break;
}
if (x - y == - || x - y == )
{
p++;
pc--;
d = "你赢了!气死我了,你等着,我还会回来的!"; }
else if (x - y == || x - y == -)
{
p--;
pc++;
d = "你输了!哼哼,赶紧跪地求饶吧!"; }
else
{
d= "小样,有两下子,竟然能挡住我的龟波气功!";
}
}
程序部分:
int p = ; int pc = ; string d; int sum = ; int sum1 = ;
Console.WriteLine("剪子=1,布=2,石头=3");
Console.WriteLine("擂台比武");
int i = ;
for (; ; )
{
Console.Write("ROUND" + i + ",READY?GO:");
int x = int.Parse(Console.ReadLine());
if (x < || x > )
{
Console.WriteLine("你是在逗我开心吗!");
}
else
{
Program s = new Program();
s.Caiquan(x, out d, out p, out pc);
Console.WriteLine(d);
sum += p;
sum1 += pc;
Console.WriteLine(sum + ":" + sum1);
}
i++;
}
题目:输入三个整数,xyz,最终以从大到小的方式输出.利用条件运算符
函数部分
/// <summary>
/// 输入三个整数,xyz,最终以从小到大的方式输出。利用条件运算符。
/// </summary>
/// <param name="x"></param>
/// <param name="y"></param>
/// <param name="z"></param>
public void Bt(out int x,out int y,out int z)
{
Console.Write("x=");
x = int.Parse(Console.ReadLine());
Console.Write("y=");
y = int.Parse(Console.ReadLine());
Console.Write("z=");
z = int.Parse(Console.ReadLine());
int x1 = (x < y) ? (x) : (y);
int y1 = (x < y) ? (y) : (x);
int x2 = (x1 < z) ? (x1) : (z);
int z1 = (x1 <z) ? (z) : (x1);
int y2 = (y1 < z1) ? (y1) : (z1);
int z2 = (y1 < z1) ? (z1) : (y1);
x = x2;
y = y2;
z = z2;
}
程序部分
int x, y, z;
Program n = new Program();
n.Bt(out x,out y,out z);
Console.WriteLine(x+"<"+y+"<"+z);
题目: 输入三个整数,xyz,最终以从大到小的方式输出.利用中间变量
函数部分
/// <summary>
/// 输入三个整数,xyz,最终以从大到小的方式输出.利用中间变量
/// </summary>
/// <param name="x"></param>
/// <param name="y"></param>
/// <param name="z"></param>
/// <param name="x1"></param>
/// <param name="y1"></param>
/// <param name="z1"></param>
public void PaiXu( int x, int y, int z,out int x1,out int y1,out int z1)
{
int a;
if (x < y)
{
a = x;
x = y;
y = a; //x,y调换//x>y
}
if (x < z)
{
a = x;
x = z;
z = a;//x,z调换,此时x最大
}
if (y < z)
{
a = y;
y = z;
z = a;//y>z
}
x1 = x;
y1 = y;
z1 = z;
}
程序部分
int x1, y1, z1;
Console.Write("请输入第一个整数x=");
int x = int.Parse(Console.ReadLine());
Console.Write("请输入第二个整数y=");
int y = int.Parse(Console.ReadLine());
Console.Write("请输入第三个整数z=");
int z = int.Parse(Console.ReadLine());
Program t = new Program();
t.PaiXu( x, y, z,out x1,out y1,out z1);
Console.WriteLine(z1 + " " + y1 + " " + x1);//从小到大排列
3.15课·········out传值(传址)的更多相关文章
- JS 传值 传址
在JS中,有两种不同的方式可以操作数据的值,这两种技术分别叫做 传值 和 传址. 传值:在赋值过程中,首先对值进行了一份拷贝,而后将这份拷贝存储到一个变量.对象属性或数组元素中.拷贝的值和原始的值是完 ...
- Python 函数参数引用(传值/传址)/copy/deepcopy
精简版: 传值:被调函数局部变量改变不会影响主调函数局部变量 传址:被调函数局部变量改变会影响主调函数局部变量 Python参数传递方式:传递对象引用(传值和传址的混合方式),如果是数字,字符串,元组 ...
- C#-函数的传值与传址
传值就是将实参的值传到所调用的函数里面,实参的值并没有发生变化,默认传值的有int型,浮点型,bool型,char字符型,结构体等等. 传址就是将地址传到所调用的函数里面操作,实参的值也会跟着变化,传 ...
- C# 函数的传值与传址(转)
http://www.cnblogs.com/mdnx/archive/2012/09/04/2671060.html using System; using System.Collections.G ...
- Java传值和传址
调用函数时,传的参数过去可能是传值,也可能是传址.如果是传值,函数内部的操作对参数的值没有影响:如果是传址,函数内部的操作是对参数指向的内存进行操作,会影响参数的值. Java到底是传值还是传址?用下 ...
- js 的复制和引用 (传值和传址)
复制(传值-实参): 基本类型赋值.函数参数 引用(传址-形参): 对象.数组.函数
- C语言的传值与传址调用
传值调用并不能改变两个变量的值,而传址能. 为什么,因为,传值调用,仅仅是在函数内,调换参数的值. 而地址所指向的值,改变的不仅仅是函数内,函数外也改变. 请看代码: 这里还要注意:通常我们不会返回局 ...
- javascript的变量,传值和传址,参数之间关系
先把收获晾一下: 1.javascrip变量包含两种类型的值,一种为引用类型的值,一种是基本类型的值.引用类型包括:Array,Object,Function(可以这么理解,非基本类型的都是引用类型) ...
- JavaScript 函数参数是传值(byVal)还是传址(byRef)?
对于“JavaScript 函数参数是传值(byVal)还是传址(byRef)”这个问题,普遍存在一个误区:number,string等“简单类型”是传值,Number, String, Object ...
随机推荐
- vue slot slot-scope
https://segmentfault.com/a/1190000012996217 插槽,也就是slot,是组件的一块HTML模板,这块模板显示不显示.以及怎样显示由父组件来决定. 实际上,一个s ...
- chown将指定文件的拥有者改为指定的用户或组(转)
chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID:组可以是组名或者组ID:文件是以空格分开的要改变权限的文件列表,支持通配符.系统管理员经常使用chown命令,在将文件拷贝 ...
- 《Microsoft Sql server 2008 Internals》读书笔记--第六章Indexes:Internals and Management(1)
<Microsoft Sql server 2008 Internals>索引文件夹: <Microsoft Sql server 2008 Internals>读书笔记--文 ...
- dr-helper项目设计介绍(一个包括移动端和Web端的点餐管理系统)
一.源代码路径 https://github.com/weiganyi/dr-helper 二.界面 通过浏览器訪问Web服务,能够看到界面例如以下: ADT-Bundle编译project生成dr- ...
- Java + Selenium + Appium手机自动化测试
一.启动测试机或者Android模拟器(Genymotion俗称世界上最快的模拟器,可自行百度安装) 二.启动Appium(Appium环境安装可自行百度) 三.安装应用到Genymotion上,如下 ...
- html头部转码
学习html是件比较容易的事情,但单单学html语言肯定是不够用的,所以大多数人并没有拿html作为学习核心,而是将html作为javascript.动态语言或者css学习的必经之路.于是很多人并不关 ...
- Windows2008RC2 IIS配置php执行环境
1:下载一个php manager,安装.打开IIS管理器后,点击计算机,就能够看到右边PHPManager 静静地躺在那儿了.双击PHPManager 后我们就能够開始对PHP进行配置了. 2 ...
- Newtonsoft.Json之JArray, JObject, JProperty,JValue
JObject staff = new JObject(); staff.Add(new JProperty("Name", "Jack")); staff.A ...
- (三)spark算子 分为3大类
ation算子通过sparkContext执行提交作业的runJob,触发rdd的DAG执行 (foreach) foreach(f) 会对rdd中的每个函数进行f操作,下面的f操作就是打印输出没有元 ...
- [转载]Axure RP 7.0下载地址及安装说明
Axure RP是产品经理必备的原型制作工具,因为很多同学是新手,在这里整理一下axure7.0的下载.安装和汉化流程,希望能够帮到大家. Axure RP是美国Axure Software Solu ...