do while2+练习题

dowhile 练习题

  1. 编写代码 演示多个字符从两端移动 向中间汇聚
    do while2+练习题_第1张图片
    想要达到的效果 如何实现如下‘
    要实现这个肯定有这样两句
    welcome to bit!!!
    ############
    代码实现如下
#include 
int main()
{
	char arr1[] = "welcome  to bit!!!!!!";
	char arr2[] = "#####################";
	int left = 0;
	int right = strlen(arr1) - 1;
	while (left<=right)
	{
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		printf("%s\n", arr2);
		left++;
		right--;
	}


	return 0;
}

如何让代码一行一行打印

#include 
#include//sleep 文件  让结果慢慢打印出来
int main()
{
	char arr1[] = "welcome  to bit!!!!!!";
	char arr2[] = "#####################";
	int left = 0;
	int right = strlen(arr1) - 1;
	while (left<=right)
	{
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		printf("%s\n", arr2);
		Sleep(1000);//代码一行行慢慢打印
		left++;
		right--;
	}


	return 0;
}

如何变得更完美 在一行显示 慢慢打印出来do while2+练习题_第2张图片

#include 
#include//sleep 文件  让结果慢慢打印出来
int main()
{
	char arr1[] = "welcome  to bit!!!!!!";
	char arr2[] = "#####################";
	int left = 0;
	int right = strlen(arr1) - 1;
	while (left<=right)
	{
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		printf("%s\n", arr2);
		Sleep(1000);
		system("cls");
		left++;
		right--;
	}

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

	return 0;
}

代码为什么最后又打印 因为cls会清屏

