一次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; }