中易网

用c语言将罗马数字转化为十进制数字

答案:2  悬赏:40  
解决时间 2021-01-10 11:50
用c语言将罗马数字转化为十进制数字
最佳答案
罗马数字只能用字符串来表示,用字符串比较函数来判断就好了
#include
#include
int main()
{
char str[100];
printf("input a Roman numeral: " );
scanf("%s", str );
if ( strcmp(str,"VI")==0 )
printf("6\n");
else if ( strcmp(str, "X")==0 )
printf( "10\n");
else
{
printf("按格式,自己补充代码\n" );
}
return 0;
}追问要转换1到12的罗马数字追答按上面的代码格式,你自己补充其他的数字不就可以了吗?
自己动手练习一下啊。
如果想灵活表示相应的数值,需要写个算法了。追问好的追答自己练习一下,有问题再交流
全部回答
#include 
int getUnit(char ch){
int unit=0;
switch(ch){
case 'I': unit =  1; break;
case 'V': unit =  5; break;
case 'X': unit = 10; break;
default: unit = -1;
}
return unit;
}
int getValue(char *s)
{
char *p = s;
int val = 0;
int unit;
while(*p && (*p != ' ')){
unit = getUnit( *p );
if (unit==-1)
{
printf("输入有误! ");
return -1;
}
if((*(p+1) == '') || (*(p+1) == ' ') || ( getUnit( *(p+1) ) <= unit))
{
val += unit;
}
else
{
val -= unit;
}
p++;
}
return val;
}
int main()
{
char romanNum[10];
int digit;

printf("请输入罗马数字(输入q或Q退出程序) ");
while(1)
{
gets(romanNum);
// 输入q或Q退出
if(romanNum[0]=='q' || romanNum[0]=='Q') 
break;
digit = getValue(romanNum);
if (digit!=-1)
{
printf("%d ", digit);
}
else
{
printf("请重新输入一个罗马数字(输入q或Q退出程序) ");
}
}
return 0;
}
 程序运行结果如下:
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
迎宾家具怎么去啊,我要去那办事
哪位好心人能给我说一下奇迹赤色要塞的背景音
舞字开头的成语大全
谁有日剧非自然死亡,想看。
0∶97+1∶32+1∶23+1∶09几分钟?
有关德行的成语
如何在WORD中的第二页设置页码
1LI/CAN是什么计量单位
歌曲词小东口臭门牙黄,屁眼塞俩棒棒糖是群星
佛手观音含义
如何让学生的作文语言更凝练
贤功能不好白蛋白吸收不好吃什么
台州离三门有多少远,有没班车到三门的
win 10最新版本是什么?求一个 原版下载地址
怎样面对眼前的挫折
推荐资讯
请问28题怎么写啊,谢谢
急~~~!水果FL Studio 可以自动配置和弦和声
在天猫买东西退款成功了但货又送到了,怎麽办
rubberband阿波罗歌词
Nearly three months had gone by _________
2018速腾舒适版,搭载1.6l怎么样?
胆机用什么音箱
宝溪小学地址有知道的么?有点事想过去
温州市移民安置办公室这个地址在什么地方,我
山坡羊 薛昂夫 鉴赏
表示隐私的词语
粤s.2888
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?