《C语言入门100例》---第17题

《C语言入门100例》---第17题,第1张

《C语言入门100例》---第17题

 目录

一、题目描述

二、课后习题

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='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.题目

方法:

(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 

力扣截图

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5702808.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存