#include<stdio.h>
int main()
{
int n;
scanf("%d", &n);
char id[18];
int weight[] = { 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' };//字符要用单引号标识
int i,j,flag2=0;
for (i = 0; i < n; i++)
{
int sum=0,flag1=0;//必须放在for(i)循环内,for(j)循环外。
scanf("%s", id);//id为地址
for (j = 0; j < 17; j++)
{
if (id[j] >= '0' && id[j] <= '9')
{
sum += (id[j] - '0') * weight[j];//字符-'0'=数字
}
else
{ flag1 = 1; break; }
}
if(flag1==1||M[sum%11]!=id[17])
{
printf("%s\n", id);
flag2=1;
}
}
if(flag2==0) { printf("All passed\n"); }
}
for循环内部声明的变量只在循环执行期间存在,并且每次循环迭代都会重新创建。
而在循环外部声明的变量在整个代码块或函数的生命周期内存在。