本文目录一览:
有关二方密码的C语言程序
小错误比较多,逻辑不是很清晰。建议严格按照二方密码的定义来重写。
比如说:
oid rearrange(char arr[])//重新排序
{
/*按顺序排列字母*/
char new1[40];
int a,b=0,k,e=0,f=0,p;
for(a=0;arr[a]!='\0';a++)
{
new1[b]=arr[a]; //这是什么意思呢?看不懂,猜应该是new1[a]?
}
k=a+26;
for(b=a;b=k;b++)
{
new1[b+1]=new1[b]+1; //确认不越界?
}
如何用C语言编写密码程序
1、用一个字符数组来存密码
再用一个字符数组接收你的输入,然后用strcmp
来比较,如果返回0则密码是正确的
2、例程:
#include "stdio.h"
#include "string.h"
int main()
{
char mima[100]="YuanShi888";
char input[100]={0};
printf("请输入密码:");
gets(input);
if(strcmp(mima,input)==0)
printf("恭喜你,密码正确!\n");
else
printf("对不起,密码输入错误!\n");
}
一个两位纯数字密码破解程序怎么编,用C语言
1、数据范围小的密码可以使用穷举法。这里从00到99,当作字符来处理,需要两重循环。
2、例程:
char a,b,c='1',d='2'; //这里变量c,d表示密码的第一位和第二位。
char key[2];
for(a='0';a='9';a++){
for(b='0';b='9';b++){
key[0]=a;
key[1]=b; //这就是一个密码
if(key[0]==c key[1]==d) printf("密码是:%s",key);//找到密码并输出
}
}
关于二次方程的C语言程序
这个问题很简单
#include stdio.h
#include math.h
void main()
{
float a,b,c,d;
float x1,x2;
scanf("%f %f %f",a,b,c);
d=b*b-4*a*c;
if(d0)
{
printf("on!\n");
}
else
if(d==0)
{
x1=(-b/(2*a));
printf("%f\n",x1);
}
else
if(d0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("X1=%f\nX2=%f\n",x1,x2);
}
}
请大神帮我用C语言编译一有关于密码的程序。
#include stdio.h
#include stdlib.h
#include string.h
#include stdbool.h
#include windows.h
typedef struct
{
int x;
int y;
}PT_STRUCT;
typedef struct
{
char user[20];
char pw[20];
}USER_STRUCT;
PT_STRUCT pt;
bool LoginSuccess=false;
char CurrentUser[20]={'\0'};
int UserCount=0;
int LoginErrCount=0;
USER_STRUCT* pUser=NULL;
char WorkDir[100]={'\0'};
char DataFile[100]={'\0'};
void setxy(int x, int y)
{
COORD coord = {x, y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
void getxy()
{
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coordScreen = {0, 0}; //光标位置
CONSOLE_SCREEN_BUFFER_INFO csbi;
if (GetConsoleScreenBufferInfo(hConsole, csbi))
{
pt.x=csbi.dwCursorPosition.X;
pt.y=csbi.dwCursorPosition.Y;
}
}
void input(char* buf)
{
int len=strlen(buf);
int c;
int i=0;
while(1)
{
c=getch();
if(c==8 i==0)
{
continue;
}
if(c==10 || c==13) break;
if(c==8 i0)
{
buf[i-1]='\0';
i--;
getxy();
setxy(pt.x-1,pt.y);
printf(" ");
setxy(pt.x-1,pt.y);
}
else if(i=0)
{
printf("*");
buf[i++]=c;
}
if(i=buf)
{
return;
}
}
}
void GetUserDataFromFile()
{
UserCount=GetPrivateProfileInt("USER","user_count",0,DataFile);
if(pUser!=NULL)
{
free(pUser);
}
pUser=(USER_STRUCT*)malloc(sizeof(USER_STRUCT)*(UserCount+1));
int i;
char ch[5];
for(i=0;iUserCount;i++)
{
memset(ch,'\0',5);
sprintf(ch,"%d",i+1);
GetPrivateProfileString(ch,"user","",pUser[i].user,20,DataFile);
GetPrivateProfileString(ch,"pw","",pUser[i].pw,20,DataFile);
}
}
void WriteDataToFile()
{
int i;
char t[5]={"\0"};
sprintf(t,"%d",UserCount);
WritePrivateProfileString("USER","user_count",t,DataFile);
for(i=0;iUserCount;i++)
{
sprintf(t,"%d",i+1);
WritePrivateProfileString(t,"user",pUser[i].user,DataFile);
WritePrivateProfileString(t,"pw",pUser[i].pw,DataFile);
}
GetUserDataFromFile();
}
bool login()
{
if(LoginSuccess==true)
{
printf("当前已有用户登录! 重新登录吗?(Y/N)");
char sel;
fflush(stdin);
scanf("%c",sel);
if(sel=='y' || sel=='Y')
{
LoginSuccess==false;
}
else
{
return false;
}
}
char user[20]={'\0'};
char pw[20]={'\0'};
printf("\nInput User: ");
fflush(stdin);
scanf("%s",user);
printf("\n\nInput Password: ");
fflush(stdin);
input(pw);
bool find=false;
int i;
for(i=0;iUserCount;i++)
{
if(strcmp(user,pUser[i].user)==0 strcmp(pw,pUser[i].pw)==0)
{
find=true;
LoginSuccess=true;
strcpy(CurrentUser,pUser[i].user);
break;
}
}
if(find==true)
{
return 1;
}
else
{
return 0;
}
}
bool regist(char* ErrBuf)
{
char user[20]={'\0'};
char pw1[20]={'\0'};
char pw2[20]={'\0'};
printf("\nInput User: ");
fflush(stdin);
scanf("%s",user);
int i;
for(i=0;iUserCount;i++)
{
if(strcmp(user,pUser[i].user)==0)
{
strcpy(ErrBuf,"User Repeat");
return false;
}
}
printf("\n\nInput Password: ");
fflush(stdin);
input(pw1);
printf("\n\nReInput Password: ");
fflush(stdin);
input(pw2);
if(strcmp(pw1,pw2)!=0)
{
strcpy(ErrBuf,"Password Differ");
return false;
}
strcpy(pUser[UserCount].user,user);
strcpy(pUser[UserCount].pw,pw1);
UserCount++;
return true;
}
int main()
{
_getcwd(WorkDir,100); //取得当前程序的绝对路径
strcpy(DataFile,WorkDir);
strcat(DataFile,"\\user.dat");
if(access(DataFile,0))
{
printf("\n用户数据文件不存在, 按任意键将创建文件");
getchar();
FILE* fp;
fp=fopen(DataFile,"wb");
int re=fputs("[USER]\r\nuser_count=0",fp);
if(re=0)
{
printf("\n用户数据文件创建成功!");
}
else
{
printf("\n用户数据文件创建失败!");
}
getchar();
fclose(fp);
}
GetUserDataFromFile();
while(1)
{
system("cls");
printf("已注册用户%d",UserCount);
if(LoginSuccess==true)
{
printf(" Logined User : %s",CurrentUser);
}
printf("\n\n\n-------------------------------");
printf("\n登录---1");
printf("\n注册---2");
printf("\n退出---3");
printf("\n-------------------------------");
printf("\nPlease Input 1-3 : ");
int sel;
bool re;
char ErrBuf[50]={'\0'};
fflush(stdin);
scanf("%d",sel);
if(sel1 || sel3)
{
printf("\n\nInput error!");
fflush(stdin);
getchar();
continue;
}
switch(sel)
{
case 1:
re=login();
if(re==true)
{
printf("\n\nLogin Success! Current User: %s",CurrentUser);
fflush(stdin);
getchar();
}
else
{
printf("\n\nLogin Fail!");
LoginErrCount++;
if(LoginErrCount=3)
{
printf("\n\nLogin Fail 3, Program will be exit!");
}
fflush(stdin);
getchar();
if(LoginErrCount=3)
{
exit(0);
}
}
break;
case 2:
memset(ErrBuf,'\0',50);
re=regist(ErrBuf);
if(re!=true)
{
printf("\n\n%s Register Fail!",ErrBuf);
fflush(stdin);
getchar();
}
else
{
WriteDataToFile();
printf("\n\nRegister Success!");
fflush(stdin);
getchar();
}
break;
case 3:
exit(0);
break;
default:
break;
}
}
return 0;
}