#8137: C語言--不知道錯在哪...


a01456655 (Jim)

學校 : 正修科技大學
編號 : 34093
來源 : [60.249.203.81]
最後登入時間 :
2013-09-22 11:13:36
a020. 身分證檢驗 | From: [60.249.203.81] | 發表日期 : 2013-08-26 16:16

只跟我說

WA (line:5)
答案不正確
您的答案為: fake 

正確答案為: real

我根本不知道錯在哪。。。

這樣要如何找起啊。。。。。 

 
#8138: Re:C語言--不知道錯在哪...


a01456655 (Jim)

學校 : 正修科技大學
編號 : 34093
來源 : [60.249.203.81]
最後登入時間 :
2013-09-22 11:13:36
a020. 身分證檢驗 | From: [60.249.203.81] | 發表日期 : 2013-08-26 16:17

程式碼如下:

#include<stdio.h>

int main()

{

    char input[11];

    while( scanf("%s",input) != EOF)

    {

        int i=0,j=10,k=0,temp=65,num=0,len=strlen(input);

        switch(input[0])

        {

          case 73:

               j=34;

               break;

          case 79:

               j=35;

               break;

          case 87:

               j=32;

               break;

          case 90:

               j=33;

               break;

          default:

               while(input[0]!=temp)

               {

                  temp++;

                  j++;

               }

        }

      if(input[0]>73 && input[0]<79)

      {

        j=((j-1)%10)*9+j/10;

      }

      else if(input[0]>79 && input[0]<87)

      {

        j=((j-2)%10)*9+j/10;

      }

      else if(input[0]>87 && input[0]<90)

      {

        j=((j-3)%10)*9+j/10;

      }

      else

      {

        j=(j%10)*9+j/10;

      }

      

      i=1;

      while(i<len-1)

      {

        k+=(input[i]-48)*(len-i-1);

        i++;

      }

      switch ((j+k+input[9]-48)%10)

      {

        case 0:

             printf("real\n");

             break;

        default:

             printf("fake\n");

             break;

      }

    }    

    return 0;

}

 

 
#8139: Re:C語言--不知道錯在哪...


austin990301 (王彥仁)

學校 : 國立臺灣師範大學附屬高級中學
編號 : 29030
來源 : [101.15.165.183]
最後登入時間 :
2019-02-13 22:00:28
a020. 身分證檢驗 | From: [101.15.211.162] | 發表日期 : 2013-08-26 23:23

程式碼如下:

#include

int main()

{

    char input[11];

    while( scanf("%s",input) != EOF)

    {

        int i=0,j=10,k=0,temp=65,num=0,len=strlen(input);

        switch(input[0])

        {

          case 73:

               j=34;

               break;

          case 79:

               j=35;

               break;

          case 87:

               j=32;

               break;

          case 90:

               j=33;

               break;

          default:

               while(input[0]!=temp)

               {

                  temp++;

                  j++;

               }

        }

      if(input[0]>73 && input[0]<79)

      {

        j=((j-1)%10)*9+j/10;

      }

      else if(input[0]>79 && input[0]<87)

      {

        j=((j-2)%10)*9+j/10;

      }

      else if(input[0]>87 && input[0]<90)

      {

        j=((j-3)%10)*9+j/10;

      }

      else

      {

        j=(j%10)*9+j/10;

      }

 

      i=1;

      while(i

      {

        k+=(input[i]-48)*(len-i-1);

        i++;

      }

      switch ((j+k+input[9]-48)%10)

      {

        case 0:

             printf("real\n");

             break;

        default:

             printf("fake\n");

             break;

      }

    }    

    return 0;

}

 

這是一個沒有跳出的死迴圈,需加break跳出!

 
ZeroJudge Forum