一次A!
这种题目要得就是思路清晰,细心,考虑周全。。。
然后。。然后就没了。。。
注意字符串和int型数据的转来转去。。。
AC的代码:
#include <stdio.h>
char ISBN[12];
void find(int sum,int pos)
{
//找出那个数字是什么
int i;
if(pos!=9 && pos!=-1)
{
//如果不是最后一位看不清
for(i=0;i<=9;i++)
{
if( (sum+i*(10-pos))%11==0 )
{
printf("%d\n",i);
return;
}
}
}
else if(pos==9 && pos!=-1)
{
for(i=0;i<=10;i++)
{
if((sum+i*(10-pos))%11==0 && i==10)
{
printf("X\n");
return;
}
if( (sum+i*(10-pos))%11==0)
{
printf("%d\n",i);
return;
}
}
}
printf("-1\n");
}
void work()
{
int pos=-1;//存放问号位置
int i;
int sum=0;//算除了问号位的总和
int num;//每一位数的整型形式
for(i=0;i<10;i++)
{
if(ISBN[i]=='?')
{
pos=i;
continue;
}
if(ISBN[i]=='X')
num=10;
else
num=ISBN[i]-48;
sum+=(10-i)*num;
}
//printf("%d\n",sum);
find(sum,pos);
}
int main()
{
//输入
scanf("%s",ISBN);
work();
return 0;
}