C中使用switch语句将普通数字转换为罗马数字

标签 c loops if-statement switch-statement

所以我在学校做的一些事件只有 if else 才可以正常工作,但后来我的教授告诉我将其转换为 switch,这给我带来了困难,因为当我运行一些像 11 这样的数字时,只有我才被输出十一请拦住我:((((

#include<stdio.h>
#include<conio.h>
int main()
{
    int  R,M,D,C,L,X,V,I,H=0;
        char roman_string= ' '; 

    printf("\n\nEnter number here:  ");
    scanf("%d",&R);


    M=R/1000;


    L=R%1000%500%100/50;
    X=R%1000%500%100%50/10;
    V=R%1000%500%100%50%10/5;
    I=R%1000%500%100%50%10%5/1;


      if(R>3000){
           roman_string= 'A';
           }
       if(M==3){
           roman_string= 'B';

           }
       if(M==2){
           roman_string= 'C';
           }
       if(M==1){
           roman_string= 'D';
           }
            D=R%1000/500;

       if((D==1) && (C==4)){
           roman_string= 'E';
           }
       if ((D==1) && (C!=4)){
            roman_string='F';
            }
       if((D==0) && (C==4)){
            roman_string= 'G';

            }
            C=R%1000%500/100;

        if(C==3){
            roman_string= 'H';
            }

          if(C==2){
            roman_string= 'I';
            }

           if(C==1){
            roman_string= 'J';
            }

           if((L==1) && (X==4)){
            roman_string= 'K';
            }
            if((L==1) && (X!=4)){
            roman_string='L';
            }
            if((L==0) && (X==4)){
            roman_string='M';
            }
            if(X==1){
            roman_string='N';
            }
            if(X==2){
            roman_string='O';
            }
            if(X==3){
            roman_string='P';
            }
            if((V==1) &&(I!=4)){
            roman_string='Q';
            }

       if(I==1){
            roman_string='R';
            }
       if(I==2) {
            roman_string='S';
            }

        if(I==3) {
            roman_string='T';
            }

    if((I==4) && (V%2==1)) {
            roman_string='U';
            }

    if((I==4) && (V%2==0)){
            roman_string='V';
            } 




        switch (roman_string)
        {
            case 'A' :
                printf("Invalid Input");    

        break;

         case 'B':
        printf("MMM");     
        break;



        case 'C':
        printf("MM");     
        break;


        case 'D':
        printf("M");     
        break;



        case 'E':
        printf("CM");
        break;


        case 'F':
        printf("D");     
        break;


        case 'G':
        printf("CD");     
        break;

        case 'H':
        printf("CCC");     
        break;


       case 'I':
        printf("CC");     
        break;



    case 'J':
        printf("C");
    break;


    case 'K':
        printf("XC");
    break;


    case 'L':
        printf("L");
    break;


    case 'M':
        printf("XL");
    break;


    case 'N':
        printf("X");
    break;


    case'O':
        printf("XX");
    break;


    case 'P':
        printf("XXX");
    break;


    case 'Q':
        printf("V");
    break;


    case 'R':
        printf("I");
    break;


    case 'S':
        printf("II");
    break;


    case 'T':
        printf("III");
    break;


    case 'U':
        printf("IX");
    break;


    case 'V':
     printf("IV" );
    break;

}


    getch();
    return 0;
}

最佳答案

任何时候你看到一堆 if 语句堆积起来,只是将相同的变量与不同的整数常量进行比较,如下所示:

if(x == 1) {
    do_1();
}
else if(x == 2) {
    do_2();
}
else if(x == 3) {
    do_3();
}
/// etc.
else {
    do_default();
}

您可以将它们更改为 switch 语句:

switch(x) {
case 1:
    do_1();
    break;

case 2:
    do_2();
    break;

case 3:
    do_3();
    break;

/// etc.
default:
    do_default();
}

关于C中使用switch语句将普通数字转换为罗马数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25343077/

相关文章:

java - java中的某种循环错误

sql - if-then-else 逻辑可以在 Redshift 中完成吗?

c - 使用三元条件运算符和其他两个 int 的值分配 int

r - dplyr case_when 的 data.table 替代方案

c - 如何使用 C 程序在 linux 中获取接口(interface)的 mac 地址?

javascript - NodeJS Express - 想要在单个路由上运行处理程序两次

android - 在 android 上使用 FFmpeg h264 解码器

php - 创建具有指定数量元素的数组

c - c 的头文件中带有指向它的指针的结构问题

c - 如何在 Ubuntu 中创建 C 程序的可执行文件