题目链接:点击打开链接
知识点笔记:
1.对一个字符数字,如何判断不是数字
!str[j]>='0'&&str[j]<='9'
用asc码来判别
AC代码:
#include <cstdio>
int main() {
int n;
int w[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; //权
char M[11]={'1','0','X','9','8','7','6','5','4','3','2'};// 验证码
scanf("%d",&n);
bool flag = true;
char str[20];
for(int i=0;i<n;i++)
{
scanf("%s",str);
int j,last=0; // last记录前17位的加全和
for(j=0;j<17;j++){
if(!str[j]>='0'&&str[j]<='9') break; //非数字
last=last+(str[j]-'0')*w[j];
}
if(j<17){ //有非数字的存在,导致上一个循环没有完整实现,中途break退出
flag=false;
printf("%s\n",str);
}else{
if(M[last%11]!=str[17]){
flag=false;
printf("%s\n",str);
}
}
}
if(flag == true){
printf("All passed\n");
}
return 0;
}