No.16 代码练习:折半查找,模拟登录,大小写转换

学习不易,需要坚持。

1.写代码可以在整型有序数组中查找想要的数字,
找到了返回下标,找不到返回-1.(折半查找)

2.编写代码模拟三次密码输入的场景。
最多能输入三次密码,密码正确,提示“登录成功”,密码错误,
可以重新输入,最多输入三次。三次均错,则提示退出程序。

3.编写一个程序,可以一直接收键盘字符,
如果是小写字符就输出对应的大写字符,
如果接收的是大写字符,就输出对应的小写字符,
如果是数字不输出。

1.
//一个重要的查找算法:折半查找
//写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)

#include <stdio.h>

int Fold_half_search(int arr[], int sz, int key) 
{
	int left = 0 ;
	int right = sz - 1 ;
	int mid = 0 ; //中间值
	while(left <= right)
	{
		mid = ( left + right ) / 2 ;
		//查找成功
		if( key == arr[mid] ) 
		{
			return mid ;
		}
		//若查找失败,则改变左右指针继续查找
		if( arr[mid] < key )
		{
			left = mid + 1 ;
		}

		if( arr[mid] > key )
		{
			right = mid - 1 ;
		}
	}

	return -1 ;
}

void Print(int arr[], int sz)
{
	int i = 0 ;
	for(i=0; i<sz; i++)
	{
		printf("%d ", arr[i]) ;
	}

	printf("\n") ;
}


int main()
{
	int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9} ;
	int ret = 0 ;
	int input = 0 ;//需要查找的数
	int flag = 0 ; //标志
	int size = sizeof(arr) / sizeof(arr[0]) ;
	printf("/******折半查找*****/\n") ;
	Print(arr, size) ;
	while( flag < 2 )
	{
		printf("请输入你想要查找的数字: ") ;
		scanf("%d", &input) ;
		ret = Fold_half_search(arr, size, input) ;
		printf("下标为:arr[%d]\n", ret) ;
		flag++ ;
	}
	return 0 ;
}

运行结果:
在这里插入图片描述

2.
//编写代码模拟三次密码输入的场景。
//最多能输入三次密码,密码正确,提示“登录成功”,密码错误,可以重新输入,最多输入三次。三次均错,则提示退出程序。

#include <stdio.h>
#include <string.h>

void Enter()
{
	int count = 0 ; //记录输入次数
	char name[] = "1016705287" ;
	char psw[] = "xagydx" ;
	char name_input[20] = { 0 } ;
	char psw_input[20] = { 0 } ;
	while ( count < 3 )
	{
		printf("请输入QQ账号: ") ;
		scanf("%s", name_input) ;
		printf("请输入QQ密码: ") ;
		scanf("%s", psw_input) ;

		if( ( strcmp(name, name_input) == 0 ) && (strcmp(psw, psw_input) == 0 ) )
		{
			printf("密码输入正确!\n") ;
			break ;
		}	

		else
		{
			printf("账号或密码输入错误,请重新输入!\n") ;
		}

		count ++ ;
	}
}

int main()
{
	Enter() ;
	return 0 ;
}

运行结果:
在这里插入图片描述

3.
//编写一个程序,可以一直接收键盘字符,
//如果是小写字符就输出对应的大写字符,
//如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出。

#include <stdio.h>

char Judge(char ch) 
{
	//如果输入的是小写字母
	if( ch >= 97 && ch <= 122 ) 
	{
		printf("处理后的字符:%c", ch - 32) ;
	}
	//如果接收的是大写字母
	if( ch >=65 && ch <= 90 )
	{
		printf("处理后的字符:%c", ch + 32) ;
	}
	//如果接收的是数字,则不输出
	if( ch > 48 && ch <= 57 )
	{
		printf("检测到数字\n") ;
		return ;
	}


}
int main()
{
    int count = 0 ;
	char ch = 0 ;
	while(count < 3)
	{
	printf("请输入一个字符: ") ;
	scanf("%c", &ch) ;
	Judge(ch) ;  //判断函数
	while ((ch = getchar()) != EOF && ch != '\n'); //清除缓冲区
	printf("\n") ;
	count++ ;
	}
	return 0 ;
}

运行结果:
在这里插入图片描述

学习不易,需要坚持。

猜你喜欢

转载自blog.csdn.net/studyhardi/article/details/83791636