#11510: 請問一下...有關C語言


410523007 (Shippo)

學校 : 國立東華大學
編號 : 61363
來源 : [134.208.10.231]
最後登入時間 :
2016-12-28 10:05:11
a020. 身分證檢驗 | From: [134.208.62.179] | 發表日期 : 2016-11-13 17:22

不使用EOF測試時是對的但是加入EOF後就會重複讀取上一個值,請問我該如何改正呢?

#include <stdio.h>
#include <stdlib.h>

int main ()
{
    int b,c,i,t,s=0,h,n,l,g=0,k;
    
    char f;
    
    int num[9];
    
while(scanf("%c",&f)!=EOF){
                
        scanf("%1d%1d%1d%1d%1d%1d%1d%1d%1d",&num[0],&num[1],&num[2],&num[3],&num[4],&num[5],&num[6],&num[7],&num[8]);
        
        for (i=0;i<1;i++)
        switch (f)
        {
            case 'A':
                c=10;
                break;
            case 'B':
                c=11;
                break;
            case 'C':
                c=12;
                break;
            case 'D':
                c=13;
                break;
            case 'E':
                c=14;
                break;
            case 'F':
                c=15;
                break;
            case 'G':
                c=16;
                break;
            case 'H':
                c=17;
                break;            
            case 'I':
                c=34;
                break;        
            case 'j':
                c=18;
                break;            
            case 'K':
                c=19;
                break;
            case 'L':
                c=20;
                break;            
            case 'M':
                c=21;
                break;            
            case 'N':
                c=22;
                break;            
            case 'O':
                c=35;
                break;            
            case 'p':
                c=23;
                break;
            case 'Q':
                c=24;
                break;
            case 'R':
                c=25;
                break;                
            case 'S':
                c=26;
                break;    
            case 'T':
                c=27;
                break;
            case 'U':
                c=28;
                break;        
            case 'V':
                c=29;
                break;                
            case 'W':
                c=32;
                break;                
            case 'X':
                c=30;
                break;                
            case 'Y':
                c=31;
                break;                
            case 'Z':
                c=33;
                break;    
        }
        
    {
        h=(c%10)*9;
        
        n=c/10;
        
        t=h+n;

        s=num[0]*8+num[1]*7+num[2]*6+num[3]*5+num[4]*4+num[5]*3+num[6]*2+num[7]*1;
        
        l=s+t+num[8];
        
        k=l%10;
    }
        
    if (k == 0)
        printf("real\n");

    else
        printf ("fake\n");
        
}
    return 0;
}

 
#11511: Re:請問一下...有關C語言


jack60126 (hadman)

學校 : 不指定學校
編號 : 61894
來源 : [110.27.69.64]
最後登入時間 :
2016-11-29 21:55:51
a020. 身分證檢驗 | From: [219.70.121.59] | 發表日期 : 2016-11-13 20:41

不使用EOF測試時是對的但是加入EOF後就會重複讀取上一個值,請問我該如何改正呢?

#include
#include

