gpt4 book ai didi

c - 开关案例分配,我的案例都没有提供输出

转载 作者:太空宇宙 更新时间:2023-11-04 06:20:49 24 4
gpt4 key购买 nike

大家好,我们被指派制作一个程序,要求用户输入 4 位小数,并且该程序应该将其转换为等效的罗马数字。我们的任务是只使用 switch case 函数,别无其他。我认为我的想法是正确的,但我的代码的问题是它没有提供输出。以下是我的代码、帮助、指示和建议,我们将不胜感激

int num, A, B, C, D;    

printf("enter a number: ");
scanf("%d", &num);

D = num%10;
C = ((num%100)/10);
B = ((num%1000)/100);
A = (num/1000);

if(0<num&&num<3001)
{

switch(A)
{

case '1' : printf("M");
break;
case '2' : printf("MM");
break;
case '3' : printf("MMM");
break;
}

switch(B)
{
B = ((num%1000)/100);

case '1' : printf("C");
break;
case '2' : printf("CC");
break;
case '3' : printf("CCC");
break;
case '4' : printf("CD");
break;
case '5' : printf("D");
break;
case '6' : printf("DC");
break;
case '7' : printf("DCC");
break;
case '8' : printf("DCCC");
break;
case '9' : printf("CM");
break;
}

switch(C)
{
C = ((num%100)/10);

case '1' : printf("X");
break;
case '2' : printf("XX");
break;
case '3' : printf("XXX");
break;
case '4' : printf("XL");
break;
case '5' : printf("L");
break;
case '6' : printf("LI");
break;
case '7' : printf("LII");
break;
case '8' : printf("LIII");
break;
case '9' : printf("XC");
break;
}

switch(D)
{
D = num%10;

case '1' : printf("I");
break;
case '2' : printf("II");
break;
case '3' : printf("III");
break;
case '4' : printf("IV");
break;
case '5' : printf("V");
break;
case '6' : printf("VI");
break;
case '7' : printf("VII");
break;
case '8' : printf("VIII");
break;
case '9' : printf("IX");
break;
}
}

else
printf("number out of bounds");

最佳答案

在你的switch() , 每个案例都假定它是一个字符 1 (根据 ascii 表十六进制值 0x31 ),当它检查大小写时,您的实际值将是一个整数值,即;如果num1那么它的十六进制值也是 0x1 ,所以你应该将 switch cases 更改为整数的十六进制值

还有一个注意事项,我认为你应该更改if(0<num&&num<3001)if(num > 0 && num<3001)

if((num > 0) && (num<3001))
{
printf("*\n");
switch(A)
{

case 1 : printf("M");
break;
case 2 : printf("MM");
break;
case 3 : printf("MMM");
break;
}

switch(B)
{
B = ((num%1000)/100);

case 1 : printf("C");
break;
case 2 : printf("CC");
break;
case 3 : printf("CCC");
break;
case 4 : printf("CD");
break;
case 5 : printf("D");
break;
case 6 : printf("DC");
break;
case 7 : printf("DCC");
break;
case 8 : printf("DCCC");
break;
case 9 : printf("CM");
break;
}

switch(C)
{
C = ((num%100)/10);

case 1 : printf("X");
break;
case 2 : printf("XX");
break;
case 3 : printf("XXX");
break;
case 4 : printf("XL");
break;
case 5 : printf("L");
break;
case 6 : printf("LI");
break;
case 7 : printf("LII");
break;
case 8 : printf("LIII");
break;
case 9 : printf("XC");
break;
}

switch(D)
{
D = num%10;

case 1 : printf("I");
break;
case 2 : printf("II");
break;
case 3 : printf("III");
break;
case 4 : printf("IV");
break;
case 5 : printf("V");
break;
case 6 : printf("VI");
break;
case 7 : printf("VII");
break;
case 8 : printf("VIII");
break;
case 9 : printf("IX");
break;
}
}

关于c - 开关案例分配,我的案例都没有提供输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35451910/

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