不要小看任何一道编程题目!一定一定一定要想好之后再动手!!!
带上你的草稿本!!!!!!!!!!!!!!!!!!!!
多举例子特别是反例,去检验自己的程序!!!!!!!!!!!!!!!!!!!!!!
随便写——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) sa[12]='X';elsea[12]=((char)('0'+ sum%11));for(int i=0;i<13;i++)printf("%c",a[i]);} return 0;
}