#10401: 為什麼會這樣


ooxx6513 (fish)

學校 : 輔仁大學
編號 : 30025
來源 : [111.241.148.161]
最後登入時間 :
2019-09-27 15:23:53
d086. 態度之重要的證明 -- 成功電研20th~21st C++ ~最後的競賽~ | From: [163.20.242.50] | 發表日期 : 2015-10-30 16:35

原本的程式碼送出後是輸出短少(少一行)

測資1、2、3皆AC,測資4輸出短少

 

#include<stdio.h>

#include<stdlib.h>

int main(){

    char t[200]={};

    int i;

    while(t[0]!='0'){

        int score,fail;

        for(i=0;i<200;i++){

            scanf("%c",&t[i]);

            if(t[i]=='\n')

                break;

        }

        if(t[0]=='0')

            break;

        score=0;

        fail=0;

        for(i=0;i<200;i++){

            if(t[i]=='\n')

                break;

            if(t[i]>=65 && t[i]<=90)

                score = score + t[i] - 64;

            else if(t[i]>=97 && t[i]<=122)

                score = score + t[i] - 96;

            else

                fail++;

        }

        if(fail==0)

            printf("%d\n",score);

        else

            printf("Fail\n");

    }

    return 0;

}

 

爬文後發現我問題在"0123"這種測資會失敗

於是改了一行

 

#include<stdio.h>

#include<stdlib.h>

int main(){

    char t[200]={};

    int i;

    for(;;){

        int score,fail;

        for(i=0;i<200;i++){

            scanf("%c",&t[i]);

            if(t[i]=='\n')

                break;

        }

        if(t[0]=='0' && t[1]=='\n')                  <--改了這裡

            break;

        score=0;

        fail=0;

        for(i=0;i<200;i++){

            if(t[i]=='\n')

                break;

            if(t[i]>=65 && t[i]<=90)

                score = score + t[i] - 64;

            else if(t[i]>=97 && t[i]<=122)

                score = score + t[i] - 96;

            else

                fail++;

        }

        if(fail==0)

            printf("%d\n",score);

        else

            printf("Fail\n");

    }

    return 0;

}

 

結果測資1、2、4皆AC,測資3顯示逾時,請問為什麼會這樣

 
ZeroJudge Forum