2015-09-27 60 views
-5

我正在創建一個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

回答

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