Нахождение суммы 2 переменных из 1 оператора в C

#c #sum

Вопрос:

Я недавно начал изучать C и должен создать программу, которая сканирует два целых значения из стандартных входных данных, разделенных пробелом, а затем выводит сумму этих двух целых чисел. Должен уметь принимать отрицательные значения. Я использую repl.it для написания кода 1-го, а затем вставки в .c для компиляции.

Попытка:

 #include <stdio.h>

int main(void) {
   int j = 0;
   printf("Enter 2 integers separated by space and press enter:n");
   while (scanf("%d", amp;j) == 1) { 
      printf("Here is the sum:"%d", j);
   }
   return 0;
}
 

Кроме этих отпечатков

 Here is the sum: 1Here is the sum: 2
 

Вывод неверный, так какую же ошибку я допустил? Каков правильный метод получения ожидаемых значений?

(например, 1 2=3)

Комментарии:

1. Если вы пытаетесь сложить 2 целых числа, это не сработает. Просто scanf разделите на 2 отдельные переменные, а затем добавьте их.

2. Разве вы не ожидали бы где-нибудь выполнить дополнение?

3. int a, b; затем if (scanf ("%d %d", amp;a, amp;b) != 2) { /* handle error */ } printf ("sum: %dn", a b);

4. Проблема не требует цикла. Вам нужно получить ровно два значения (предполагая две переменные). Кроме того, и не принимая входные данные, как описано в проблеме, вы не предприняли никаких попыток фактически добавить входные значения.

5. @mediocrevegetable1 Проблема явно указывает на добавление 2 чисел из 1 оператора scanf.

Ответ №1:

Ваш код неверен. Он даже не компилируется из-за "Here is the sum:"%d" плохо отформатированной строки. Программа будет повторно сканировать целое число из стандартного ввода и выводить его так, как оно было результатом суммы.

Разбор двух целых чисел, разделенных пробелом, можно легко выполнить с scanf() помощью функции с помощью "%d %d" шаблона. Функция scanf() возвращает ряд успешно проанализированных аргументов, таким образом, значение 2 ожидается при правильном вводе. Наконец, добавьте оба числа и распечатайте результат.

 #include <stdio.h>

int main(void) {
   int i, j;
   if (scanf("%d %d", amp;i, amp;j) == 2) { 
      printf("Here is the sum: %dn", i   j);
   return 0;
}
 

Комментарии:

1. Я получил это [«main.c:4:1: ошибка: ожидаемый идентификатор или ‘(‘] [if (scanf(«%d %d», amp;i, amp;j) == 2) { ] [^] [1 сгенерирована ошибка.] (статус выхода 1″)

2. @JanusP Код-это фрагмент , а не полное решение. Это тело main() функции, которая у вас уже есть. tstanisl не безосновательно предположил, что вы знали достаточно, чтобы понять, что представляет собой действительная программа в C. Дело в том, что вам нужна дополнительная переменная ( i ), и чтобы заменить ваш while цикл if показанным.

3. Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, как и/или почему он решает проблему, повысит долгосрочную ценность ответа.