密码判断并加密
用户密码的格式是:
1)以大写或小写字母开头
2)至少要有8个字符,最长不限
3)由字母、数字、下划线或 '-' 组成
输入若干字符串,判断是不是符合密码的条件。
如果不符合,输出no,
如果符合密码条件,输出加密后的密码,加密规则为把一个字母替换成它之后的第5个字母,注意大写字母Z的下一个字母是A,小写字母z的下一个字母是a。
密码判断并加密
用户密码的格式是:
1)以大写或小写字母开头
2)至少要有8个字符,最长不限
3)由字母、数字、下划线或 '-' 组成
输入若干字符串,判断是不是符合密码的条件。
如果不符合,输出no,
如果符合密码条件,输出加密后的密码,加密规则为把一个字母替换成它之后的第5个字母,注意大写字母Z的下一个字母是A,小写字母z的下一个字母是a。
如下:
代码:
#include <stdio.h>
#include <string.h>
//判断是否是字母
int iszm(char c)
{
if(c>='a' && c<='z') return 1;
else if(c>='A' && c<='Z') return 1;
else return 0;
}
//判断是否是数字
int isnmb(char c)
{
if(c>='0' && c<='9') return 1;
return 0;
}
int isvalid(char buf[])
{
int i = 0;
while(buf[i])
{
if(iszm(buf[i]) || isnmb(buf[i]) || buf[i]=='-' || buf[i]=='_')
i++;
else
return 0;
}
return 1;
}
//字符加密
void jm(char buf[],int n)
{
int i=0;
while (buf[i])
{
if(buf[i]>='a' && buf[i]<='z')
{
buf[i] = buf[i]+5;
if(buf[i]>'z')
buf[i] = buf[i] - 26;
}
else if(buf[i]>='A' && buf[i]<='Z')
{
buf[i] = buf[i]+5;
if(buf[i]>'Z')
buf[i] = buf[i] - 26;
}
i++;
}
}
int main()
{
char buf[100];
while( 1)
{
gets(buf);
if(strlen(buf)==0) break;
if(iszm(buf[0]) && strlen(buf)>=8 && isvalid(buf))
{
jm(buf,5);
printf("%s\n",buf);
}else
printf("no\n");
}
return 0;
}