500109198512168888
身份证错误
Program www_fcode_cn Implicit None Integer i integer:: sfz(18) character( len = 18 ) :: c Read( * , '(a18)' ) c Do i = 1 , 18 if ( c(i:i) == 'X' .or. c(i:i) == 'x' ) then sfz(i) = -1 else sfz(i) = ichar(c(i:i)) - ichar('0') end if End Do if ( SfzCheckNum(sfz) ) then write( * , * ) '身份证正确' else write( * , * ) '身份证错误' end if contains Logical Function SfzCheckNum( s ) integer :: s( 18 ) integer , parameter :: sc(17) = (/7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2/) integer , parameter :: sck(0:10) = (/1,0,-1,9,8,7,6,5,4,3,2/) integer i integer iSum iSum = 0 Do i = 1 , 17 iSum = iSum + s(i)*sc(i) End Do iSum = mod( iSum , 11 ) SfzCheckNum = ( sck(iSum) == s(18) ) End Function SfzCheckNum End Program www_fcode_cn