创建 switch case 控制指令

Creating a switch case control instruction

这是代码

Write a code to find grade of a student based on the marks obtained by him and as the system given below,

1. 90-100-->A
2. 80-90-->B
3. 70-80-->C
4. 60-70-->D
5. <60-->E
#include <stdio.h>


int main(){
    int marks;

    printf("Enter your marks(1-100)\n");

    scanf("%d\n", &marks);

    switch (marks)
    {
    case 1:
        printf("Your Grade is A\n");
        break;

    case 2:
        printf("Your Grade is B\n");
        break;

    case 3:
        printf("Your Grade is C\n");
        break;

    case 4:
        printf("Your Grade is D\n");
        break;

    case 5:
        printf("Your Grade is E\n");
        break;
    }
    return 0;
}

让我们忽略这个答案的错误处理和范围陷阱!

鉴于映射,您可以只进行整数除法

int grade = marks / 10;

然后 switchgradecase 相应地(9,8,7,6,默认)

int main(){ 整数标记;

printf("Enter your marks(1-100)\n");
scanf("%d\n", &marks);

int grade = marks / 10;

switch ( grade )
{
    case 10:
    case  9: { printf( "Your Grade is A\n" ); break; }
    case  8: { printf( "Your Grade is B\n" ); break; }
    case  7: { printf( "Your Grade is C\n" ); break; }
    case  6: { printf( "Your Grade is D\n" ); break; }
    default: { printf( "Your Grade is E\n" ); break; }
}

注意:有些编译器支持允许范围的语言扩展(例如)case 90 ... 100:,但这些是非标准的,因此不应鼓励。

对于范围,在 C 中,您通常需要做一个 if-elseif-else 阶梯。

if      ( marks > 100 ) { printf( "You cheated\n"     ); }
else if ( marks > 90  ) { printf( "Your Grade is A\n" ); }
else if ( marks > 80  ) { printf( "Your Grade is B\n" ); }
else if ( marks > 70  ) { printf( "Your Grade is C\n" ); }
else if ( marks > 60  ) { printf( "Your Grade is D\n" ); }
else /*   marks < 60 */ { printf( "Your Grade is E\n" ); }

您需要将 marks 转换为 [1, 5] 范围内的数字。例如,这可以使用数组来完成。

这里有一个演示程序。

#include <stdio.h>

int main(void) 
{
    unsigned int marks = 0;

    printf( "Enter your marks(1-100): " );
    scanf( "%u", &marks );
    
    unsigned int grades[] = { 0, 60, 70, 80, 90 };

    const size_t N = sizeof( grades ) / sizeof( *grades );

    size_t i = 0;

    while ( i != N && marks < grades[N - ++i] );

    switch ( i )
    {
    case 1:
        puts( "Your Grade is A" );
        break;

    case 2:
        puts( "Your Grade is B" );
        break;

    case 3:
        puts( "Your Grade is C" );
        break;

    case 4:
        puts( "Your Grade is D" );
        break;

    case 5:
        puts( "Your Grade is E" );
        break;
    }

    return 0;
}
#include <stdio.h>
  
int main(){
   int marks;
    
   printf("Enter your marks between 0 to 100\n");
   scanf("%d", &marks);
    
   switch(marks/10){
       case 10 :
       case 9 :
           /* Marks between 90-100 */
           printf("Your Grade : A\n" );
           break;
       case 8 :
       case 7 :
           /* Marks between 70-89 */
           printf("Your Grade : B\n" );
           break;
       case 6 :
           /* Marks between 60-69 */
           printf("Your Grade : C\n" );
           break;
       case 5 :
       case 4 :
           /* Marks between 40-59 */
           printf("Your Grade : D\n" );
           break;
       default :
           /* Marks less than 40 */
           printf("You failed\n" );
   }
 
   return 0;
}

在switch语句中查找使用switch(marks/10) 如果你的分数是 80 那么 80/10 所以它会跳到案例 8.