Cria os dígitos verificadores para CPF
Publicado por Luis Eduardo Boiko Ferreira 22/03/2009 (última atualização em 16/02/2010)
[ Hits: 8.727 ]
Homepage: https://www.facebook.com/luiseduardo.boiko
Os CPFs possuem nove dígitos e dois dígitos verificadores. Os dígitos verificadores são calculados com base nos números do CPF, e servem, basicamente, para evitar falhas e erros de digitação, pois se o CPF digitado não bater com os dígitos verificadores, uma buzina irá tocar te dizendo que o CPF não é valido.
Tive que desenvolver este script rápido, portanto, certamente poderá ser reescrito de uma forma muito mais compacta do que a atual. Se alguém o modificar, poste as mudanças aqui.
#include <stdio.h> #include <stdlib.h> main() { int cpf, num1, num2, num3, num4, num5, num6, num7, num8, num9, ver1, ver2; int mun1,mun2,mun3,mun4,mun5,mun6,mun7,mun8,mun9,mun10,total,total2; printf("Digite os nove primeiros digitos do CPF:\n"); scanf("%d",&cpf); if((cpf/100000000)==0) { num1=0; num2=(cpf/10000000)-(num1*10); num3=((cpf/1000000)-(((num1*10)+num2)*10)); num4=((cpf/100000)-((((((num1*10)+num2)*10))+num3)*10)); num5=((cpf/10000)-((((((((((num1*10)+num2)*10))+num3)*10))+num4)*10))); num6=((cpf/1000)-((((((((((((num1*10)+num2)*10))+num3)*10))+num4)*10)))+num5)*10); num7=((cpf/100)-((((((((((((((num1*10)+num2)*10))+num3)*10))+num4)*10)))+num5)*10)+num6)*10); num8=((cpf/10)-((((((((((((((((num1*10)+num2)*10))+num3)*10))+num4)*10)))+num5)*10)+num6)*10)+num7)*10); num9=(cpf-((((((((((((((((((num1*10)+num2)*10))+num3)*10))+num4)*10)))+num5)*10)+num6)*10)+num7)*10)+num8)*10); } else num1=cpf/100000000; num2=(cpf/10000000)-(num1*10); num3=((cpf/1000000)-(((num1*10)+num2)*10)); num4=((cpf/100000)-((((((num1*10)+num2)*10))+num3)*10)); num5=((cpf/10000)-((((((((((num1*10)+num2)*10))+num3)*10))+num4)*10))); num6=((cpf/1000)-((((((((((((num1*10)+num2)*10))+num3)*10))+num4)*10)))+num5)*10); num7=((cpf/100)-((((((((((((((num1*10)+num2)*10))+num3)*10))+num4)*10)))+num5)*10)+num6)*10); num8=((cpf/10)-((((((((((((((((num1*10)+num2)*10))+num3)*10))+num4)*10)))+num5)*10)+num6)*10)+num7)*10); num9=(cpf-((((((((((((((((((num1*10)+num2)*10))+num3)*10))+num4)*10)))+num5)*10)+num6)*10)+num7)*10)+num8)*10); mun1=(num1*10); mun2=(num2*9); mun3=(num3*8); mun4=(num4*7); mun5=(num5*6); mun6=(num6*5); mun7=(num7*4); mun8=(num8*3); mun9=(num9*2); total=mun1+mun2+mun3+mun4+mun5+mun6+mun7+mun8+mun9; printf("Total da soma antes do calculo de mod eh %d \n\n", total); ver1=(total%11); printf("Apos o calculo de Mod o DV 1 vale:%d \n\n", ver1); if((ver1==0)||(ver1==1)) ver1=0; else ver1=(11-ver1); mun1=(num1*11); mun2=(num2*10); mun3=(num3*9); mun4=(num4*8); mun5=(num5*7); mun6=(num6*6); mun7=(num7*5); mun8=(num8*4); mun9=(num9*3); mun10=(ver1*2); total2=mun1+mun2+mun3+mun4+mun5+mun6+mun7+mun8+mun9+mun10; printf("Total da soma antes do calculo de mod eh %d \n\n", total2); ver2=(total2%11); printf("Apos o calculo de Mod o DV 2 vale:%d \n\n", ver2); if((ver2==0)||(ver2==1)) ver2=0; else ver2=(11-ver2); printf("O primeiro digito verificador do cpf em questão eh:%d \n O segundo eh: %d \n", ver1, ver2); }
Script para calcular raizes de uma equacao do 2 grau
Atualizações de Apps, Desktop e Kernel agitam o ecossistema Linux nesta terça-feira
Miyoo Mini Plus + Onion OS (Linux)
IA local no bolso, novo visual no Raspberry Pi OS e mais destaques do software livre
Kernel turbinado, compatibilidade em alta e debate sobre sustentabilidade: o dia no mundo Linux
Kernel turbinado e GNOME 49 dominam o giro do dia no mundo Linux
Adicionando o repositório backports no Debian 13 Trixie
Como definir um IP estático no Linux Debian
Como colocar atalho para uma pasta na área de trabalho do Ubuntu 24.04... (1)
Como listar os arquivos em "bloquin... (0)
Como vencer a procrastinação? (8)
Adicional de convivdado em linux somente linha de comando (3)