int main ()
{
    int b,c,i,t,s=0,h,n,l,g=0,k;
    
    char f;
    
    int num[9];
    
while(scanf("%c",&f)!=EOF){
                
        scanf("%1d%1d%1d%1d%1d%1d%1d%1d%1d",&num[0],&num[1],&num[2],&num[3],&num[4],&num[5],&num[6],&num[7],&num[8]);
        
        for (i=0;i<1;i++)
        switch (f)
        {
            case 'A':
                c=10;
                break;
            case 'B':
                c=11;
                break;
            case 'C':
                c=12;
                break;
            case 'D':
                c=13;
                break;
            case 'E':
                c=14;
                break;
            case 'F':
                c=15;
                break;
            case 'G':
                c=16;
                break;
            case 'H':
                c=17;
                break;            
            case 'I':
                c=34;
                break;        
            case 'j':
                c=18;
                break;            
            case 'K':
                c=19;
                break;
            case 'L':
                c=20;
                break;            
            case 'M':
                c=21;
                break;            
            case 'N':
                c=22;
                break;            
            case 'O':
                c=35;
                break;            
            case 'p':
                c=23;
                break;
            case 'Q':
                c=24;
                break;
            case 'R':
                c=25;
                break;                
            case 'S':
                c=26;
                break;    
            case 'T':
                c=27;
                break;
            case 'U':
                c=28;
                break;        
            case 'V':
                c=29;
                break;                
            case 'W':
                c=32;
                break;                
            case 'X':
                c=30;
                break;                
            case 'Y':
                c=31;
                break;                
            case 'Z':
                c=33;
                break;    
        }
        
    {
        h=(c%10)*9;
        
        n=c/10;
        
        t=h+n;

        s=num[0]*8+num[1]*7+num[2]*6+num[3]*5+num[4]*4+num[5]*3+num[6]*2+num[7]*1;
        
        l=s+t+num[8];
        
        k=l%10;
    }
        
    if (k == 0)
        printf("real\n");

    else
        printf ("fake\n");
        
}
    return 0;
}



while(scanf("(空白)%c",&f)!=EOF) 這一行稍微這樣修改就行了 

 
#11519: Re:請問一下...有關C語言


410523007 (Shippo)

學校 : 國立東華大學
編號 : 61363
來源 : [134.208.10.231]
最後登入時間 :
2016-12-28 10:05:11
a020. 身分證檢驗 | From: [134.208.62.179] | 發表日期 : 2016-11-14 12:18

不使用EOF測試時是對的但是加入EOF後就會重複讀取上一個值,請問我該如何改正呢?

#include
#include

int main ()
{
    int b,c,i,t,s=0,h,n,l,g=0,k;
    
    char f;
    
    int num[9];
    
while(scanf("%c",&f)!=EOF){
                
        scanf("%1d%1d%1d%1d%1d%1d%1d%1d%1d",&num[0],&num[1],&num[2],&num[3],&num[4],&num[5],&num[6],&num[7],&num[8]);
        
        for (i=0;i<1;i++)
        switch (f)
        {
            case 'A':
                c=10;
                break;
            case 'B':
                c=11;
                break;
            case 'C':
                c=12;
                break;
            case 'D':
                c=13;
                break;
            case 'E':
                c=14;
                break;
            case 'F':
                c=15;
                break;
            case 'G':
                c=16;
                break;
            case 'H':
                c=17;
                break;            
            case 'I':
                c=34;
                break;        
            case 'j':
                c=18;
                break;            
            case 'K':
                c=19;
                break;
            case 'L':
                c=20;
                break;            
            case 'M':
                c=21;
                break;            
            case 'N':
                c=22;
                break;            
            case 'O':
                c=35;
                break;            
            case 'p':
                c=23;
                break;
            case 'Q':
                c=24;
                break;
            case 'R':
                c=25;
                break;                
            case 'S':
                c=26;
                break;    
            case 'T':
                c=27;
                break;
            case 'U':
                c=28;
                break;        
            case 'V':
                c=29;
                break;                
            case 'W':
                c=32;
                break;                
            case 'X':
                c=30;
                break;                
            case 'Y':
                c=31;
                break;                
            case 'Z':
                c=33;
                break;    
        }
        
    {
        h=(c%10)*9;
        
        n=c/10;
        
        t=h+n;

        s=num[0]*8+num[1]*7+num[2]*6+num[3]*5+num[4]*4+num[5]*3+num[6]*2+num[7]*1;
        
        l=s+t+num[8];
        
        k=l%10;
    }
        
    if (k == 0)
        printf("real\n");

    else
        printf ("fake\n");
        
}
    return 0;
}



while(scanf("(空白)%c",&f)!=EOF) 這一行稍微這樣修改就行了 


雖然還是WA  不過非常謝謝你。 

 
#11520: Re:請問一下...有關C語言


jack60126 (hadman)

