问题我已解决
代码:
# include<stdio.h>
# include<string.h>
# define N 10
int change(char ch)
{
if(ch=='I') return 1;
if(ch=='V') return 5;
if(ch=='X') return 10;
if(ch=='L') return 50;
if(ch=='C') return 100;
if(ch=='D') return 500;
if(ch=='M') return 1000;
}
char rechange(int* s)
{
if(*s>=1000)
{
*s=*s-1000;
return 'M';}
else if(*s>=500)
{
*s=*s-500;
return 'D';}
else if(*s>=100)
{
*s=*s-100;
return 'C';}
else if(*s>=50)
{
*s=*s-50;
return 'L';}
else if(*s>=10)
{
*s=*s-10;
return 'X';}
else if(*s>=5)
{
*s=*s-5;
return 'V';
}
else
{*s=*s-1;
return 'I';}
}
void main()
{
char a[N],b[N],c[N]={0};
int s1=0,s2=0,s,i,r=0,z=1,t;
printf("Please enter two rome number:\n");
scanf("%s",a);
scanf("%s",b);
for(i=0;a[i]!='\0';i++)
{
if(change(a[i])>=change(a[i+1])||a[i+1]=='\0')
s1=s1+change(a[i]);
else
s1=s1-change(a[i]);
}
printf("%d\n",s1);
for(i=0;b[i]!='\0';i++)
{
if(change(b[i])>=change(b[i+1])||b[i+1]=='\0')
s2=s2+change(b[i]);
else
s2=s2-change(b[i]);
}
printf("%d\n",s2);
if(s2>s1)
{
t=s2;
s2=s1;
s1=t;
}
while(z!=0)
{
z=s1%s2;
s1=s2;
s2=z;
}
s=s1;
printf("%d\n",s);
while(s>=1)
{
c[r]=rechange(&s);
r++;
}
puts(c);
getch();
}