密码含有至少一个小写字母
密码含有至少一个大写字母
密码含有至少一个数字
密码含有至少一个特殊符号,特殊符号包括 ()`!@#$%^&*_-+=|{}[]:;'<>,.?
要求输入多行密码,满足其中三个条件就输出true;否则输出false
不知道哪里出错了,比如我输入asw没有输出?
#include
int main(){char c;int a,b,e,d;
while(c=getchar()!=EOF){
if(getchar()>='a'&&getchar()<='z')a=1;
if(getchar()>='A'&&getchar()<='Z')e=1;
if(getchar()>='0'&&getchar()<='9')b=1;
if(getchar()>='#'&&getchar()<='.'||getchar()>=':'&&getchar()<='@'||getchar()>='['&&getchar()<='`'||getchar()=='!')d=1;
if(a+b+e+d>2)printf("true\n");
else printf("false\n");
a=0;b=0;e=0;d=0;
}
return 0;
}
该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
问题出在你的代码中使用了多次getchar(),每次调用getchar()都会读取一个字符,并且每次调用后指针都会往后移动一个字符位置,所以实际上你的代码只会处理每个输入字符串的第一个字符,而后面的字符都被跳过了。正确的做法是将每次读取的字符存储到一个变量中,然后对这个变量进行判断。
下面是修改后的代码示例:
#include <stdio.h>
int main() {
char c;
int a, b, e, d;
while ((c = getchar()) != EOF) {
a = b = e = d = 0;
while (c != '\n') {
if (c >= 'a' && c <= 'z') {
a = 1;
} else if (c >= 'A' && c <= 'Z') {
e = 1;
} else if (c >= '0' && c <= '9') {
b = 1;
} else if (c == '(' || c == ')' || c == '`' || c == '!' ||
(c >= '@' && c <= '[') ||
(c >= ']' && c <= '_') || c == '-' || c == '+' ||
c == '=' || c == '|' || (c >= '{' && c <= '}') ||
c == ';' || c == ':' || c == '<' || c == '>' ||
c == ',' || c == '.') {
d = 1;
}
c = getchar();
}
if (a + b + e + d >= 3) {
printf("true\n");
} else {
printf("false\n");
}
}
return 0;
}
注意,上面的代码中使用了一个嵌套的while循环来读取每行输入的所有字符,并且判断完每行输入后要将a、b、e、d四个变量重置为0,否则会影响下一行输入的判断结果。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
不知道你这个问题是否已经解决, 如果还没有解决的话:你是不是经常在编写程序中看到以下等字样?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define
#error
#if
#else
#elif
#endif
#ifdef
#ifndef
#undef
#line
#pragma
我想,大部分小白只知道前面5种预处理命令。
可能很多小白太过纠结于算法,而忽略了这些C语言的核心知识。
学知识,要善于总结。而不是学一点丢一点,成了杂学,没有系统的知识树。
下面就讲一讲预处理命令。
①文件包含命令
//语法:#include<文件名>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
include是关键字,可以包含一个文件名,每个C语言程序都包含头文件,不同头文件提供不同的函数,若没有stdio.h这个头文件,C语言程序就无法输入(scanf)输出(printf);stdlib、string.h两个头文件也包含了其他的函数,要调用相应的函数,就要调用相应的头文件。
②宏定义命令
//语法:#define 标识符 字符串
#define PI 3.1415926
#define Hello "Hello World"
//又可以定义函数表达式
#define f(x) x*x //表示f(x)=x^2
#define f(x,y) x*y //表示f(x,y)=x*y
宏定义的变量的作用域和生存期是整个程序,对整个程序都起作用。
③条件编译命令
关键字如下
#ifdef
#if
#else
#endif
#ifndef
许多C语言入门教材上缺乏对条件编译命令的详解,这里先混个脸熟,后续会有条件编译命令的专题。