提交记录 #144
提交时间:2024-11-09 21:13:20
语言:c
状态:Unaccepted
编译情况:编译成功
code.c: In function ‘calculate’:
code.c:4:9: warning: unused variable ‘i’ [-Wunused-variable]
4 | int i=0,s=0;
| ^
code.c: In function ‘reverse’:
code.c:39:17: warning: unused variable ‘i’ [-Wunused-variable]
39 | int i=0;
| ^
code.c:49:14: warning: unused variable ‘check’ [-Wunused-variable]
49 | char check[1]={'0'};
| ^~~~~
code.c:66:1: warning: control reaches end of non-void function [-Wreturn-type]
66 | }
| ^
固定测试点#1:
额外测试点#1:
38【日期】身份证的奥秘
#include<stdio.h>
#include<string.h>
char calculate (char num[100]){
int i=0,s=0;
s=(num[0]-48)*7+(num[1]-48)*9+(num[2]-48)*10+(num[3]-48)*5+ (num[4]-48)*8+ (num[5]-48)*4 +(num[6]-48)*2 +(num[7]-48)*1 +(num[8]-48)*6 +(num[9]-48)*3 +(num[10]-48)*7 +(num[11]-48)*9 +(num[12]-48)*10 + (num[13]-48)*5 +(num[14]-48)*8 +(num[15]-48)*4 + (num[16]-48)*2;
int y=s%11;
char checker[11]={'1','0','X','9','8','7','6','5','4','3','2'};
// if (num[7]=='8'){
// y--;
// }
return checker[y];
//return end;
}
int reverse(char identity[100]){
int i=0;
if (strlen(identity)!=15&&strlen(identity)!=18){
printf("Invalid\n");
return 0;
}
char check_identity[100]={'\0'};
strncpy(check_identity,identity,5);
if (strcmp(check_identity,"11010")!=0&&strcmp(check_identity,"44052")!=0){
printf("Invalid\n");
return 0;
}
if (strlen(identity)==15){
char hundred[100]={'\0'};
char hundred2[100]={'\0'};
strncat(hundred,identity,12);
for (i=12;i<15;i++){
hundred2[i-12]=identity[i];
}
//strncat(hundred2,identity,3);
for (i=11;i>5;i--){
hundred[i+2]=hundred[i];
}
if (strcmp(hundred2,"996")==0||strcmp(hundred2,"997")==0||strcmp(hundred2,"998")==0||strcmp(hundred2,"999")==0){
int i=0;
hundred[6]='1';
hundred[7]='8';
}
else {
hundred[6]='1';
hundred[7]='9';
}
strncat(hundred,hundred2,3);
char check[1]={'0'};
//calculate(hundred);
hundred[17]=calculate(hundred);
printf("%s\n",hundred);
}
else if (strlen(identity)==18){
if (identity[17]!=calculate(identity)){
printf("Invalid\n");
return 0;
}
else {
printf("Valid\n");
return 0;
}
}
}
int main(){
char identity[][100]={'\0'};
int n=0;
scanf("%d",&n);
int i=0;
for (i=0;i<n;i++){
scanf("%s",identity[i]);
reverse(identity[i]);
}
return 0;
}