Нужно ли что-то добавлять после оператора switch? - PullRequest
0 голосов
/ 13 марта 2019

Я новичок в языке C. Вот код моего калькулятора C, но он дает мне ошибку в операторе switch, говоря «Ожидается () перед {» в строке, где начинается оператор переключения. Код выглядит следующим образом:

int main()
{
    double num_1 = 0.0;
    double num_2 = 0.0;
    double n = 0.0;
    double Total = 0.0;

    printf("\nEnter 1 for add:\n ");
    printf("Enter 2 for subtract:\n ");
    printf("Enter 3 for division:\n ");
    printf("Enter 4 for multiplication:\n ");
    printf("Enter 5 for percentage:\n ");
    printf("Enter 6 for power:\n ");
    scanf("%d", & n);

    printf("Enter first number:  ");
    scanf("%d", & num_1);
    printf("Enter second number:  ");
    scanf("%d", & num_2);

    switch {
        case 1 : Total=num_1+num_2;
                 printf("The add is : %d\n",Total);
                 break;
        case 2 : Total=num_1-num_2;
                 printf("The Subtract is : %d\n",Total);
                 break;
        case 3 : Total=num_1/num_2;
                 printf("The division is : %d\n",Total);
                 break;
        case 4 : Total=num_1*num_2;
                 printf("The multiplication is : %d\n",Total);
                 break;
        case 5 : Total=num_1%num_2;
                 printf("The percentage is : %d\n",Total);
                 break;
        case 6 : Total=; pow(num_1, num_2)
                 printf("The power is : %d\n",Total);
                 break;
        default:
                printf("No Result\n");
                break;
    }

    return 0;

}

1 Ответ

0 голосов
/ 13 марта 2019

... выдает ошибку в операторе switch, говоря: «ожидается () перед {»

Это потому, что строка

switch {

должно быть

switch (n) {

Некоторые другие замечания:

1) In

 double num_1 = 0.0;
 double num_2 = 0.0;
 double n = 0.0;
 double Total = 0.0;

theинициализация бесполезна, потому что вы будете (пытаться) переназначить переменные после

Тип n должен быть изменен на целое число из-за его использования

2) В

scanf("%d", & num_1);
....
scanf("%d", & num_2);

%d означает, что вы вводите int , но вы даете указатель на double , это недопустимо

Замените %d на %g, например

3) В

 printf("The add is : %d\n",Total);
 ...
 printf("The Subtract is : %d\n",Total);
 ...
 printf("The division is : %d\n",Total);
 ...
 printf("The multiplication is : %d\n",Total);
 ...
 printf("The percentage is : %d\n",Total);
 ...
 printf("The power is : %d\n",Total);

формат %d означает, что вы печатаете int но вы даете double , замените %d на %g например

4) In

case 6 : Total=; pow(num_1, num_2)

', 'неправильно расположен, должен быть

case 6 : Total= pow(num_1, num_2);

5) вы не проверяете, будете ли вы делить илипо модулю 0

6) вы не проверяете ваш scanf , возвращающий 1, поэтому, если было введено правильное значение (и не EOF тоже)

7) printf("No Result\n"); canзаменить на printf("Invalid command\n"); или puts("Invalid command");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...