提交记录 #218
提交时间:2024-11-14 20:40:11
语言:c
状态:Unaccepted
编译情况:编译成功
code.c: In function ‘upgradeID15to18’:
code.c:29:10: warning: variable ‘b’ set but not used [-Wunused-but-set-variable]
29 | char b;
| ^
code.c:28:11: warning: unused variable ‘flag’ [-Wunused-variable]
28 | int m,flag = 0,i;
| ^~~~
code.c: At top level:
code.c:48:1: warning: return type defaults to ‘int’ [-Wimplicit-int]
48 | main(){
| ^~~~
固定测试点#1:
额外测试点#4:
38【日期】身份证的奥秘
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
char a[100][20];
int s[100][17];
int sum[100];
int w[] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
char check[] = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
bool isValidID18(const char *a) {
int sum = 0,i;
for (i = 0; i < 17; i++) {
sum += (a[i] - '0') * w[i];
}
int mod = sum % 11;
return check[mod] == a[17];
}
int addmod(const char *a) {
int sum = 0,i;
for (i = 0; i < 17; i++) {
sum += (a[i] - '0') * w[i];
}
int mod = sum % 11;
return mod;
}
void upgradeID15to18(const char* a15, char* a18) {
int m,flag = 0,i;
char b;
strncpy(a18, a15, 6);
a18[6] = '1';
if(a15[12]=='9'&&a15[13]=='9'&&(a15[14]=='6'||a15[14]=='7'||a15[14]=='8'||a15[14]=='9'))
a18[7] = '8';
else
a18[7] = '9';
strncpy(a18 + 8, a15 + 6, 9);
a18[17] = 0;
m=addmod(a18);
for(i=0;i<17;i++){
if(m==w[i]){
b = check[i];
break;
}
}
a18[17] = check[m];
a18[18] = '\0';
}
main(){
int i,n;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%s",a[i]);
a[i][strcspn(a[i], "\n")] = '\0';
}
for(i=0;i<n;i++){
if (strlen(a[i]) == 18){
if (isValidID18(a[i])){
printf("Valid\n");
}
else{
printf("Invalid\n");
}
}
else if(strlen(a[i]) == 15){
char a18[19];
upgradeID15to18(a[i], a18);
printf("%s\n",a18);
}
else if(strlen(a[i])!=15&&strlen(a[i])!=18){
printf("Invalid\n");
}
}
}