學校 : 不指定學校
編號 : 61894
來源 : [110.27.69.64]
最後登入時間 :
2016-11-29 21:55:51
a020. 身分證檢驗 | From: [219.70.121.59] | 發表日期 : 2016-11-14 14:02

不使用EOF測試時是對的但是加入EOF後就會重複讀取上一個值,請問我該如何改正呢?

#include
#include

int main ()
{
    int b,c,i,t,s=0,h,n,l,g=0,k;
    
    char f;
    
    int num[9];
    
while(scanf("%c",&f)!=EOF){
                
        scanf("%1d%1d%1d%1d%1d%1d%1d%1d%1d",&num[0],&num[1],&num[2],&num[3],&num[4],&num[5],&num[6],&num[7],&num[8]);
        
        for (i=0;i<1;i++)
        switch (f)
        {
            case 'A':
                c=10;
                break;
            case 'B':
                c=11;
                break;
            case 'C':
                c=12;
                break;
            case 'D':
                c=13;
                break;
            case 'E':
                c=14;
                break;
            case 'F':
                c=15;
                break;
            case 'G':
                c=16;
                break;
            case 'H':
                c=17;
                break;            
            case 'I':
                c=34;
                break;        
            case 'j':
                c=18;
                break;            
            case 'K':
                c=19;
                break;
            case 'L':
                c=20;
                break;            
            case 'M':
                c=21;
                break;            
            case 'N':
                c=22;
                break;            
            case 'O':
                c=35;
                break;            
            case 'p':
                c=23;
                break;
            case 'Q':
                c=24;
                break;
            case 'R':
                c=25;
                break;                
            case 'S':
                c=26;
                break;    
            case 'T':
                c=27;
                break;
            case 'U':
                c=28;
                break;        
            case 'V':
                c=29;
                break;                
            case 'W':
                c=32;
                break;                
            case 'X':
                c=30;
                break;                
            case 'Y':
                c=31;
                break;                
            case 'Z':
                c=33;
                break;    
        }
        
    {
        h=(c%10)*9;
        
        n=c/10;
        
        t=h+n;

        s=num[0]*8+num[1]*7+num[2]*6+num[3]*5+num[4]*4+num[5]*3+num[6]*2+num[7]*1;
        
        l=s+t+num[8];
        
        k=l%10;
    }
        
    if (k == 0)
        printf("real\n");

    else
        printf ("fake\n");
        
}
    return 0;
}



while(scanf("(空白)%c",&f)!=EOF) 這一行稍微這樣修改就行了 


雖然還是WA  不過非常謝謝你。 


其實你仔細看看  你的switch裡面 case J 和  case P 這兩個都打成小寫了, 還有while loop裡面的第一個 for loop 其實是多餘的

想法其實可以再改進 讓程式的大小縮到70kb左右

 
#11521: Re:請問一下...有關C語言


jack60126 (hadman)

學校 : 不指定學校
編號 : 61894
來源 : [110.27.69.64]
最後登入時間 :
2016-11-29 21:55:51
a020. 身分證檢驗 | From: [219.70.121.59] | 發表日期 : 2016-11-14 14:01

不使用EOF測試時是對的但是加入EOF後就會重複讀取上一個值,請問我該如何改正呢?

#include
#include

