在数组c#for循环中添加正负整数之和

Posted

技术标签:

【中文标题】在数组c#for循环中添加正负整数之和【英文标题】:Adding the sum of positive and negative integer in the array c# for loop 【发布时间】: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]++; 的作用吗?您在每个“负输入为”和“正输入为”中都有它。它通过向数组加一来更改数组的值。所以在显示值之后,你就改变它。 【参考方案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,你只需要几个变量来存储总和以及正/负数的字符串表示。

以上是关于在数组c#for循环中添加正负整数之和的主要内容,如果未能解决你的问题,请参考以下文章

获得数值型数组的所有元素之和(分别使用增强for循环和普通for循环)

用for循环计算100以内的奇数之和

用c语言for循环求1到100之和

LeetCode:18. 4Sum(Medium)

c++用for循环求1~100内的奇数之和,偶数之和

在 for/if 循环中添加新键并更改值