#include<stdio.h>
#include<stdlib.h>
#define _CRT_SECURE_NO_WARNINGS
#pragma warning( disable : 4996 )
int check(char, int *);

void main()
{
	char id[11];
	id[10] = '\0';
	int x[2], Y = 0;
	int *p = x;

	printf("請輸入身分證:");
	scanf("%s", id);
	check(id[0], p);
	Y = x[0] + 9 * x[1] + 8*(id[1] - '0') + 7*(id[2] - '0') + 6*(id[3] - '0') + 5*(id[4] - '0') + 4*(id[5] - '0') + 3*(id[6] - '0') + 2*(id[7] - '0') + 1*(id[8] - '0')+(id[9] - '0');
	
	if (Y % 10 == 0)
	{
		printf("此身分證為正確身分證\n");
	}
	else
	{
		printf("此身分證為錯誤身分證\n");
	}

	system("pause");
	return 0;
}

int check(char id_0, int *x)
{
	switch (id_0)
	{
	case 'A': x[0] = 1; x[1] = 0; break;   case 'P': x[0] = 2; x[1] = 3; break;
	case 'B': x[0] = 1; x[1] = 1; break;   case 'Q': x[0] = 2; x[1] = 4; break;
	case 'C': x[0] = 1; x[1] = 2; break;   case 'R': x[0] = 2; x[1] = 5; break;
	case 'D': x[0] = 1; x[1] = 3; break;   case 'S': x[0] = 2; x[1] = 6; break;
	case 'E': x[0] = 1; x[1] = 4; break;   case 'T': x[0] = 2; x[1] = 7; break;
	case 'F': x[0] = 1; x[1] = 5; break;   case 'U': x[0] = 2; x[1] = 8; break;
	case 'G': x[0] = 1; x[1] = 6; break;   case 'V': x[0] = 2; x[1] = 9; break;
	case 'H': x[0] = 1; x[1] = 7; break;   case 'W': x[0] = 3; x[1] = 2; break;
	case 'I': x[0] = 3; x[1] = 4; break;   case 'X': x[0] = 3; x[1] = 0; break;
	case 'J': x[0] = 1; x[1] = 8; break;   case 'Y': x[0] = 3; x[1] = 1; break;
	case 'K': x[0] = 1; x[1] = 9; break;   case 'Z': x[0] = 3; x[1] = 3; break;
	case 'L': x[0] = 2; x[1] = 0; break;
	case 'M': x[0] = 2; x[1] = 1; break;
	case 'N': x[0] = 2; x[1] = 2; break;
	case 'O': x[0] = 3; x[1] = 5; break;
	default:
		printf("第一字必須為大寫英文!");
		break;
	}
}