#include <stdio.h>
#include <stdbool.h>
int main(void)
{
int weight[17] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
char M[11] = "10X98765432";
char id[18];//char not int char 字符数字。。。
//N 个数; z模;
int N = 0, z = 0, sum = 0;
bool z_true = false;
int all = 0;//数字个数
int isnum = 0;
scanf("%d",&N);
for(int i = 0; i < N; i++)
{
scanf("%s",id);
//记得每轮初始化
isnum = 0;
z_true = false;
sum = 0;
//验证码
for(int j = 0; j < 17; j++)
sum += (id[j]- 48) * weight[j];
z = sum % 11;
// printf("%d %d\n",z, sum);
if(M[z] == id[17]) z_true = true;
//验证前17
for(int j = 0; j < 17; j++)
{
//isdigit验证十进制数
if(id[j] <= '9' && id[j] >= '0') isnum++;
// printf("%d\n",isnum);
}
//判断
if(isnum != 17 || z_true != true)
printf("%s\n",id);
else
{
all++;
//printf("%d\n",all);
}
}
if(all == N) printf("All passed");
return 0;
}
能不能在计算验证码的同时验证id是否为字符数字?有时间再搞,^_^
PAT 乙级 1031
最新推荐文章于 2022-10-18 14:27:29 发布