У меня есть программа на полпути, за исключением случаев, когда я перехожу к кубу числа/квадрата число/отображение нечетное или даже не вводя число, вместо этого просто указывая «Вы не ввели число «Я получаю ошибку проверки выполнения №3, а затем действительно большое отрицательное число. Это, очевидно, не то, что я хочу.Ошибка проверки времени выполнения 3 в случае
#include<stdlib.h>
#include<stdio.h>
//begin function
int main()
{
//declare variables
int choice;
int number = 0;
int cubed;
int squared;
//menu and begin do while loop
do {
printf("***********************\n");
printf("--Main Menu---\n");
printf("***********************\n");
printf("1.Enter a number\n");
printf("2.Cube the number\n");
printf("3.Square the number\n");
printf("4.Display Even or Odd\n");
printf("5.Quit\n");
printf("Enter your choice: ");
scanf("%i", &choice);
printf("Your current number is: %i \n", number);
//begin switch and functions
switch(choice){
case 1:
printf("Enter a number\n");
scanf("%i", &number);
break;
case 2:
if (number == 0)
printf("You have not entered a number\n");
else
cubed= number * number * number;
printf("Your number cubed is: %i \n", cubed);
break;
case 3:
if (number == 0)
printf("You have not entered a number\n");
else
squared= number * number;
printf("Your number squared is: %i \n", squared);
break;
case 4:
if (number == 0)
printf("You have not entered a number\n");
else if
(number % 2 ==0)
printf("Your number squared is even!\n");
else
printf("Your number is odd!\n");
break;
case 5:
printf("Goodbye!!!!\n");
system("pause");
break;
default:
printf("Was not 1 through 5\n");
break;
}// end switch and functions
} while (choice!=5);
} //end function
Он работает здесь: http://ideone.com/TagkqI –
@karma_geek: неопределенное поведение может якобы работать некоторое время ... в ответах все еще есть реальная проблема. –
@ Сессия: вы должны проверить успех при вызове 'scanf', например. 'if (scanf ("% I ", & number)! = 1) {fprintf (stderr," ваш вход недействительный номер \ n "); выход (1); } ', иначе кто-то печатает, например. буквы или знаки препинания не будут предупреждены. –