校验身份证的问题
身份证号码前17为分别按顺序乘如下数字(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2)。把成绩结果求和,然后再除以11取余。根据余数从下面这些数中找到对应的数字(1,0,X,9,8,7,6,5,4,3,2)我做到一半,想运行一下,结果运行不出,强制停止运作,是不是我做的太复杂了,电脑不接受;
#include<stdio.h>
int main()
{int n,i,y,a[17],j;
scanf("%d",n);
y=n%10;
n/=10;
for(i=16;i>=0;i--)
{a[i]=n%10;
n/=10;
}
j=(a[0]*7+a[1]*9+a[2]*10+a[3]*5+a[4]*8+a[5]*4+a[6]*2+a[7]*1+a[8]*6+a[9]*3+a[10]*7+a[11]*9+a[12]*10+a[13]*5+a[14]*8+a[15]*4+a[16]*2)%11;
printf("%d\n",j);
return 0;
}