Ладно ... здесь много чего не так, но я покажу, что вы разместили в комментариях, пункт за точкой.
#include <stdio.h>
int main() {
/*Declare the active agents */
int num1=0, num2=0, num3=0, num4=0, op = 1 || 2 ;
Здесь вы инициализируете свои переменные равными нулю, кроме op, для которого вы устанавливаете 1 (1 || 2, который является логическим значением или, возвращает 1 (true), поэтому в результате вы устанавливаете op в 1).
num3 = (num1 + num2);
num4 = (num1 * num2);
Здесь вы устанавливаете num3 и num4 на ноль, поскольку num1 + num2 - это 0 + 0, а num1 * num2 - это 0 * 0. Вы хотите переместить это значение после вашего scanf.
/* Information Extraction Method */
printf("YO MOFO!!!Press a number or hit the dirt!!\n");
scanf("%d", &num1);
printf("Since you didn't hit the dirt, how about another number?\n");
scanf("%d", &num2);
/* Menu (AKA Input */
printf("If you want to add, press 1 ,\nIf you want to multiply, press 2 ... \n\n ");
scanf ("%d", &op);
Эти printf и scanf хороши. Хорошая работа.
/* PROCESS */
if (op = 1) {num3;};
if (op = 2) {num4;};
Три вещи здесь. Во-первых, op = 1 назначает 1 для op. То же самое с op = 2. Вы хотите op == 1 и op == 2, как у вас ниже. Результатом этого будет то, что op всегда будет 2 после этих операторов if.
Во-вторых, хотя и допустимое утверждение, num3; сам по себе ничего не сделает.
Наконец, хотя это ничего не ранит, вам не нужны точки с запятой после закрывающих фигурных скобок.
/* OutPut */
if (op == 1) {
printf("Alone, a toothpick is weak, but as part of a sum, your answer is:\n%d"), &num3;
};
if (op == 2) {
printf("Multiplied as a sum of it's parts, your answer is:\n%d"), &num4;
};
Здесь вы печатаете адреса num3 и num4 вместо их значений. Это одна из причин, по которой вы видите большие числа, которые не имеют смысла, это адреса num3 и num4 в памяти. Амперсанд (&) нужен только для scanf, а для printf - нет. Кроме того, действительное значение всегда будет равно 0, так как ваши вычисления сделаны до того, как вы получите числа от пользователя.
РЕДАКТИРОВАТЬ: На самом деле, получается, что причина того, что вы не получаете правильные числа здесь, в том, что вы вообще не передаете число в printf. У вас есть num3 и num4 вне скобок. До имени переменной по-прежнему не должно быть амперсанда, но он должен выглядеть следующим образом printf("Multiplied... is:\n%d", num4);
Обратите внимание, что num4
находится внутри скобок.
printf("\n\n\n\nMath frum da hud..... Yo. \n\n\nLOL\n >;]");
/* End Of Program */
return 0;
}
Редактировать: Ради ясности, я переписал его так, чтобы он работал так, как вы хотели.
#include <stdio.h>
int main() {
/*Declare the active agents */
int num1=0, num2=0, num3=0, num4=0, op = 0;
/* Information Extraction Method */
printf("YO MOFO!!!Press a number or hit the dirt!!\n");
scanf("%d", &num1);
printf("Since you didn't hit the dirt, how about another number?\n");
scanf("%d", &num2);
num3 = (num1 + num2);
num4 = (num1 * num2);
/* Menu (AKA Input */
printf("If you want to add, press 1 ,\nIf you want to multiply, press 2 ... \n\n ");
scanf ("%d", &op);
/* OutPut */
if (op == 1) {
printf("Alone, a toothpick is weak, but as part of a sum, your answer is:\n%d", num3);
};
if (op == 2) {
printf("Multiplied as a sum of it's parts, your answer is:\n%d", num4);
};
printf("\n\n\n\nMath frum da hud..... Yo. \n\n\nLOL\n >;]");
/* End Of Program */
return 0;
}
НТН.