//ps:这道题让我明白了写程序一定要细致,有些时候思路是对的,但是用程序表达出来的时候就会出各种错误,而且有时候在不知道出了点小错的程序还能通过一些测试用例,让你没法检测出到底哪出错了,写程序的时候逻辑和头脑一定要清楚,牛客网居然能看到测试数据,这对于初学者简直就是福音啊!!!我要转战nowcoder!!!!
#include<iostream>
#include<string.h>using namespace std;
int main()
{
int quan[17] = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
char x[11] = { '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' };
int N = 0;
char s[20];
char ss[101][20];
int g = 0;
int z = 0, p = 0;
int k = 0;
int flag ;
cin >> N;
for (int i = 0; i<N; i++)
{
cin >> s;
p = 0;flag=0;
for (int j = 0; j <strlen(s)-1; j++)
{
if(strlen(s)!=18)
{
flag = 1;
strcpy(ss[g++], s);
break;
}
if (s[j]>57||s[j]<48)
{
flag = 1;
strcpy(ss[g++], s);
break;
}
else{
p += (s[j] - 48)*quan[j];
k++;
}
}
z = p % 11;
cout<<"x[z]等于"<<x[z]<<" "<<"z等于"<<z<<"flag和s[17]等于"<<flag<<" "<<s[17]<<endl;
if (x[z] != s[17]&&flag!=1)
strcpy(ss[g++], s);
}
for (int i = 0; i<g; i++)
cout << ss[i] << endl;
if (g == 0)
cout << "All passed";
return 0;
}