c - 尝试在 do while 循环中嵌套 if 语句时出现未知语法错误

标签 c visual-studio if-statement

我正在编写一个程序,读取用户输入的数字,检查它是否在 0 到 100 之间,如果是,则对数字求平方根。如果数字小于 0,则会打印一条错误消息。如果数字在 100 到 200 之间,则找到该数字的自然对数,如果超过 200,则循环终止。

#include <stdio.h>
#include <math.h>

int main (void)

{
     float num;
     double x, y;

    do {
        printf("Please enter a number \n");
        scanf("%f", &num);

        if (num > 0 && num <= 100)
        {
            x = sqrt(num);
            printf("The square root of the number entered is %f \n", x);
        }
        else if (num <= 0)
        {
            printf("Please enter a positive number \n");
        }
        else (num > 100)
        {
             y = log(num);
             printf("The natural log of the number entered is %f \n", y);
        } 
    } while (num <= 200);

    return 0;
}

我遇到的问题是,当我构建解决方案时,我收到一条错误声明,说 a ;预计在

else (num > 100)

这是什么原因,我不希望这里需要一个?

最佳答案

else (num > 100)

应该是

else if (num > 100)

else 子句没有任何条件 - 它只是一个语法错误。

您还应该检查 scanf() 调用是否成功:

if (scanf("%f", &num) != 1) {
   printf("Input error");
   exit(1);
}

关于c - 尝试在 do while 循环中嵌套 if 语句时出现未知语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40576669/

相关文章:

c - 指针结构的问题

c++ - 来自不同版本的 Visual Studio 的 PDB 文件

python - "Syntax Error"使用我的 If、Else 和 Elif 语句(Python)

c++ - 不正确的字符串比较

c - 我如何将函数指针传递给函数。

C 矩阵结构

visual-studio-2010 - 在 ReSharper 中禁用当前文件的代码分析

c++ - 在 Fortran 和 C++ 之间传递复杂的数据结构

javascript - Laravel:在 blade @if 中使用 Javascript

c - 在 C 中传递 sbrk() 和 intptr_t 与 int 之间有什么区别