创建一个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编程语言中完成这部分?
答
这样
#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;
}
这甚至不会编译。提供[mcve]并解释你想完成的事情。不要忘记解释一下“SIN”是什么,世界上有更多的国家比你的国家。 – Olaf
预期的结果是? – BLUEPIXY
https://en.wikipedia.org/wiki/Social_Insurance_Number#Validation乘以每个数字? – BLUEPIXY