#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. Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, как и/или почему он решает проблему, повысит долгосрочную ценность ответа.