我必须使用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) ) ".
错误在哪里?我需要在交换机中写这个。
错误:D:\comparison.c syntax error before "switch"
。
答案 0 :(得分:1)
如果这是您的整个代码,那么您在函数周围缺少大括号{
和}
。
当您声明函数返回一个整数时,您还应该在函数末尾添加一个return 0;
语句。如果你不接受任何参数,你应该使用void
参数声明该函数。
答案 1 :(得分:1)
如果这是您的完全代码,则以下错误:
main()
的声明之后没有任何开头括号。因此,没有函数 body ,您的代码现在位于全局命名空间的中间。 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
条件中的实际表达方式是否正确(我认为不是,但我不熟悉您的作业)。