int main ()
{
    int b,c,i,t,s=0,h,n,l,g=0,k;
    
    char f;
    
    int num[9];
    
while(scanf("%c",&f)!=EOF){
                
        scanf("%1d%1d%1d%1d%1d%1d%1d%1d%1d",&num[0],&num[1],&num[2],&num[3],&num[4],&num[5],&num[6],&num[7],&num[8]);
        
        for (i=0;i<1;i++)
        switch (f)
        {
            case 'A':
                c=10;
                break;
            case 'B':
                c=11;
                break;
            case 'C':
                c=12;
                break;
            case 'D':
                c=13;
                break;
            case 'E':
                c=14;
                break;
            case 'F':
                c=15;
                break;
            case 'G':
                c=16;
                break;
            case 'H':
                c=17;
                break;            
            case 'I':
                c=34;
                break;        
            case 'j':
                c=18;
                break;            
            case 'K':
                c=19;
                break;
            case 'L':
                c=20;
                break;            
            case 'M':
                c=21;
                break;            
            case 'N':
                c=22;
                break;            
            case 'O':
                c=35;
                break;            
            case 'p':
                c=23;
                break;
            case 'Q':
                c=24;
                break;
            case 'R':
                c=25;
                break;                
            case 'S':
                c=26;
                break;    
            case 'T':
                c=27;
                break;
            case 'U':
                c=28;
                break;        
            case 'V':
                c=29;
                break;                
            case 'W':
                c=32;
                break;                
            case 'X':
                c=30;
                break;                
            case 'Y':
                c=31;
                break;                
            case 'Z':
                c=33;
                break;    
        }
        
    {
        h=(c%10)*9;
        
        n=c/10;
        
        t=h+n;

        s=num[0]*8+num[1]*7+num[2]*6+num[3]*5+num[4]*4+num[5]*3+num[6]*2+num[7]*1;
        
        l=s+t+num[8];
        
        k=l%10;
    }
        
    if (k == 0)
        printf("real\n");

    else
        printf ("fake\n");
        
}
    return 0;
}



while(scanf("(空白)%c",&f)!=EOF) 這一行稍微這樣修改就行了 


雖然還是WA  不過非常謝謝你。 


其實你仔細看看  你的switch裡面 case J 和  case P 這兩個都打成小寫了, 還有while loop裡面的第一個 for loop 其實是多餘的

想法其實可以再改進 讓程式的大小縮到70kb左右

 
#11522: Re:請問一下...有關C語言


jack60126 (hadman)

學校 : 不指定學校
編號 : 61894
來源 : [110.27.69.64]
最後登入時間 :
2016-11-29 21:55:51
a020. 身分證檢驗 | From: [219.70.121.59] | 發表日期 : 2016-11-14 14:02

不使用EOF測試時是對的但是加入EOF後就會重複讀取上一個值,請問我該如何改正呢?

#include
#include

int main ()
{
    int b,c,i,t,s=0,h,n,l,g=0,k;
    
    char f;
    
    int num[9];
    
while(scanf("%c",&f)!=EOF){
                
        scanf("%1d%1d%1d%1d%1d%1d%1d%1d%1d",&num[0],&num[1],&num[2],&num[3],&num[4],&num[5],&num[6],&num[7],&num[8]);
        
        for (i=0;i<1;i++)
        switch (f)
        {
            case 'A':
                c=10;
                break;
            case 'B':
                c=11;
                break;
            case 'C':
                c=12;
                break;
            case 'D':
                c=13;
                break;
            case 'E':
                c=14;
                break;
            case 'F':
                c=15;
                break;
            case 'G':
                c=16;
                break;
            case 'H':
                c=17;
                break;            
            case 'I':
                c=34;
                break;        
            case 'j':
                c=18;
                break;            
            case 'K':
                c=19;
                break;
            case 'L':
                c=20;
                break;            
            case 'M':
                c=21;
                break;            
            case 'N':
                c=22;
                break;            
            case 'O':
                c=35;
                break;            
            case 'p':
                c=23;
                break;
            case 'Q':
                c=24;
                break;
            case 'R':
                c=25;
                break;                
            case 'S':
                c=26;
                break;    
            case 'T':
                c=27;
                break;
            case 'U':
                c=28;
                break;        
            case 'V':
                c=29;
                break;                
            case 'W':
                c=32;
                break;                
            case 'X':
                c=30;
                break;                
            case 'Y':
                c=31;
                break;                
            case 'Z':
                c=33;
                break;    
        }
        
    {
        h=(c%10)*9;
        
        n=c/10;
        
        t=h+n;

        s=num[0]*8+num[1]*7+num[2]*6+num[3]*5+num[4]*4+num[5]*3+num[6]*2+num[7]*1;
        
        l=s+t+num[8];
        
        k=l%10;
    }
        
    if (k == 0)
        printf("real\n");

    else
        printf ("fake\n");
        
}
    return 0;
}



