运行达不到预期目标啊
验证18位证件号:输入18位证件号,将奇位数的值相加的和求的平均数X,偶位数先与3相乘得到的个位数的和的平均数y。如果(X+Y)是10的倍数,则证件号正确,否则则错误。请编写程序验证证件号是否正确。(12分)
列入输入:431023198919230939
输出:正确
分析:
奇位数:3 0 3 9 9 9 3 9 9
偶位数:3 0 2 1 8 1 2 1 4
X:(3+0+3+9+9+9+3+9+9)/9 = 6
Y: 3X3 = 9
0X3 = 0
2X3 = 6
1X3 = 3
8X3 = 24
1X3 = 3
2X3 = 6
1X3 = 3
4X3 = 12
(9+0+6+3+4+3+6+3+2)/9 = 4
X+Y = 6+4 = 10
#include <stdio.h>
int main()
{
char a[30]={"431023198919230939"};
int i,j,k,sum=0,sum1=0,n1=0,n=0;
float avg,avg1;
for(i=0;a[i]!='\0';i++)
{
if(i%2==0)
{
k=a[i]*3;
if(k>=10)
{
k=k%10;
}
sum=sum+k;
n++;
}
else
{
sum1=sum1+a[i];
n1++;
}
}
avg1=sum1/n1;
avg=sum/n;
avg=avg+avg1;
if((int)(avg)%10==0)
printf("证件号正确");
else
printf("证件号错误");
}
不知道是我的代码错了还是 别的原因
高手来啊
[ 本帖最后由 a646404908 于 2012-3-8 17:41 编辑 ]