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.744 ]
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);
}
Acendedor de leds pela porta paralela
Função para escrita de um número em notação binária através de recursão
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
How can I remove duplicate MSG files from my folders effectively? (0)
O programa assinador digital (0)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)









