这提交了怎么会这样啊大家
#include
int main(void)
{
int n;
char pass_wd[100];
int upper_case;
int lower_case;
int num;
int symbol;
scanf("%d",&n);
for(int i=0;iif( strlen(pass_wd)<8)
continue;
for(i=0;in(pass_wd);i++)
{
if(pass_wd[i]>='a'&&pass_wd<='z')
lower_case++;
else if(pass_wd[i]>='A'&&pass_wd<='Z')
upper_case++;
else if(pass_wd[i]>='0'&&pass_wd<='9')
num++;
else if(pass_wd[i]>=33&&pass_wd[i]<=126)
symbol++;
}
if((upper_case==0&&lower_case==0)||(upper_case==0&&num==0)||(upper_case==0&&symbol==0)||(lower_case==0&&num==0)||(lower_case==0&&symbol==0)||(num==0&&symbol==0))
printf("Weak");
else if((upper_case==0&&lower_case==0&&num==0)||(upper_case==0&&lower_case==0&&symbol==0)||(lower_case==0&&num==0&&symbol==0)||(upper_case==0&&num==0&&symbol==0))
printf("Weak");
else printf("Strong");
}
return 0;
}
直接(upper_case?1:0) + (lowerr_case?1:0) + (num?1:0) + (symbol?1:0) >= 3 即可
。。。。四种内容包含三种,无需这么复杂,直接定义一个长度4数组,或者四个变量,如果有该类型数据则数据变成1,否则为0,然后数组求和,或者四个变量相加,得3或4为强壮,否则为弱
我们发现,代码跑出来的答案和我们自己想的有很大的差距:
我们观察第一个结果,,n以整型的形式放进去,然后再以整型%d的形式取出来,结果是9,这是合理的,,第二个结果是,n以整型的形式存进去,然后以%f,浮点型的形式取出来,,
int整型占4byte,float类型也占4byte,float*类型的指针变量pFloat,解引用就会访问4byte,跳过一个float类型,而拿出来的结果是不一样的,不是9.000000,这就说明,浮点型和整型在
内存中的存储方式是不一样的,如果一样的话,拿出来的结果应该是一样的,对于第三个结果,,以浮点型的形式存进去,再以%d整型的形式取出来,结果不是9,这又说明了,浮点型和
整型在内存中的存储方式是不一样的,对于第四个结果,以浮点型的形式存进去,然后以%f浮点型的形式取出来,结果是9.000000,这是合理的;
以整形的视角放进去,再以整型的视角拿出来,,结果是对的,,以浮点型的视角放进去,再以浮点型的视角拿出来,,结果也是对的,,但是混淆放拿结果就是乱的;