C语言:下面描述的题目咋编程?

1)题目描述:小明捡到了一个手机,屏幕点亮后需要输入解锁密码才能开锁。手机的解锁密码由8个数字组成,每个数字可能是0-9中的一个,且8个数字互不相同小明的破解思路非常简单... 1)题目描述:
小明捡到了一个手机,屏幕点亮后需要输入解锁密码才能开锁。手机的解锁密码由8个数字组成,每个数字可能是0-9中的一个,且8个数字互不相同
小明的破解思路非常简单,暴力。他会从最小的数字开始一个一个尝试。 比如第一次尝试01234567,第二次尝试01234568,直到98765432......
几个小时过后,小明终于.........把手机按没电了。
没电前,小明已经按破解思路尝试了多组答案,他只记得最后一组尝试的是什么 问,小明已经尝试了多少组
2)输入输出:
输入格式
一个8位的数,可能有前导0
输出格式
一个整数,表示答案
展开
 我来答
White_MouseYBZ
2020-08-23 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6488万
展开全部

代码文本:

#include "stdio.h"

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

char i;

for(i=0;i<n;i++)

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

return 0;

return 1;

}

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

char i,n;

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

if(n==8){

for(i=1;i<n;i++)//检查

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]<d;s[0]++)

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

if(repeat(s,1))

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

if(repeat(s,2))

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

if(repeat(s,3))

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

if(repeat(s,4))

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

if(repeat(s,5))

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

if(repeat(s,6))

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

if(repeat(s,7)){

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

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

break;

if(i==8){

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

return 0;

}

}

}

else

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

return 0;

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式