使用循环在 C# 中制作数字及其平方的列表

Posted

技术标签:

【中文标题】使用循环在 C# 中制作数字及其平方的列表【英文标题】:Making a list of numbers and their squares in C# using a loop 【发布时间】:2013-02-17 11:53:07 【问题描述】:

我想在 C# 中使用 for 循环创建一个数字及其平方的列表。

现在我有:

namespace ConsoleApplication

    class Program
    
        static void Main(string[] args)
        

            int counter;
            int square = 1;
            const int maxValue = 10;


            Console.WriteLine("Number  Square");
            Console.WriteLine("-------------------");
            
                for (counter = 1; counter <= maxValue; counter++)
                    square = counter ^ 2;
                Console.WriteLine("0   1",  counter, square);
            

         
      

   

但我的输出只有 11 和 8。

当我将“square = counter ^ 2”放在变量声明的正下方时,我最终得到一列数字 1-10 但第二行只是一堆三,如果它们设置为 0,它们就是二.如果我没有将它设置为某个值,它也会给我一个错误来声明计数器变量。

当我将方程放在现在的位置时,它要求将 square 变量声明为某物(此处为 1)。

我也是一个初学者,我还没有学习过课程,所以我希望任何更正都不要包含它们。

编辑:已修复,天哪,我上次没有犯这个错误,是的,我需要更多练习。对不起

【问题讨论】:

这就是为什么我喜欢在所有东西上都使用花括号! 你不需要做任何求幂或乘法,因为所有完美的平方都是连续奇数的和,所以你可以通过一个简单的加法来解决这个问题:Perfect square or not? 【参考方案1】:

您不小心使用了简写来声明 for 循环块。

for 语句后面应该跟花括号来指示要执行的块。但是,如果您跳过大括号,它只会抓住“下一行”。在您的情况下,只有 square = counter ^ 2; 在循环中执行。但是,^ 运算符用于 xor 操作,而不是 pow。

你想要这个:

Console.WriteLine("Number  Square");
Console.WriteLine("-------------------");

for (counter = 1; counter <= maxValue; counter++)

    square = counter * counter;
    Console.WriteLine("0   1",  counter, square);

【讨论】:

【参考方案2】:

大括号的位置很重要:

 Console.WriteLine("Number  Square");
 Console.WriteLine("-------------------");

 for (counter = 1; counter <= maxValue; counter++)
 
     square = counter * counter;
     Console.WriteLine("0   1",  counter, square);
 

注意:正是出于这个原因,最好始终对for 循环和if 语句使用大括号。

另请注意,^ 不是“幂”而是异或

【讨论】:

【参考方案3】:

为你的计数器循环试试这个:

for (counter = 1; counter <= maxValue; counter++)

   square = Math.Pow(counter, 2);
   Console.WriteLine("0   1",  counter, square);

【讨论】:

【参考方案4】:

^ 运算符不是用于此目的。请改用 System.Math.Pow()。例子: var square = Math.Pow(3, 2)。这将给出 9。

【讨论】:

这解释了那部分。谢谢。【参考方案5】:

您的 for 循环处于速记模式。您的 console.writeline 在 for 循环之外。

尝试用这个替换行

for (counter = 1; counter <= maxValue; counter++)

  square = counter * counter;
  Console.WriteLine("0   1",  counter, square);

请注意,^ 不是 C# 中的幂运算符。它用于异或。

【讨论】:

【参考方案6】:

square = counter ^ 2 ?? 这里^ 是xor operation

这样做: square = counter * counter;

并附上


    square = counter * counter;
    Console.WriteLine("0   1",  counter, square);

for循环内 或者更好地使用Math.pow方法

【讨论】:

【参考方案7】:

我会使用:

    private void sqtBtn_Click(object sender, EventArgs e)
    
        outputList.Items.Clear();

        int itemValue, sqt;

        for (int i = 0; i < randomNumAmount; i++)
        
            int.TryParse(randomList.Items[i].ToString(), out itemValue);

            outputList.Items.Add(Math.Sqrt(itemValue).ToString("f"));
        
    

【讨论】:

请添加一些文本cmets。

以上是关于使用循环在 C# 中制作数字及其平方的列表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用c#将列表项及其索引保存在文本文件中

C#确定列表中的重复项[重复]

在c#中使用for循环检查列表中是不是存在字符串

PTA实验报告(循环 数组 函数)

Python / Pandas:循环遍历数字列表

C#编写简单计算器