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 ...
随机推荐
- Python的Django框架中的Cookie相关处理
Python的Django框架中的Cookie相关处理 浏览器的开发人员在非常早的时候就已经意识到. HTTP's 的无状态会对Web开发人员带来非常大的问题,于是(cookies)应运而生. coo ...
- 关于CDN对动态网站加速的一些看法
CDN的全称是Content Delivery Network,即内容分发网络.其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络"边缘" ...
- Resharper快捷键及用法
建议你使用 Reshaper 的快捷键,不要担心 Reshaper 会把你原来的快捷键设置给覆盖了,因为如果某个快捷键和 VS 是冲突的,Reshaper会让你自己选择需要使用 VS 还是 Resha ...
- wxWidgets之wxGrid控件
1. 介绍 wxGrid控件时wxWidgets界面库中内置的网格控件. 通经常使用来显示表格数据.该控件拥有强大的功能.开发人员可依据自己的需求对其进行定制. 2. 经常使用API 构造函 ...
- Ubuntu16.04下搜狗输入法、Sublime Text 3的安装
Ubuntu16.04下搜狗输入法.Sublime Text 3的安装 一.搜狗输入法 1. 安装中文语言 默认在Ubuntu16.04下是没有中文的,需要安装中文,在System Settings- ...
- Keepalived + MySQLfailover + GTIDs 高可用
架构图 10.1.1.207 mysql master + keepalived 10.1.1.206 mysql slave ( backup master ) + ke ...
- 解决UISlider滑块不灵敏
由于UI给的thumbImage图片过小,默认UISlider开始拖动的手势范围只有thumbImage的大小之内. 为了解决这个问题需要创建一个子类继承于UISlider.重写其中的方法: - (C ...
- mac Xvim 语法高亮
步骤1: cp /usr/share/vim/vimrc ~/.vimrc 先复制一份vim配置模板到个人目录下 注:redhat 改成 cp /etc/vimrc ~/.vimrc 步骤2: vi ...
- maven 依赖文件 pom.xml 编译 mvn compile 运行 不用mvn exec:java -Dexec.mainClass="hello.HelloWorld" 打成jar包 mvn package mvn install http://blog.csdn.net/yaya1943/article/details/48464371
使用maven编译Java项目 http://blog.csdn.net/yaya1943/article/details/48464371 使用"mvn clean"命令清除编 ...
- xmlUtil 解析 创建
http://yangzi09150915.blog.163.com/blog/static/32953487201072911410398/ package com.aibi.cmdc.webSer ...