【问题标题】:Write a program that takes the input in separate lines and calculates the sum in C编写一个程序,在单独的行中接受输入并计算 C 中的总和
【发布时间】:2020-04-23 11:09:29
【问题描述】:

我想编写一个程序,在单独的行中获取输入(每行 2 个整数)并计算每行这 2 个整数的总和 这是我的代码:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int *numbers;
    int i, j;
    numbers = malloc(100 * sizeof(int));
    for (i = 1; i <= 100; i++)
    {
        for (j = 1; j <= 2; j++)
        {
            scanf("%d", &numbers[j]);
        }
        printf("%d\n", numbers[1]+numbers[2]);
    }


    return 0;
}

我的问题是这个程序在写入 2 个数字后立即给出 sum 并且直到达到 100 行才停止。但我想要这样:

example input:
10 5
6 8
67 2

example output:
15
14
69

100 只是用户可以输入的最大行数。我该怎么做?

【问题讨论】:

  • 您希望程序如何知道输入何时结束?在我们建议如何编码之前,您需要定义该结束条件。例如有负数时结束,有'q' 时结束,开头有一个数字表示行数,等等。
  • 这正是我的问题!我不知道程序应该如何知道停止!指令没有说明这一点
  • 查看scanf 文档。您没有检查来自scanf 的返回,它会告诉您是否到达文件末尾(在这种情况下是用户输入的结尾)。也就是说,如果您按 ctrl-D(在 Linux 中)或 ctrl-Z(在 Windows 命令行中)结束。
  • 好吧,如果这真的是给出的全部,那么这是一个措辞糟糕的问题描述。你应该和给你的人澄清一下。如果你不明白,最好的办法是按照@lurker 已经说过的去做。
  • @OrangeBike 如果输入来自文件,您可以检查 endOfFile。也许让你编写程序的人想要从文本文件中输入

标签: c


【解决方案1】:

有两种方法可以解决这个问题 1)你需要有'n'个用户要给出的输入 2)您应该从文件中读取它以检测行尾。 下面的代码是第一个选项。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int *numbers;
    int i, j,n;
    scanf("%d", &n);
    numbers = malloc(n * sizeof(int));

    for (i = 0; i < n; i++)
    { int s1,s2;
            scanf("%d", &s1);
            scanf("%d", &s2);
        numbers[i]= s1+s2;
    }
 for (i = 0; i < n; i++)
    { 
        printf("%d",numbers[i]);
    }

    return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多