我是C语言的初学者。这是C语言计算器的代码,但在switch语句开始的行上,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;

}

最佳答案

……在switch语句中显示“ {


这是因为线


switch {



一定是


switch (n) {



其他一些评论:

1)在


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



初始化是没有用的,因为您将(尝试)在之后重新分配变量

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表示您打印一个整数,但给出了双精度值,例如将%d替换为%g

4进


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");可以替换为printf("Invalid command\n");puts("Invalid command");

关于c - 在switch语句之后是否需要添加一些内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55130721/

10-13 04:24