编写代码实现 模拟用户登录情景,并且只能登陆三次。(只允许输入三次密码,如果密码正确则提示登陆成,如果三次均输入错误,则推出程序。

#include //strlen   strcmp 字符串函数都引用这个   
int main()
{
	int i = 0;//假设正确的密码是字符串"1 2 3 4 5 6"
	int password[20] = { 0 };
	for (i = 0; i <3; i++)//三次循环
	{
		printf("请输入密码:>");//打印密码
		scanf("%s", password);//接收密码
		//if(password=="1 2 3 4 5 6")//错误写法  两个字符串比较不能使用==  应该用strcmp
		if (strcmp(password, "1234567")==0)//比较 password和1234567 如果相等返回0    0==0就完事
		{
			printf("登陆成功");
				break;
		}
		else
		{
			printf("密码错误,重新输入!\n");

		}
		
			
	}
	//跳出循环来到这    如果三次都输错
	if (i == 3)
		printf("密码错误超过三次,自动退出\n");

	return 0;

猜数字游戏

  1. 需求 自动产生一个1到100随机数
  2. 猜数字
    a猜对了 恭喜你游戏结束
    b猜错了 会告诉你猜大了还是猜小了,继续猜,直到猜对
  3. 游戏可以一直玩,直到退出游戏

思路:
希望上来就能玩游戏 所以采用 dowhile语句 因为do while是不管什么先执行一遍
dowhile怎么写 首先打印一个菜单 用函数打印 叫menu
menu不是库函数需要自己实现
void menu()
{

printf(*************)
}
菜单一调用 就会打印printf里的内容图案

do while2+练习题_第3张图片
上边只是简易过程 而真正的printf打印应该改成游戏函数 如下:
do while2+练习题_第4张图片
随机数第一次结束运行后 再次运行 随机数一样 这种情况解决如下
//猜数字的实现
//1生成随机数
// 2.猜数字

1生成随机苏

//猜数字游戏
//1. 需求  自动产生一个1到100随机数
//2. 猜数字
//a猜对了 恭喜你游戏结束
//b猜错了 会告诉你猜大了还是猜小了,继续猜,直到猜对
//3. 游戏可以一直玩,直到退出游戏

//思路:
//希望上来就能玩游戏  所以采用 dowhile语句  因为do while是不管什么先执行一遍
#include 
#include 
void menu()
{
	printf("****************************\n");
	printf("****************************\n");
	printf("*********1.play*************\n");
	printf("*********0.exit*************\n");
	printf("****************************\n");
	printf("****************************\n");
}
void game()//这里才是真正才是猜数字的过程
            //猜数字的实现
	         //1生成随机数
       //  2.猜数字  
	    //rand函数返回了一个0到32767之间的函数  但是数字不够随机  出现每次打开随机数相同情况
	      //所以在使用rand函数前先调用srand
{           //强制类型转换 下边
	//srand((unsigned int)time(NULL));//里边需要一个随机数才会让生成的是随机
	//   ,比如时间戳time  为什么加null  因为本来是有参数的  不想用那个参数    
	//,函数值需要一次 只需放在rand函数前 可以放在mian开始的时候  否则的生成的数字还是有可能反应慢按的快可能一样
	       
	int ret = rand()%100+1;   //最后一步  因为需要1到100  所以加个%100加1
	printf("%d\n", ret);
}
int main()
{
	srand((unsigned int)time(NULL));
	int input = 0;
	do
	{
		menu();//打印菜单
		printf("请选择:>");
		scanf("%d", &input);
			switch (input)
			{
			case 1:
				game();
					break;
			case 0:
						printf("退出游戏\n");
			default:
				printf("选择错误,重新选择\n");
					break;
			}
	} while (input);
	return 0;
}

2猜数字

//猜数字
	int guess = 0;
	while (1)
	{

		printf("请猜数字:>");
		scanf("%d", &guess);  //猜出来的数字需要存起来所以上边定义int
		if (guess < ret)
		{
			printf("猜小了\n");
		}
		else if (guess > ret)
		{
			printf("猜大了\n");
		}
		else
		{
			printf("猜对了\n");
			break;
		}
	}
}

完整代码

//猜数字游戏
//1. 需求  自动产生一个1到100随机数
//2. 猜数字
//a猜对了 恭喜你游戏结束
//b猜错了 会告诉你猜大了还是猜小了,继续猜,直到猜对
//3. 游戏可以一直玩,直到退出游戏

//思路:
//希望上来就能玩游戏  所以采用 dowhile语句  因为do while是不管什么先执行一遍
//然后game函数  生成随机数  怎么生成? 调用rand  使用rand前调用srand  srand又需要
// time 然后生成随机数   然后%100+1  一次可能踩不准用while循环猜
//
#include 
#include 
void menu()
{
	printf("****************************\n");
	printf("****************************\n");
	printf("*********1.play*************\n");
	printf("*********0.exit*************\n");
	printf("****************************\n");
	printf("****************************\n");
}
void game()//这里才是真正才是猜数字的过程
            //猜数字的实现
	         //1生成随机数
       //  2.猜数字  
	    //rand函数返回了一个0到32767之间的函数  但是数字不够随机  出现每次打开随机数相同情况
	      //所以在使用rand函数前先调用srand
{           //强制类型转换 下边
	//srand((unsigned int)time(NULL));//里边需要一个随机数才会让生成的是随机
	//   ,比如时间戳time  为什么加null  因为本来是有参数的  不想用那个参数    
	//,函数值需要一次 只需放在rand函数前 可以放在mian开始的时候  否则的生成的数字还是有可能反应慢按的快可能一样
	       
	int ret = rand()%100+1;   //最后一步  因为需要1到100  所以加个%100加1
	//printf("%d\n", ret);   第一步写完记得去掉  否则开始输出按1会输出一个数字
	//猜数字
	int guess = 0;
	while (1)
	{

		printf("请猜数字:>");
		scanf("%d", &guess);  //猜出来的数字需要存起来所以上边定义int
		if (guess < ret)
		{
			printf("猜小了\n");
		}
		else if (guess > ret)
		{
			printf("猜大了\n");
		}
		else
		{
			printf("猜对了\n");
			break;
		}
	}
}



int main()
{
	srand((unsigned int)time(NULL));
	int input = 0;
	do
	{
		menu();//打印菜单
		printf("请选择:>");
		scanf("%d", &input);
			switch (input)
			{
			case 1:
				game();
					break;
			case 0:
						printf("退出游戏\n");
			default:
				printf("选择错误,重新选择\n");
					break;
			}
	} while (input);
	return 0;
}

你可能感兴趣的:(c++,算法,java)