【问题标题】:Adding the sum of positive and negative integer in the array c# for loop在数组c#for循环中添加正负整数之和
【发布时间】:2021-03-21 22:03:44
【问题描述】:

“正输入的总和是:”和“负输入的总和是:”部分不起作用,没有答案显示可能是什么解决方案?顺便说一句,这是一个 11 年级的问题

int i, num, sum = 0;
Console.Write("\nInput the number of elements to be stored in the array :");
num = Convert.ToInt32(Console.ReadLine());

for (i = 0; i < num; i++)
{
    Console.Write("Elements - {0}:", i, num);
    array[i] = Convert.ToInt32(Console.ReadLine());
}
Console.Write("The positive inputs are :");
for (i = 0; i < num; i++)
{
    if (array[i] >= 0)
    {

        Console.Write(array[i] + ",");
        array[i]++;


    }
}
Console.Write("\nThe sum of positive input is :");
for (i = 0; i < num; i++)
{
    if (array[i] >= 0)
    {
        sum += array[i];
    }
}
    Console.Write("\nThe negative inputs are :");
for (i = 0; i < num; i++)
{
    if (array[i] < 0)
    {
        Console.Write(array[i] + ",");
        array[i]++;

    }
}
Console.Write("\nThe sum of negative input is :");
for (i = 0; i < num; i++)
{
    if (array[i] < 0)
    {
        sum += array[i];
    }
}

【问题讨论】:

  • Console.WriteLine("The sum is " +sum) ?你根本没有打印总和。你不应该在对负值求和之前重置总和吗?或者您是否需要从正值的总和中提取负值?也许你只能在这个数组上循环一次?在显示它们之后增加值是否正常?
  • 我添加了 +sum 但它给出了错误的答案
  • 你是在计算之后做的吧?
  • 首先,你还没有添加代码来显示 sum,所以在 sum-calculating for-loop 结束后,你需要添加类似 Console.WriteLine(sum); 的东西。其次,在计算出正数之和后,您必须使sum = 0根据需要得到负数的精确输出。
  • 顺便说一句,您了解array[i]++; 的作用吗?您在每个“负输入为”和“正输入为”中都有它。它通过向数组加一来更改数组的值。所以在显示值之后,你就改变它。

标签: c# arrays for-loop


【解决方案1】:

首先,从用户输入读取数组长度后,您不会初始化数组。你应该有:

int[] array;
Console.Write("\nInput the number of elements to be stored in the array :");
num = Convert.ToInt32(Console.ReadLine());
array = new int[num];

其次,您使用相同的sum 变量进行正负计算(中间不重置)。您可以为这两个计算使用两个单独的变量:

int i, num, posSum = 0, negSum = 0;

第三,正如评论中提到的Drag and Drop,您不需要array[i]++;,因为它修改了数组的元素。

第四,正如评论中提到的Usama Aziz,您没有在其中打印结果的Console.Write

最终的解决方案应该是这样的:

static void Main(string[] args)
{
    int i, num, posSum = 0, negSum = 0;
    int[] array;
    Console.Write("\nInput the number of elements to be stored in the array :");
    num = Convert.ToInt32(Console.ReadLine());
    array = new int[num];

    for (i = 0; i < num; i++)
    {
        Console.Write("Elements - {0}:", i, num);
        array[i] = Convert.ToInt32(Console.ReadLine());
    }

    Console.Write("The positive inputs are :");
    for (i = 0; i < num; i++)
    {
        if (array[i] >= 0)
        {
            Console.Write(array[i] + ",");
        }
    }

    Console.Write("\nThe sum of positive input is :");
    for (i = 0; i < num; i++)
    {
        if (array[i] >= 0)
        {
            posSum += array[i];
        }
    }
    Console.Write(posSum);

    Console.Write("\nThe negative inputs are :");
    for (i = 0; i < num; i++)
    {
        if (array[i] < 0)
        {
            Console.Write(array[i] + ",");
        }
    }

    Console.Write("\nThe sum of negative input is :");
    for (i = 0; i < num; i++)
    {
        if (array[i] < 0)
        {
            negSum += array[i];
        }
    }
    Console.Write(negSum);
}

祝你考试顺利!

【讨论】:

  • 嗨,先生,我第一次尝试使用 posSum = 0, negSum = 0;想知道为什么它不起作用,也许我用错了方式顺便说一句谢谢先生!
【解决方案2】:

特别感谢 Usama 爵士和 Drag and Drop 爵士

int[] array = new int[100];
int i, num, sum = 0;

Console.Write("\nInput the number of elements to be stored in the array :");
num = Convert.ToInt32(Console.ReadLine());

for (i = 0; i < num; i++)
{
    Console.Write("Elements - {0}:", i, num);
    array[i] = Convert.ToInt32(Console.ReadLine());
}

Console.Write("The positive inputs are :");
for (i = 0; i < num; i++)
{
    if (array[i] >= 0)
    {
        Console.Write(array[i] + ",");
    }
}

Console.Write("\nThe sum of positive input is :" );
for (i = 0; i < num; i++)
{
    if (array[i] >= 0)
    {
        sum += array[i];
    }
}

Console.Write(sum);
sum = 0;
Console.Write("\nThe negative inputs are :");
for (i = 0; i < num; i++)
{
    if (array[i] < 0)
    {
        Console.Write(array[i] + ",");
    }
}

Console.Write("\nThe sum of negative input are :" );
for (i = 0; i < num; i++)
{
    if (array[i] < 0)
    {
        sum += array[i];
    }
}

Console.Write(sum);

【讨论】:

  • 填充数组后,每隔Console.Write 移动一次到最后。并且对于每个类似的 For 循环复制和过去的核心指令。你可以在一个循环中完成所有这一切使用一个简单的if(input&gt;=0){}else{},你只需要几个变量来存储总和以及正/负数的字符串表示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-19
  • 2016-10-12
  • 1970-01-01
  • 1970-01-01
  • 2022-06-15
  • 2014-10-07
相关资源
最近更新 更多