注册 登录
编程论坛 C语言论坛

ASCII值比较大小,感谢各位大神

祝你前程似锦 发布于 2020-02-06 19:04, 4479 次点击
做一个确定密码强度的程序,接受字符和数字and字母,然后怎么用输入的密码跟ASCII值比较,来确定是哪个等级的?
#include<stdio.h>
void main()
{
 int i,j;
 char ss[100];
 gets(ss);
 printf("please输入你的密码个数:",i);
 scanf("%d",&i);
 if(i<6)
     printf("当前密码不合格",i);

 else
 {   
     printf("请输入您当前的密码:",ss);
     scanf("%d",&ss);
     for(j=0;j<i;j++)   
     {
        if(ss[j]<='9'&&'0'<=ss[j])
            printf("当前密码弱",ss);
        else
        {    if(ss[j]>'a'&&ss[j]<='z')
          printf("当前密码中",ss);
                else
                {        printf("当前密码强度高",ss);
        }
        }
     }
     }

     }
27 回复
#2
叶纤2020-02-06 20:06
看了一大会,没看明白,你举个例子啊
#3
祝你前程似锦2020-02-06 20:23
就是比如说你注册qq的时候写密码,纯数字是低,数字加字母是中等,再加符号是强,这个意思
#4
祝你前程似锦2020-02-06 20:25
回复 2楼 叶纤
就是比如说你注册qq,让你写密码的时候纯数字报出来是低,数字加字母是中等,加个符号就是强
#5
bcbbcclbbc2020-02-06 21:02
void main()
建议改为 int main()

printf("please输入你的密码个数:",i)
printf("请输入您当前的密码:",ss);

这个printf语句怎么这样用?引号内没有相应的格式符,后面不应该接”,i” ",ss"

scanf("%d",&ss);
前面定义ss为一个字符数组,读取怎么用%d???应该用%s读取字符串,而且ss单独使用可以代表该数组的地址    scanf("%s",ss);

后面的for循环语句执行的时候会大堆输出
写代码不是想的那步就直接写,这样容易绕圈子,建议先把大体的思路写出,然后分解成一个个小代码再整合。

至于判断强度,一个方法就是用一个数组分别计算输入的密码中数字有几个、字母有几个、符号有几个,最后在对这个数组处理,判断方法例如:三种都有的密码最强,有两种的较中,只有一个的最弱。
#6
祝你前程似锦2020-02-06 21:07
回复 5楼 bcbbcclbbc
大神,我也想简单一点,但是我自学的,就是现在想试试不确定元素的(字母数字字符都可以有)一维数组的定义,不知道用什么去定义啊,这个能定义我就简单多了。
#7
bcbbcclbbc2020-02-06 21:27
读取密码(一个字符数组)后用循环语句判断每一个数组元素的ascll值,属于数字,字母,符号中的哪一个。
用一个数组a[3]:a[0]代表数字、a[1]代表字母、a[2]代表符号;初始化为0。
循环中如果有一个数字a[0]+1;有一个字母则a[1]+1……
最后可以通过数组元素为0的个数来判断强度。
#8
叶纤2020-02-06 22:04
程序代码:
  #include<iostream>
