c语言根据条件解锁3位密码锁?

Python022

c语言根据条件解锁3位密码锁?,第1张

根据你的代码修改,正确的逻辑如下:

#include<stdio.h>

int check1(int i,int j,int k)

{

if(i==2&&j!=4&&k!=6) return 1

if(i!=2&&j==4&&k!=6) return 1

if(i!=2&&j!=4&&k==6) return 1

return 0

}

int check2(int i,int j,int k)

{

if((i==5||i==8)&&j!=2&&j!=5&&j!=8&&k!=2&&k!=5&&k!=8) return 1

if((j==2||j==8)&&i!=2&&i!=5&&i!=8&&k!=2&&k!=5&&k!=8) return 1

if((k==2||k==5)&&i!=2&&i!=5&&i!=8&&j!=2&&j!=5&&j!=8) return 1

return 0

}

int check3(int i,int j,int k)

{

if(i==9&&(j==6||j==2)&&k!=6&&k!=9&&k!=2) return 1

if(i==2&&j==6&&k!=6&&k!=9&&k!=2) return 1

if(k==6&&(i==9||i==2)&&j!=6&&j!=9&&j!=2) return 1

if(k==9&&i==2&&j!=6&&j!=9&&j!=2) return 1

return 0

}

int check4(int i,int j,int k)

{

if(i!=1&&i!=7&&i!=4&&j!=1&&j!=7&&j!=4&&k!=1&&k!=7&&k!=4)

{

return 1

}

return 0

}

int check5(int i,int j,int k)

{

if((i==1||i==9)&&j!=4&&j!=1&&j!=9&&k!=4&&k!=1&&k!=9) return 1

if((j==4||j==9)&&i!=4&&i!=1&&i!=9&&k!=4&&k!=1&&k!=9) return 1

if((k==4||k==1)&&i!=4&&i!=1&&i!=9&&j!=4&&j!=1&&j!=9) return 1

return 0

}

int main()

{

int i,j,k

for(i=0i<10i++)

for(j=0j<10j++)

for(k=0k<10k++)

{

if(check1(i,j,k))

{

if(check2(i,j,k))

{

if(check3(i,j,k))

{

if(check4(i,j,k))

{

if(check5(i,j,k))

{

printf("%d%d%d\n",i,j,k)

}

}

}

}

}

}

}

代码文本:

#include "stdio.h"

char repeat(char *p,char n){//重复检查

char i

for(i=0i<ni++)

if(p[n]==p[i])

return 0

return 1

}

char check(char *p){//检查输入是否正确

char i,n

for(n=0p[n]n++)

if(n==8){

for(i=1i<ni++)//检查

if(!repeat(p,i))

return 0

return 1

}

return 0

}

int main(int argc,char *argv[]){

char s[9]="",t[9]="",i,d=58

int n

printf("Please enter the last set of number(L:8,0~9, no repeat)...\n")

if(scanf("%[0-9]s",t)==1 &&check(t)){

for(n=0,s[0]='0's[0]<ds[0]++)

for(s[1]='0's[1]<ds[1]++)

if(repeat(s,1))

for(s[2]='0's[2]<ds[2]++)

if(repeat(s,2))

for(s[3]='0's[3]<ds[3]++)

if(repeat(s,3))

for(s[4]='0's[4]<ds[4]++)

if(repeat(s,4))

for(s[5]='0's[5]<ds[5]++)

if(repeat(s,5))

for(s[6]='0's[6]<ds[6]++)

if(repeat(s,6))

for(s[7]='0's[7]<ds[7]++)

if(repeat(s,7)){

for(n++,i=0i<8i++)

if(s[i]-t[i])

break

if(i==8){

printf("\n%d\n",n)

return 0

}

}

}

else

puts("Input error, exit...")

return 0

}