c语言练习8.3

1.打印九九乘法表

int main()
{
	int i, n;
	for (n = 1; n <= 9; n++)
	{
		for (i = 1; i <= n; i++)
		{
			printf("%d*%d=%d\t", n, i, n * i);//for循环的嵌套  \t 表示空格的意思
		}
		printf("\n");
	}
	return 0;
}

2.查找

int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int k = 17;
	//写一个代码,在arr数组(有序的)中找到7
	int sz = sizeof(arr) / sizeof(arr[0]);
	int i = 0;
	for (i = 0; i <sz; i++)
	{
		if (k == arr[i])
		{
			printf("找到了,下标是%d", i);
			break;
		}

	}
	if (i == sz)
		printf("找不到\n");
	return 0;
}

优化:二分查找

int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int k =0;
	scanf("%d", &k);
	int sz = sizeof(arr) / sizeof(arr[0]);
	int left = 0;
	int right = sz - 1;
	while (left <= right)
	{
		int mid = (left + right)/2;
		if (k < arr[mid])
			{
				right = mid - 1;
		}
		else if (k > arr[mid])
		{
			left = mid + 1;
		}
	
		else
		{
			printf("找到了,下标是%d", mid);
			break;//循环要停下来 
		}

	}
	if(left>right)
		printf("找不到\n");
	return 0;
}

3.编写代码,演示多个字符从两端移动,向中间汇聚

int main()
{
	char arr1[] = "welcome to bit!!!!!!";
	char arr2[] = "####################";
	int left = 0;
	//int right = sizeof(arr1) / sizeof(arr2[0]) - 2;//不能这么写 err  后面要减2 因为还有一个转义符 '\n'  字符串有结束标志
	//整型数组无需考虑'\0'的问题,但字符串或字符数组要考虑'\0' 
	int right = strlen(arr1)-1;//strlen是库函数,计算字符串长度 
	while (left <= right)
	{
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		printf("%s\n", arr2);
		//休息一秒 要用#include <windows.h>
		Sleep(1000);//1000毫秒 一秒
		system("cls");//执行系统命令的一个函数-cls-清空屏幕   要用#include <stdlib.h>
		left++;
		right--;

	}
	printf("%s\n", arr2);

	return 0;
}

5.编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成功,如果三次均输入错误,则退出程序。(关键是strcmp函数)


int main()
{
	int i = 0;
	char password[20] = {0};
	for (i = 0; i < 3; i++)
	{
		printf("请输入密码:");
		scanf("%s", password);
		//if (password == "123456")// == 不能用来比较两个字符串是否相等,应该使用一个库函数 -strcmp;
		//strcmp函数规定左边大于右边返回正数,左边等于右边返回0,左边小于右边返回负数  库函数头文件依然是<string.h>
			if (strcmp(password, "123456") == 0)
			{
				printf("登录成功!\n");
				break;
			}
			else
			{
				printf("登录失败\n");
			}
	}
	if (i == 3)
	{
		printf("三次密码都错误,登录失败");
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值