创建SIN编号验证器

时间:2015-09-27 00:45:04

标签: c

我正在创建一个C程序,用于测试用户是否输入了有效的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编程语言完成这部分工作?

1 个答案:

答案 0 :(得分:0)

像这样

#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;
}