以下是在dev c++上的代码
#include<stdio.h>
void main(){
char roma[100];
char *proma=roma;
int i;
long sum=0;
scanf("%s",roma);
while(*proma!='\0')
{
if(*proma=='I')
{
if(*(proma+1)=='V'||*(proma+1)=='X')
sum-=1;
else
sum+=1;
}
else if(*proma=='X')
{
if(*(proma+1)=='L'||*(proma+1)=='C')
sum-=10;
else
sum+=10;
}
else if(*proma=='V')
{
sum+=5;
}
else if(*proma=='L')
{
sum+=50;
}
else if(*proma=='C')
{
if(*(proma+1)=='D'||*(proma+1)=='M')
sum-=100;
else
sum+=100;
}
else if(*proma=='D')
{
sum+=500;
}
else if(*proma=='M')
{
sum+=1000;
}
proma++;
}
printf("%ld",sum);
}
测试什么的都没有问题,但是在leetcode上出错了,下面是在leetcode上显示的代码:
int romanToInt(char * s){
char roma[100];
char *proma=roma;
int sum=0;
scanf("%s",roma);
while(*proma!='\0')
{
if(*proma=='I')
{
if(*(proma+1)=='V'||*(proma+1)=='X')
sum-=1;
else
sum+=1;
}
else if(*proma=='X')
{
if(*(proma+1)=='L'||*(proma+1)=='C')
sum-=10;
else
sum+=10;
}
else if(*proma=='V')
{
sum+=5;
}
else if(*proma=='L')
{
sum+=50;
}
else if(*proma=='C')
{
if(*(proma+1)=='D'||*(proma+1)=='M')
sum-=100;
else
sum+=100;
}
else if(*proma=='D')
{
sum+=500;
}
else if(*proma=='M')
{
sum+=1000;
}
proma++;
}
return sum;
}
几个测试用例得出的结果都是500,很迷惑