目录
一、题目描述
二、课后习题
1.题目
方法:
力扣截图
2.题目
方法:
力扣截图
3.题目
方法
力扣截图
一、题目描述
循环输入。每次输入一个长度不超过 20 的密码字符串,判断这个串是否是一个安全密码串,是则输出 YES,否则输出 NO,没有任何输入的时候,程序结束。
安全密码串的条件如下:
1)长度在 8 到 16 之间;
2)至少有小写字母、大写字母、数字、特殊字符 中的任意三种;
3)特殊字符为~!@#$%^的其中之一;
方法:
(1)先自定义一个字符串放置特殊字符,用于后面判断是否为特殊字符
(2)自建一个函数,用于判断是否为特殊字符
(3)定义一个标志字符串flag[4]
(4)用while循环开始判断字符串
(5)首先利用strlen函数,判断长度是否为8-16之间,若否则直接打印NO,且用continue跳出本次循环
(6)对小写字母、大写字母、数字、特殊字符进行判断,若是则令对应的flag[i]=1
(7)注意每次循环都要将flag还原成0,否则就会继承上次循环的1
代码如下:
#include "stdio.h" #include "string.h" char teshu[]="~!@#$%^"; int isTeshu(char ch) //判断是否为特殊字符 { int i; for( i=0;teshu[i];++i) { if(teshu[i]==ch) { return 1; } } return 0; } int main() { char str[100] ; int flag[4]; int i; while(scanf("%s",str)!=EOF) { if(strlen(str)<8||strlen(str)>16) //长度是否处于8-16之间 { printf("NOn"); continue; } flag[0]=flag[1]=flag[2]=flag[3]=0; for(i=0;i二、课后习题 1.题目 方法:='0'&&str[i]<='9')flag[0]=1; if(str[i]>='a'&&str[i]<='z')flag[1]=1; if(str[i]>='A'&&str[i]<='Z')flag[2]=1; if(isTeshu(str[i]))flag[3]=1; } if(flag[0]+flag[1]+flag[2]+flag[3]>=3) { printf("YESn"); } else { printf("NOn"); } } return 0; }
(1)找规律后可以发现,横纵坐标奇偶性不同时为白色,反之为黑色
(2)利用此规律,先将x,y坐标的奇偶性判断出来
(3)再针对不同的情况返回不同的值即可
代码如下:
bool squareIsWhite(char * coordinates) { int x= coordinates[0]-'a',y=coordinates[1]-'1';//奇偶性同,偶数;反之奇数 if(x%2==1&&y%2==1) { return 0; } else if(x%2==1&&y%2==0) { return 1; } else if(x%2==0&&y%2==0) { return 0; } return 1; }力扣截图 2.题目 方法:
(1)遍历给我们的字符串
(2)当出现A或B时,进行相应的运算,直至循环结束
(3)返回x+y的值即可
代码如下:
int calculate(char* s){ int x=1,y=0; for(int i=0;s[i];++i) { if(s[i]=='A') { x=2*x+y; } if(s[i]=='B') { y=2*y+x; } } return x+y; }力扣截图 3.题目 方法
(1)只需要判断二维数组中,每一行的第二个字符是+还是-即可
代码如下:
int finalValueAfterOperations(char ** operations, int operationsSize){ int x=0; for(int i=0;i力扣截图 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)