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