创建一个SIN号验证器

问题描述:

我正在创建一个C程序,用于测试用户是否输入了有效的SIN号。这是我迄今为止所做的:创建一个SIN号验证器

#include <stdio.h> 
int main(void) { 
    int num1; 
    printf("Enter your SIN number: \n"); 
    scanf("%d", &num1); 
} 

SIN号码是一个9位长的数字。要看它是否有效,我想乘以这样的SIN数:

add SIN number with 121 212 121. 
123 456 789 
121 212 121 

我该如何在C编程语言中完成这部分?

+2

这甚至不会编译。提供[mcve]并解释你想完成的事情。不要忘记解释一下“SIN”是什么,世界上有更多的国家比你的国家。 – Olaf

+0

预期的结果是? – BLUEPIXY

+0

https://en.wikipedia.org/wiki/Social_Insurance_Number#Validation乘以每个数字? – BLUEPIXY

这样

#include <stdio.h> 
#include <stdlib.h> 

int main(void) { 
    int num1[9]; 
    int vnum[9] = {1,2,1,2,1,2,1,2,1}; 
    printf("Enter your SIN number(Hyphen(-) isn't included): \n"); 
    for(int i = 0; i < 9; ++i){ 
     if(1!=scanf("%1d", &num1[i])){//input one digit 
      fprintf(stderr, "invalid input\n"); 
      exit(EXIT_FAILURE); 
     } 
    } 
    int sum = 0; 
    for(int i = 0; i < 9; ++i){ 
     int mod, mul = num1[i] * vnum[i]; 
     sum += mul > 9 ? ((mod = mul % 9) ? mod : 9) : mul; 
    } 
    if(sum % 10 == 0) 
     puts("valid"); 
    else 
     puts("invalid"); 
    return 0; 
}