一个有趣的话题,帮忙解决!!!
尝试写一个函数:
入口:a,b 两个整数
返回:a,b 中小的数
限制:不允许使用分支语句
也有可能两个数是相等的,,相等的话就返回任意一个
[解决办法]
int ReturnMin(int a,int b)
{
a> =b?b:a;
}
[解决办法]
限制:不允许使用分支语句
凸啥意思?
[解决办法]
return a> =b ? a : b;
[解决办法]
int ReturnMin(int a,int b)
{
return a> =b?b:a;
}
[解决办法]
return a> =b ? a : b;
。。。。
[解决办法]
//纯数学方法搞定
/// <summary>
/// 过滤掉全部的正数
/// </summary>
/// <param name= "X "> 浮点数 </param>
/// <returns> 当X小于0时返回X,否则返回0 </returns>
public double PositiveNumber(double X)
{
return (X - Math.Abs(X)) / 2;
}
/// <summary>
/// 取得最小值
/// </summary>
/// <param name= "A "> 浮点数A </param>
/// <param name= "B "> 浮点数B </param>
/// <returns> 当A小于B返回A,否则返回B </returns>
public double Min(double A, double B)
{
return (PositiveNumber(A - B) + PositiveNumber(B - A) + A + B) / 2;
}
private void button1_Click(object sender, EventArgs e)
{
Console.WriteLine(Min(1, 2)); //1
Console.WriteLine(Min(10, 2)); //2
Console.WriteLine(Min(Min(3, 2), 1)); //1
}
[解决办法]
Math.min()
[解决办法]
还是错了,应该是 return (!(a^b))&a; 草纸太乱了还是不好。
[解决办法]
很有意思阿
[解决办法]
小弟不才。刚学编程,不知下面的笨方法是否可以?请大哥大姐门多多指教。
using System;
using System.Collections.Generic;
using System.Text;
using GB_MemoryTool;
namespace GB_Memory
{
class Program
{
static void Main(string[] args)
{
int k = 0;
kknkl(2147483640, 2147483641,ref k);
Console.WriteLine(k);
Console.ReadLine();
}
static public void kknkl(int i, int j,ref int k)
{
int num1 = i;
int num2 = j;
for (int n = 0; n <= Int32.MaxValue; n++)
{
try
{
checked
{
i++;
}
}
catch
{
k = num2;
break;
}
try
{
checked
{
j++;
}
}
catch
{
k = num1;
break;
}
}
}
}
}
[解决办法]
to weidonghai:
通过异常来判读是够有想象力的!
这样测试kknkl(-2147483640, -2147483641,ref k);循环次数就多了!
另外for语言和用判断语句没什么区别,不如直接这样
for (; i < j; )
{
k = i;
return;
}
k = j;
to ghao0:
a = -5;
b = 1;
结果是1
a = 1;
b = 1;
结果是0