gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 21:30:33 26 4
gpt4 key购买 nike

所以我在学校做的一些事件只有 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com