while(scanf("(空白)%c",&f)!=EOF) 這一行稍微這樣修改就行了 


雖然還是WA  不過非常謝謝你。 


其實你仔細看看  你的switch裡面 case J 和  case P 這兩個都打成小寫了, 還有while loop裡面的第一個 for loop 其實是多餘的

想法其實可以再改進 讓程式的大小縮到70kb左右



 
#11678: Re:請問一下...有關C語言


Maisiang001 (電子商務科 第一屆白老鼠)

學校 : 國立華南高級商業職業學校
編號 : 62764
來源 : [36.239.28.133]
最後登入時間 :
2024-05-04 22:58:43
a020. 身分證檢驗 | From: [114.47.79.178] | 發表日期 : 2017-01-17 21:17

while(scanf("(空白)%c",&f)!=EOF) 這一行稍微這樣修改就行了 


請問一下 為什麼要加個空白呢OAO

我的多個空白也就對了

 
#13718: Re:請問一下...有關C語言


henry50434 (一群拉雞狗)

學校 : 南投縣私立普台高級中學
編號 : 72099
來源 : [58.99.119.12]
最後登入時間 :
2018-04-13 20:47:16
a020. 身分證檢驗 | From: [58.99.119.12] | 發表日期 : 2018-04-13 20:47

不使用EOF測試時是對的但是加入EOF後就會重複讀取上一個值,請問我該如何改正呢?

#include
#include

int main ()
{
    int b,c,i,t,s=0,h,n,l,g=0,k;
    
    char f;
    
    int num[9];
    
while(scanf("%c",&f)!=EOF){
                
        scanf("%1d%1d%1d%1d%1d%1d%1d%1d%1d",&num[0],&num[1],&num[2],&num[3],&num[4],&num[5],&num[6],&num[7],&num[8]);
        
        for (i=0;i<1;i++)
        switch (f)
        {
            case 'A':
                c=10;
                break;
            case 'B':
                c=11;
                break;
            case 'C':
                c=12;
                break;
            case 'D':
                c=13;
                break;
            case 'E':
                c=14;
                break;
            case 'F':
                c=15;
                break;
            case 'G':
                c=16;
                break;
            case 'H':
                c=17;
                break;            
            case 'I':
                c=34;
                break;        
            case 'j':
                c=18;
                break;            
            case 'K':
                c=19;
                break;
            case 'L':
                c=20;
                break;            
            case 'M':
                c=21;
                break;            
            case 'N':
                c=22;
                break;            
            case 'O':
                c=35;
                break;            
            case 'p':
                c=23;
                break;
            case 'Q':
                c=24;
                break;
            case 'R':
                c=25;
                break;                
            case 'S':
                c=26;
                break;    
            case 'T':
                c=27;
                break;
            case 'U':
                c=28;
                break;        
            case 'V':
                c=29;
                break;                
            case 'W':
                c=32;
                break;                
            case 'X':
                c=30;
                break;                
            case 'Y':
                c=31;
                break;                
            case 'Z':
                c=33;
                break;    
        }
        
    {
        h=(c%10)*9;
        
        n=c/10;
        
        t=h+n;

        s=num[0]*8+num[1]*7+num[2]*6+num[3]*5+num[4]*4+num[5]*3+num[6]*2+num[7]*1;
        
        l=s+t+num[8];
        
        k=l%10;
    }
        
    if (k == 0)
        printf("real\n");

    else
        printf ("fake\n");
        
}
    return 0;
}



while(scanf("(空白)%c",&f)!=EOF) 這一行稍微這樣修改就行了 


雖然還是WA  不過非常謝謝你。 




 
ZeroJudge Forum