不要小看任何一道编程题目!一定一定一定要想好之后再动手!!!
带上你的草稿本!!!!!!!!!!!!!!!!!!!!
多举例子特别是反例,去检验自己的程序!!!!!!!!!!!!!!!!!!!!!!
随便写——if else关系搞不清楚:
变化后也要考虑反例!反例!反例!
X会出现在输入里面,也会要输出X
((sum - (--k)*aa[12])%11)有X的时候也根本不需要,因为for(i=0;i<13;i++){
scanf("%c",&a[i]);
aa[i]=(a[i]-'0');这里aa[12]=a[12]-'0';即使aa[12]='X'-'0'==40;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#include<stdio.h>
int main(){
int aa[]={0,0,0,0,0,0,0,0,0,0,0,0,0},i,k=1,sum=0;
char a[13];
printf("aa[12]=%d\n",aa[12]);
for(i=0;i<13;i++){
scanf("%c",&a[i]);
aa[i]=(a[i]-'0');
printf("out:aa[12]=%d\n",aa[12]); //X:aa[12]=a[12]-'0'==40;!!!!!!!!!!!!!!!!!!!!!
if(aa[i]>=0&&aa[i]<=9){
printf("aa[12]=%d\n",aa[12]);
sum += (k*aa[i]);
//k ++;
//printf("%d",aa[i]);
//printf("%d",sum);
printf("aa[%d]=%d\n",i,aa[i]);
printf("sum=sum+aa[%d]*%d(k)==%d\n",i,k,sum);
printf("k=%d\n",k);
printf("aa[12]=%d\n",aa[12]);
k ++;
printf("aa[12]=%d\n",aa[12]);
}
}
printf("aa[12]=%d\n",aa[12]);
//printf("%d\n",sum);
//printf("%d\n",aa[12]);
//printf("%d\n",aa[12]*(k-1));
//printf("%d\n",((sum-((--k)*aa[12]))));
//printf("%d\n",((sum-((--k)*aa[12]))%11));
//printf("%d\n",ans);
//int ans = ((sum - (--k)*aa[12])%11);
//int ans = ((sum-10*aa[12])%11);
//printf("%d\n",ans);
//if(ans==aa[12])
printf("aa[12]=%d\n",aa[12]);
if(a[12]!='X')
sum-=((--k)*aa[12]);
if((sum%11)==aa[12]||((sum%11==10)&&(a[12]=='X'))) //修正是完全没有必要的 X不会进去sum
printf("Right");
else {
if((sum%11)==10) // too many (--k) s
a[12]='X';
else
a[12]=((char)('0'+ sum%11));
for(int i=0;i<13;i++)
printf("%c",a[i]);
}
return 0;
}