Я начинаю программировать, и мне нужна помощь в моем коде. Предполагается, что это калькулятор с 6 функциями, включая основной. Четыре для операций и один для ввода двух чисел. Он сбрасывается, как только я ввожу второй ввод для номера. Кроме того, у меня возникла проблема с возвратом значений из функции input()
в основную функцию для выполнения операций. Может быть, это что-то связано со сканированием на выбор?Сбой кода после вызова scanf
#include <stdio.h>
int add(int n1, int n2);
int subtract(int n1, int n2);
int multiply(int n1, int n2);
int divide(int n1, int n2);
void input(int *n1, int *n2);
int main(void)
{
int n1, n2, ret;
char opt;
input(&n1, &n2);
printf("Addition -> 1\nSubtraction -> 2\nMultiplication -> 3\nDivision -> 4\nReset -> R\nExit -> E\n");
scanf("%c", &opt);
switch(opt){
case '1':
ret = add(n1, n2);
printf("The sum is %d\n", ret);
break;
case '2':
ret = subtract(n1, n2);
printf("The difference is %d\n", ret);
break;
case '3':
ret = multiply(n1, n2);
printf("The sum is %d\n", ret);
break;
case '4':
ret = divide(n1, n2);
printf("The sum is %d\n", ret);
break;
}
return 0;
}
void input(int *n1, int *n2)
{
int a, b;
printf("Enter first number: \n");
scanf("%d", &n1);
printf("Enter second number: \n");
scanf("%d", &n2);
*n1 = a;
*n2 = b;
}
add(n1, n2)
{
int result;
result = (n1+n2);
return result;
}
subtract(n1, n2)
{
int result;
result = (n1-n2);
return result;
}
divide(n1, n2)
{
int result;
result = (n1/n2);
return result;
}
multiply(n1, n2)
{
int result;
result = (n1*n2);
return result;
}
Я также делаю это правильно?
'зсапЕ ("% D", &n1);' -> 'Scanf ("% d", &a); ',' scanf ("% d", &n2); '->' scanf ("% d", &b); ' – BLUEPIXY