小白成长记之PTA乙级题 1031

PTA乙级题 1031. 查验身份证(15)

【题目链接】


感谢The_Chosen_1指出问题

#include <iostream>
#include <ctype.h>
using namespace std;
int w[17] = { 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 };
int p[11] = { '1','0','X','9','8','7','6','5','4','3','2' };
int main()
{
	int n, ans = 0, flag = 0;
	char a[20];
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		scanf("%s", a);
		int q = 0, f = 0;
		for (int i = 0; i < 17; i++)
		{
			if (!isdigit(a[i]))
			{
				flag = 1;
				puts(a);
				ans++;
				f = 1;
				break;
			}
		}
		if (f == 1)
			continue;
		for (int i = 0; i < 17; i++)
			q = (q + (a[i] - '0')*w[i]) % 11;
		if (a[17] != p[q])
		{
			flag = 1;
			puts(a);
			ans++;
		}
	}
	if (flag == 0)
	{
		puts("All passed");
		return 0;
	}
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务