罗马特殊的加法,编程。
发布网友
发布时间:2024-08-20 06:49
我来回答
共3个回答
热心网友
时间:2024-08-24 10:21
int fun对照表(char c罗马){
switch (c罗马)
{
case I:
return 1;
break;
case V:
return 5;
break;
case X:
return 10;
break;
case L:
return 50;
break;
case C:
return 100;
break;
case D:
return 500;
break;
case M:
return 1000;
break;
}
}
int fun罗马转阿拉伯(string s罗马){
int i阿拉伯=0,i;
char c罗马[]=s罗马;
i阿拉伯=fun对照表(c罗马[s罗马.length-1]);
for(i=s罗马.length-1;i>=0;i--){
if(fun对照表(c罗马[i+1])>=fun对照表(c罗马[i])){
i阿拉伯+=fun对照表(c罗马[i+1]);
}else{
i阿拉伯-=fun对照表(c罗马[i+1]);
}
}
return i阿拉伯;
}
热心网友
时间:2024-08-24 10:21
第三方的身份大公司的和人格沙发沙发富商大贾地方好地方
热心网友
时间:2024-08-24 10:15
#include<stdio.h>
#include<string.h>
int chklm(char *s)
{
int i,length=0,sum=0,equflag=0,bigflag=0;
int lmstr[20]={0};
length=strlen(s);
for(i=0;i<length;i++)
{
switch(*s)
{
case 'I':lmstr[i]=1;break;
case 'V':lmstr[i]=5;break;
case 'X':lmstr[i]=10;break;
case 'L':lmstr[i]=50;break;
case 'C':lmstr[i]=100;break;
case 'D':lmstr[i]=500;break;
case 'M':lmstr[i]=1000;break;
default:lmstr[i]=0;break;
}
s++;
}
for(i=0;i<length;i++)
{
printf("%d,",lmstr[i]);
}
printf("\n");
for(i=0;i<length;i++)
{
if(lmstr[i]>lmstr[i+1])
{
bigflag++;
sum=sum+lmstr[i];
}
else
{bigflag=0;}
if(lmstr[i]==lmstr[i+1])
{
equflag++;
if((bigflag>0)&&(equflag>3)) return(0);
sum=sum+lmstr[i];
}
else
{equflag=0;}
if(lmstr[i]<lmstr[i+1])
{
if(equflag>0) return(0);
if((lmstr[i]!=1)&&(lmstr[i]!=10)&&(lmstr[i]!=100)) return(0);
if(lmstr[i+1]/lmstr[i]>10) return(0);
sum=sum-lmstr[i];
}
}
return(sum);
}
void lmtosum(int sum)
{
int i=0,equflag=0,equcnt=0;
char lm[8]={' ','M','D','C','L','X','V','I'};
char s[20]={0};
while((sum>0)&&(i<20))
{
if(sum>=1000)
{
s[i]=lm[1];
sum-=1000;
i++;
if((i>=4)&&(s[i-1]==s[i-2])&&(s[i-1]==s[i-3])&&(s[i-1]==s[i-4]))
{
i-=4;
s[i++]=lm[1];
s[i++]=lm[0];
}
continue;
}
if(sum>=500)
{
s[i]=lm[2];
sum-=500;
i++;
if((i>=4)&&(s[i-1]==s[i-2])&&(s[i-1]==s[i-3])&&(s[i-1]==s[i-4]))
{
i-=4;
s[i++]=lm[2];
s[i++]=lm[1];
}
continue;
}
if(sum>=100)
{
s[i]=lm[3];
sum-=100;
i++;
if((i>=4)&&(s[i-1]==s[i-2])&&(s[i-1]==s[i-3])&&(s[i-1]==s[i-4]))
{
i-=4;
s[i++]=lm[3];
s[i++]=lm[2];
}
continue;
}
if(sum>=50)
{
s[i]=lm[4];
sum-=50;
i++;
if((i>=4)&&(s[i-1]==s[i-2])&&(s[i-1]==s[i-3])&&(s[i-1]==s[i-4]))
{
i-=4;
s[i++]=lm[4];
s[i++]=lm[3];
}
continue;
}
if(sum>=10)
{
s[i]=lm[5];
sum-=10;
i++;
if((i>=4)&&(s[i-1]==s[i-2])&&(s[i-1]==s[i-3])&&(s[i-1]==s[i-4]))
{
i-=4;
s[i++]=lm[5];
s[i++]=lm[4];
}
continue;
}
if(sum>=5)
{
s[i]=lm[6];
sum-=5;
i++;
if((i>=4)&&(s[i-1]==s[i-2])&&(s[i-1]==s[i-3])&&(s[i-1]==s[i-4]))
{
i-=4;
s[i++]=lm[6];
s[i++]=lm[5];
}
continue;
}
if(sum>=1)
{
s[i]=lm[7];
sum-=1;
i++;
if((i>=4)&&(s[i-1]==s[i-2])&&(s[i-1]==s[i-3])&&(s[i-1]==s[i-4]))
{
i-=4;
s[i++]=lm[7];
s[i++]=lm[6];
}
continue;
}
}
s[i]=0;
printf("%s\n",s);
}
int main()
{
char s1[20],s2[20];
int num1,num2,sum;
printf("Please Input First Number:\n");
gets(s1);
printf("Please Input Second Number:\n");
gets(s2);
num1=chklm(s1);
num2=chklm(s2);
printf("First Value=%d\n",num1);
printf("First Value=%d\n",num2);
if((num1!=0)&&(num2!=0))
{
sum=num1+num2;
printf("Sum=%d\n",sum);
lmtosum(sum);
}
else
{
printf("Aha! I don't need to calculate the sum!\n");
}
getchar();
getchar();
}
搞好了,复制粘贴就管编译运行,以下是运行图