编写一个验证密码的程序,用C语言的数组相关知识解答,最好有注释

1. 编写一个验证密码的程序。(假设正确密码为:abcd且密码不区分大小写)
l 若输入正确,显示“欢迎使用!”
l 若输入错误,显示“密码错误,请重新输入!”,让用户再次输入,当密码错误次数达到3次,则显示“对不起,您无权使用!”
用C语言的数组相关知识解答,最好有注释

#include<stdio.h>
#include<string.h>
void main()
{
char str1[20],str2[20]="abcd";//定义两个字符串数组,str2存放已知密码,str1存放输入密码
int i=0,k,flag=0;
printf("请输入密码:");
while(1)//死循环
{

gets(str1);//输入密码
k=strcmp(str1,str2);//比较,输入密码和已知密码相等,k=0
++flag;//计数器加1
if(!k)
{ printf("欢迎使用\n");
break;
}

else if(k&&flag!=3) printf("密码输入错误,请再次输入:\n");

if(flag==3)//当输入超过三次,跳出循环,结束程序
{
printf("对不起,您无权使用");
break;
}
}
}追问

密码不区分大小写
你的程序写的不错,就这里有问题,请问如何改?
谢谢!

追答

#include<stdio.h>

#include<string.h>

void main()

{

  char str1[20],str2[20]="abcd";//定义两个字符串数组,str2存放已知密码,str1存放输入密码

  int i=0,k,flag=0;

  printf("请输入密码:");

  while(1)//死循环

  {


  gets(str1);//输入密码

  strlwr(str1);//把输入密码转换为小写

  k=strcmp(str1,str2);//比较,输入密码和已知密码相等,k=0

  ++flag;//计数器加1

 if(!k)

 {  printf("欢迎使用\n");

 break;

 }


  else if(k&&flag!=3) printf("密码输入错误,请再次输入:\n");


  if(flag==3)//当输入超过三次,跳出循环,结束程序

  {

 printf("对不起,您无权使用");

 break;

  }

  }

}

加了一句:strlwr(str1)

测试结果:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-17
char UID[4];
char PWD[4]; //声明两个数组 分别保存第一/二次密码
int cout=0,num=0;
printf("请输入密码:"); //第一次输入密码
for(int i=0;i<4;i++)
{
UID[i]=scanf(s%,&UID);
}

printf("请确认密码:");
int i=0;
for( i=0;i<4;i++) //第二次输入密码
{
PWD[i]=scanf(s%,&PWD); //输入一个比较一个
if((PWD[i]== UID[i])||(PWD[i]==(UID[i]+32))||PWD[i]==(UID[i]-32)))
{
num++;
if(num==4)
{
break; //四次全等,跳出循环
}
}
else
{
cout++;
i=0;
if(cout>=3)
{
break;
printf("今日权限用完了,请明天再试!");
}
else
{
continue; //一次不等,重新开始循环
}
}
}
printf("欢迎使用!");
第2个回答  2013-05-17
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define max 20
void main()
{
char *cip1="abcd"; //存正确密码
char cip[max];
int i=0,count=0;
printf("Input the ciphertext:\n");
gets(cip);
while(cip[i++]!='\0')
cip[i-1]=tolower(cip[i-1]); //将输入的需要验证的密码都转换成小写
while(1)
{
if(strcmp(cip1,cip)==0) //和正确密码进行比较
{
printf("Welcome to use!\n");
break;
}
else
{
count++;//count进行计数,控制密码输入次数
if(count==4)
{
printf("Sorry,you have no rights to use!\n");
break;
}
printf("The ciphertext is wrong,input again:\n");//密码错误,提示再次输入
gets(cip);
i=0;
while(cip[i++]!='\0')
cip[i-1]=tolower(cip[i-1]); //这里功能和上面一样
}
}
}
第3个回答  2013-05-17
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
int main()
{
char cccc[5];
char mima[5]={"abcd\0"};
int n ;
char c;
int wrong=0;
n=0;
int entering=1;
while(entering)
{
c=getch();
if(isalpha(c))
{
printf("* ");
cccc[n++]=c;
}
if(n==4)
{
mima[n]='\0';
if(strncmp(cccc,mima,4)==0)
{
printf("欢迎使用!\n");
entering=0;
}
else
{
printf("密码错误,请重新输入!\n");
wrong++;
n=0;
}
if(wrong==3)
{
printf("对不起,您无权使用!\n");
entering=0;
}
}
}

return 0;
}
相似回答