int zhuanhua(char c){ int i; switch(1){ case 1:if(c='I') return i=1; break; case 2:if(c='V') return i=5; break; case 3:if(c='X') return i=10; break; case 4:if(c='L') return i=50; break; case 5:if(c='C') return i=100; break; case 6:if(c='D') return i=500; break; case 7:if(c='M') return i=1000; break; } } int romanToInt(char * s){ int i=sizeof(s)/sizeof(s[0]); int *sum=(int*)malloc(i*sizeof(int)); for(int j=0;j<i;j++){ sun[j]=zhuanhua(s[j]); } int k=0; for(int l=0;l<i;l++){ if(l==i-1){ k=k+sum[l] } if(sum[l]<sum[l+1]){ k=k-sum[l];} else k=k+sum[l]; } return k; }
时间: 2023-12-02 13:05:42 浏览: 57
数据结构实验报告2.docx
5星 · 资源好评率100%
这是一段C语言代码,实现的功能是将罗马数字转换为整数。其中`zhuanhua`函数是将罗马数字字符转换为对应的整数值,`romanToInt`函数是将字符串形式的罗马数字转换为整数。代码中有一些错误,比如`switch`语句中的`case`标签应该是数字,而不是`1`、`2`等,以及`sum`数组应该是`sum`而不是`sun`。正确的代码应该是这样的:
```
int zhuanhua(char c){
int i;
switch(c){
case 'I': return i=1;
case 'V': return i=5;
case 'X': return i=10;
case 'L': return i=50;
case 'C': return i=100;
case 'D': return i=500;
case 'M': return i=1000;
}
}
int romanToInt(char * s){
int i=strlen(s);
int *sum=(int*)malloc(i*sizeof(int));
for(int j=0;j<i;j++){
sum[j]=zhuanhua(s[j]);
}
int k=0;
for(int l=0;l<i;l++){
if(l==i-1){
k=k+sum[l];
}
else if(sum[l]<sum[l+1]){
k=k-sum[l];
}
else{
k=k+sum[l];
}
}
return k;
}
```
这段代码的实现思路是先将罗马数字转换为整数,然后根据规则计算出最终的结果。
阅读全文