-3

我正在编写一个计算势能变化的复杂程序(ΔPE= mgΔh)。

Console.WriteLine("Mass in kg");
string cmMa = Console.ReadLine();
double cMass;
if(!Double.TryParse(cmMa, out cMass) )
{
    Console.WriteLine("Only numbers!");
    Console.ReadLine();
}
Console.WriteLine("First height in m");
string cfH = Console.ReadLine();
double fH;
if(!Double.TryParse(cfH, out fH))
{
    Console.WriteLine("Only numbers!");
    Console.ReadLine();
}
Console.WriteLine("Second height in m");
string csH = Console.ReadLine();
double sH;
if(!Double.TryParse(csH, out sH))
{
    Console.WriteLine("Only numbers!");
    Console.ReadLine();
}
double ch = fH - sH;
Console.WriteLine("Intermediate result: Change in height(Δh)= "+ch+" m" );
Console.ReadLine();
double ng = 9.81;  //   m/s^2
Console.WriteLine("CHANGE IN POTENTIAL ENERGY: "+ch*cMass*ng+" J");

最后,我想添加一个 if 语句,如果 sH>fH,则交换它们的值。我应该应用什么概念?

4

7 回答 7

3

交换 sH 和 sF 的值:

sH = Interlocked.Exchange(ref sF, sH);

InterlockedSystem.Threading命名空间中声明。

它允许在一行中交换变量。交换是原子的、线程安全的。

就性能而言,它比使用临时变量的交换要“慢”一点。它仍然是闪电般的。除非在纳米级进行极端优化,否则不必担心。

于 2017-12-12T03:58:23.053 回答
1
if (sH > fH) {
  double temp = sH;
  sH = fH;
  fH = temp;
}

交换可以通过使用临时的第三个变量来完成。将 sH 存储在一个临时变量中并将 sH 分配给 fH。这样 sH 的值被缓存并且在重新分配时不会丢失。最后,将 fH 分配给 temp。现在交换了值。

希望这可以帮助

于 2013-06-30T15:03:39.947 回答
1

假设您这样做的原因是ch这里不是负面的:

double ch = fH - sH;

只需获取绝对值:

double ch = Math.Abs(fH - sH);
于 2013-06-30T15:06:56.567 回答
1

利用:

static void Main(string[] args)
{
    Console.WriteLine("please imput number 1 ");
    int a = Convert.ToInt32(Console.ReadLine());
    Console.WriteLine("please imput number 2 ");
    int b = Convert.ToInt32(Console.ReadLine());

    if (a > b)
    {
        int temp1 = a;
        int temp2 = b;
        b = temp1;
        a = temp2;
    }
}
于 2015-04-28T20:31:39.307 回答
1

将其中一个变量存储在一个临时变量中,然后交换它们:

if (sH > fH) {
   var temp = sH;
   sh = fH;
   fH = temp; 
}
于 2013-06-30T14:59:31.990 回答
0

呃... 将 A 复制到 tmp 变量中,将 B 复制到 A,将 tmp 复制到 B?由于您正在处理强解析,因此我看不出任何像 xor-swap (通过不安全的整数处理)这样的疯狂行为是有必要的。

于 2013-06-30T15:01:00.237 回答
-2

试试这个,但这不如使用临时变量快:

if (sH > fH)
{
    sH -= fH;
    fH += sH;
    sH = fH - sH;
}
于 2013-12-01T15:04:49.133 回答