-5

我必须使用 switch case 编写一个程序,该程序查找一个数字是否小于 10、等于 10、大于 10 且小于 100,并且与上述选项不同。数字由用户给出。我试过这个:

#include <stdio.h>
int main ()


switch ( 4*(n >= 100) + 2*(n >= 10) + (n <= 10) )
{
case 1: printf( "%d is less than 10\n", n); break;

case 3: printf( "%d is equal to 10\n", n); break;

case 2: printf( "10 < %d < 100\n", n); break;

default: printf(" %d is not in an identified range\n", n); break;
}

但是当我尝试编译它时,它说:

ERROR IN "switch ( 4*(n >= 100) + 2*(n >= 10) + (n <= 10) ) ".

错误在哪里?我需要在switch中写这个。

错误:D:\comparison.c syntax error before "switch"

4

2 回答 2

1

如果这是您的确切代码,则以下错误:

  • 声明之后没有左大括号main()。因此没有函数,您的代码现在位于全局命名空间的中间。
  • 也没有声明变量n,因此它也会导致编译错误。
  • 最后, 没有返回值main(),这虽然不是编译错误(除非警告足够迂腐),但它是一个逻辑错误,并留下了main()未定义行为的返回值。

这有效:

#include <stdio.h>
int main( int argc, char* argv[] )
{ // <<==== note: added opening curly brace

    int n=65; // <<==== note: added declaration of n

    switch ( 4*(n >= 100) + 2*(n >= 10) + (n <= 10) )
    {
        case 1: printf( "%d is less than 10\n", n); break;
        case 3: printf( "%d is equal to 10\n", n); break;
        case 2: printf( "10 < %d < 100\n", n); break;
        default: printf(" %d is not in an identified range\n", n); break;
    }

    return 0; // <<==== note: added return value
} // <<== note: added closing curly brace

我将您条件中的实际表达是否switch正确留给您(我不认为它们是正确的,但我不熟悉您的任务)。

于 2013-04-21T18:36:00.027 回答
1

如果这是您的全部代码,那么您缺少大括号{}函数周围。

您还应该return 0;在函数末尾添加一条语句,因为您声明该函数返回一个整数。如果你不带任何参数,你应该用void参数声明函数。

于 2013-04-21T18:21:06.353 回答