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.411 ]
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); }
Atenção a quem posta conteúdo de dicas, scripts e tal (2)
Criando um gateway de internet com o Debian
Configuração básica do Conky para mostrar informações sobre a sua máquina no Desktop
Aprenda a criar músicas com Inteligência Artificial usando Suno AI
Entendendo o que é URI, URL, URN e conhecendo as diferenças entre POST e GET
Ativando o Modo Noturno via Linha de Comando no GNOME/Wayland
Preparando pendrive com GNU/Linux [Corretamente!]
Instalando Google Chrome no Fedora 40
Habilitando a importação de senhas no Firefox
Como corrigir o erro do VirtualBox travar a máquina virtual em tela cheia
Problema ao configurar Zabbix no ubuntu (11)
Notebuxo positivo vaio VJFE43F11X Something has gone seriously wrong... (3)
Como faço pra um script ser executado apenas abrindo um terminal e dan... (8)
O Programa Configurações Sumiu no Ubuntu 22.04 [RESOLVIDO] (5)