#38285: 卡在line 8,求助


stevenzhenggamer@gmail.com (光光)

學校 : 國立金門大學
編號 : 252067
來源 : [1.172.157.107]
最後登入時間 :
2024-04-06 01:31:58
a013. 羅馬數字 -- NPSC 模擬試題 | From: [42.77.40.80] | 發表日期 : 2023-11-09 16:07

include <stdio.h>
#include <stdlib.h>
#include <string.h>
int rta(char r[]){
    int num[15],sum=0;
    memset(num,'\0',15);
    for(int i=0;r[i]!='\0';i++){
        switch(r[i]){
        case 73:
            num[i]=1;
            break;
        case 86:
            num[i]=5;
            break;
        case 88:
            num[i]=10;
            break;
        case 76:
            num[i]=50;
            break;
        case 67:
            num[i]=100;
            break;
        case 68:
            num[i]=500;
            break;
        case 77:
            num[i]=1000;
            break;
        }
    }
    for(int i=0;num[i]!='\0';i++){
        if(num[i+1]){
            sum+=num[i]<num[i+1]?num[i]*-1:num[i];
        }else{
            sum+=num[i];
        }
    }
    return sum;
}
void atr(int a){
    int sol[4];
    int j=1000,n=a;
    char s[15];
    memset(s,'\0',15);
    for(int i=0;i<4;i++){
        sol[i]=n/j;
        n%=j;
        j/=10;
    }
    for(int i=0;i<sol[0];i++){
        printf("M");
    }
    switch(sol[1]){
    case 1:
    case 2:
    case 3:
        for(int i=0;i<sol[1];i++){
            printf("C");
        }
        break;
    case 4:
        printf("D");
        break;
    case 5:
    case 6:
    case 7:
    case 8:
        printf("D");
        for(int i=0;i<sol[1]-5;i++){
            printf("C");
        }
        break;
    case 9:
        printf("CM");
    }
    switch(sol[2]){
    case 1:
    case 2:
    case 3:
        for(int i=0;i<sol[2];i++){
            printf("X");
        }
        break;
    case 4:
        printf("XL");
        break;
    case 5:
    case 6:
    case 7:
    case 8:
        printf("L");
        for(int i=0;i<sol[2]-5;i++){
            printf("X");
        }
        break;
    case 9:
        printf("XC");
    }
    switch(sol[3]){
    case 1:
    case 2:
    case 3:
        for(int i=0;i<sol[3];i++){
            printf("I");
        }
        break;
    case 4:
        printf("IV");
        break;
    case 5:
    case 6:
    case 7:
    case 8:
        printf("V");
        for(int i=0;i<sol[3]-5;i++){
            printf("I");
        }
        break;
    case 9:
        printf("IX");
    }
    printf("\n");
}
int main(){
    char a[15],b[15];
    int x,y,ans;
    while(1){
        scanf("%s",a);
        if(*a=='#'){
            break;
        }
        scanf("%s",b);
        x=rta(a);
        y=rta(b);
        ans=abs(x-y);
        if(ans==0){
            printf("ZERO\n");
        }else{
            atr(ans);
        }
    }
    return 0;
}

如題,找了很久但不確定問題在哪,自己跑了幾筆測資也沒什麼問題

 
#38296: Re: 卡在line 8,求助


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
a013. 羅馬數字 -- NPSC 模擬試題 | From: [101.137.28.104] | 發表日期 : 2023-11-10 21:40

1.
    int num[15],sum=0;

    for(int i=0;num[i]!='\0';i++){
2.
    case 4:
        printf("D");


1. num沒有全部都初始化

2. CD

 
#38359: Re: 卡在line 8,求助


stevenzhenggamer@gmail.com (光光)

學校 : 國立金門大學
編號 : 252067
來源 : [1.172.157.107]
最後登入時間 :
2024-04-06 01:31:58
a013. 羅馬數字 -- NPSC 模擬試題 | From: [1.172.147.154] | 發表日期 : 2023-11-14 21:56

1.
    int num[15],sum=0;

    for(int i=0;num[i]!='\0';i++){
2.
    case 4:
        printf("D");


1. num沒有全部都初始化

2. CD

感謝你!!!!!!

 

 
ZeroJudge Forum