using namespace std;
int main()
{  char ch[100];int a{},b{},c{};
   
   cin >> ch;
   
    for(int i=0;ch[i];++i)
    { if(ch[i]>='0' && ch[i]<='9')
        {++a;
        }
        else if(ch[i]>='a' && ch[i]<='z')
               {++b;
            }
       else if (ch[i]>='A' && ch[i]<='Z')
           {++c;
        }
     }
    int e=a+b+c;
    if(e<6)
    {    cout << "您输入密码小于6位,请重新输入" << endl;
    }
    else
    {
    if(e==a)
    {cout<<"当前密码强度弱 " ;  }
   
    else if(e==a+b)
    {cout<<"当前密码强度中 " ;
    }
    else
    {cout<<"当前密码强度高 " ;
    }
}
}  
弱弱的问一句你能看懂c++吗
#9
xianfajushi2020-02-07 03:15
#10
林月儿2020-02-07 07:08
回复 8楼 叶纤
代码缩进,空格有问题
#11
祝你前程似锦2020-02-07 08:34
回复 8楼 叶纤
我懂你的思路就是刚开始不知道自己怎么表示。现在会了,谢谢兄弟了
#12
祝你前程似锦2020-02-07 08:36
回复 7楼 bcbbcclbbc
哎自己学觉得没方向。辛苦了大哥,我能理解你的思路就是有很多头文件跟函数不知道怎么用而已,,,
#13
祝你前程似锦2020-02-07 09:21
回复 8楼 叶纤
但是那样int e=a+b+c;的声明位置不对吧,会报错的
#14
叶纤2020-02-07 11:28
回复 10楼 林月儿
额,我美学过排版,都看别人怎么排模仿着排,缩进四个字格,英文我的编译器只支撑英文看英文缩进我挺头痛的,所以我会自己空格缩进,有时候感觉差不多了就编写下一行,然后再统一排版,主要是代码对了就行,可能代码不是最好的。
#15
叶纤2020-02-07 11:31
以下是引用祝你前程似锦在2020-2-7 09:21:14的发言:

但是那样int e=a+b+c;的声明位置不对吧,会报错的

我用的是C++的标准写的并不是c89标准写的
#16
叶纤2020-02-07 11:42
像c89标准必须把代码定义写在块头,c99标准认为是不健康的,然后进行了整改优化,学习了c++的定义方式,所以你那个定义方式在c99过时,已经是老奶奶了,并且已经进棺材了,你让我把定义写在块头,和挖别人坟有什么区别,这种缺德事情,我不干!!!!
#17
叶纤2020-02-08 17:24
以下是引用林月儿在2020-2-7 07:08:03的发言:

代码缩进,空格有问题

哇咔咔,终于理解您说的空格问题了,今天玩了会我的编译器设置,把我头痛的空格缩进问题解决了,嘻嘻,还学会了两个英文单词
#18
林月儿2020-02-08 17:48
嗯,再接再厉
#19
纯蓝之刃2020-02-08 18:59
程序代码:
#include <stdio.h>
#include <string.h>

int main()
{
    unsigned int j;
    char ss[100]= {0},num[2]= {0};
    printf("请输入您当前的密码:");
    gets(ss);
    while(strlen(ss)<6)             //判断密码长度
    {
        printf("您输入密码小于6位,请重新输入:");
        gets(ss);
    }

    for(j=0; j<strlen(ss); j++)
    {
        if(ss[j]<='9'&&'0'<=ss[j]&&num[0]==0)
            num[0]++;
        if(ss[j]>'a'&&ss[j]<='z'&&num[1]==0)
            num[1]++;
        if(num[0]>0&&num[1]>0)
            break;
    }

    if(num[0]>0&&num[1]>0)
        printf("当前密码强度高");
    else
        if(num[0]==0&&num[1]>0)
            printf("当前密码强度中");
        else
            printf("当前密码强度弱");

    return 0;
}
#20
祝你前程似锦2020-02-10 13:32
回复 19楼 纯蓝之刃
但是测长度的时候不会以为数组还是100个吗,就是你输入的密码后面默认是0?
#21
祝你前程似锦2020-02-10 13:35
回复 19楼 纯蓝之刃
#include<iostream.h>
#include<stdio.h>
int main()
{
 int a,b,c,i,m=0,e;
 char ch[100];
 printf("请输入您的密码:");
 scanf("%d",&ch);
 for(i=0;ch[i];++i)
 {
 if(ch[i]>'0'&&ch[i]<'9')
 {    a=++m;
 }
 else
     if(ch[i]>'a'&&ch[i]<'z')
     { b=++m;
     }
     else
         if(ch[i]>'A'&&ch[i]<'Z')
         {    c=++m;
         }
 }
  if(int e==a+b+c&&e<6)
    printf("当前密码不合格");
  else
     { if(e==a)
          printf("当前密码弱");
      else
      {  if(e==b+a)
              printf("当前密码强度中");
          else
          { printf("当前密码强度高");}

      }
  }
}
我这个他就报错
#22
叶纤2020-02-10 16:45
程序代码:
#include<stdio.h>
int main()
{  char ch[100]={0};int a=0,b=0,c=0,i=0,e=0;
   
   scanf("%s",ch);
   
    for(i=0;ch[i];++i)
    { if(ch[i]>='0' && ch[i]<='9')
        {++a;
        }
        else if(ch[i]>='a' && ch[i]<='z')
               {++b;
            }
       else if (ch[i]>='A' && ch[i]<='Z')
           {++c;
        }
     }
     e=a+b+c;
    if(e<6)
    {    printf( "您输入密码小于6位,请重新输入") ;
    }
    else
    {
    if(e==a)
    { printf(  "当前密码强度弱 ") ;  }
   
    else if(e==a+b)
    {printf(   "当前密码强度中 ") ;
    }
    else
    { printf ( "当前密码强度高 ") ;
    }
}
}      
请仔细看大佬们的话然后总结
#23
林月儿2020-02-10 16:51
回复 22楼 叶纤
代码缩进不对
#24
叶纤2020-02-10 16:53
程序代码:
  #include<stdio.h>
int main()
{   char ch[100]= {0};
    int a=0,b=0,c=0,i=0,e=0;

    scanf("%s",ch);

    for(i=0; ch[i]; ++i)
    {   if(ch[i]>='0' && ch[i]<='9')
        {   ++a;
        }
        else if(ch[i]>='a' && ch[i]<='z')
        {   ++b;
        }
        else if (ch[i]>='A' && ch[i]<='Z')
        {   ++c;
        }
    }
    e=a+b+c;
    if(e<6)
    {   printf( "您输入密码小于6位,请重新输入") ;
    }
    else
    {
        if(e==a)
        {
            printf(  "当前密码强度弱 ") ;
        }

        else if(e==a+b)
        {   printf(   "当前密码强度中 ") ;
        }
        else
        {   printf ( "当前密码强度高 ") ;
        }
    }
}   
#25
叶纤2020-02-10 16:54
代码颜色呢?我色盲了吗?这样呢?对吗
#26
林月儿2020-02-10 17:16
程序代码:
  
#include<stdio.h>
int main()
{   
    char ch[100]= {0};
    printf("请输入密码:");
    scanf("%s", ch);

    int a = 0, b = 0, c = 0, i = 0, e = 0;
    for(i=0; ch[i]; ++i)
    {
        if(ch[i]>='0' && ch[i]<='9')
        {   
            ++a;
        }
        else if(ch[i]>='a' && ch[i]<='z')
        {   
            ++b;
        }
        else if (ch[i]>='A' && ch[i]<='Z')
        {   
            ++c;
        }
    }
    e = a + b + c;
    if (e < 6)
    {   
        printf("您输入密码小于6位,请重新输入") ;
    }
    else
    {
        if (e == a)
        {
            printf("当前密码强度弱 ") ;
        }
        else if (e == a + b)
        {   
            printf("当前密码强度中 ") ;
        }
        else
        {   
            printf("当前密码强度高 ") ;
        }
    }
}
#27
叶纤2020-02-10 17:40
回复 26楼 林月儿
哦我明白了,符号前后也要各跟一个空格,我一般不空格的,因为我觉得多打一个空格就浪费打空格的时间,了解了
#28
祝你前程似锦2020-02-11 09:47
回复 22楼 叶纤
谢谢姐姐我会了哈哈哈感谢感谢!!!
1