循环选择练习题

学习目标:

练习题:

  1. 算1!+2!+3!+…+10!
  2. 查找有序数列下标号
  3. 从两边到中间出现字符
  4. 模拟输入密码界面(输入错误三次就不能重新输入了)
  5. 猜数字游戏
  6. 60s关机

学习内容:

  1. 算1!+2!+3!+…+10!
int main()
{
	int x=1;
	int y=1;
	int sum = 0;
	for (x; x <= 10; x++)
	{
		y = y * x;
		sum = y + sum;

	}
	printf("%d", sum);


	return 0;
}
  1. 查找有序数列下标号
int main()
	{
		int n =10;
		int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	
		int left= arr[0];
		int right = arr[9];
		int mid=(left+right)/2;
		if (n == 10)
		{
			printf("下标为9");
		}
		else
		{

			while (n != mid)
			{
				if (n < mid)
				{
					right = mid;
					mid = (left + right) / 2;

				}
				else if (n > mid)
				{
					left = mid;
					mid = (left + right) / 2;

				}
				else
					break;

			}

			printf("下标为%d", n - 1);
			
		}
		
		return 0;
	}
  1. 从两边到中间出现字符
#include<windows.h>//为了调用Sleep(500);
#include<string.h>
#include<stdlib.h>//为了调用system("cls");
	int main()
	{
		
		char arr[100] = { "asdfghjklaihan,knvoahadjgalgjxkaai" };
		char arr1[100] = { "************************************" };
		int end = strlen(arr);//用来计算字符串的字符个数
		int left = 0;//最左侧的字符下标号固定为0
		int right = end-1;//最右侧的字符下标号是(字符个数-1)
		while (left<=right)
		{
			printf("%s\n", arr1);
			arr1[left] = arr[left];
			arr1[right] = arr[right];
			left++;
			right--;
			Sleep(500);//延迟500毫秒进行下一步,需要<windows.h>头文件
			system("cls"); //该函数是用于调用电脑里的cmd,并执行cls,来清除界面。此处可以用来达到动画效果。
		}
		printf("%s", arr);
		return 0;
	}

  1. 模拟输入密码
#include<stdio.h>
#include<string.h>//为了调用strcmp(arr, passwords)比较arr和passwords两个字符串是否相等
			int main()
			{
				int i;
				char passwords[10] = { "asdfg" };
				char arr[10] = { 0 };
			
		
				for (i = 0; i < 3; i++)

				{
					printf("请输入密码");
					scanf("%s", arr);
					if (strcmp(arr, passwords) != 0)//比较两个字符串是否相等
					{
						printf("密码错误,请重新输入");


					}

					else
					{
						printf("欢迎");
						break;
					}
				}
					if (i == 3)
					{
						printf("错误三次,明天再试");
					
					}
		
			
				return 0;

			}
  1. 猜数字游戏
#include<stdio.h> 
#include<time.h>//用于使用时间戳
#include<stdlib.h>//用于调用srand函数
void mute() //做一个菜单界面
{
	printf("*******************\n");
	printf("*******1.play******\n");
	printf("*******0.exit******\n");
	printf("*******************\n");

}

void play()//游戏
{
	int guess = 0;
	int ret = rand() % 100 + 1;
	do {
		printf("猜数字\n");
		scanf("%d", &guess);
		if (ret > guess)
		{
			printf("猜小了\n");
		}
		else if (ret < guess)
		{
			printf("猜大了\n");
		}
		else
		{
			printf("猜对了\n");
		}
	} 
	while (ret != guess);
}

int main()
{
	int input = 0;
	//srand函数是用来生成随机数的,但是想要用srand函数生成随机数,就需要给他一个随机数,也就是给他一个时间戳。
	//由于srand函数里面放的数的类型为“unsigned int”,但time函数返回的值的类型为“time_t”,所以在time前面用(unsigned int)进行类型强行转换。
	//srand((unsigned int)time(NULL));必须放在主函数里面,以保证数字足够随机。
	srand((unsigned int)time(NULL));
	do {
		mute();
		printf("请选择1/0\n");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			play();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("输入错误\n");
			break;
		}
	} while (input);
	return 0;
}

  1. 60s关机,除非输入“我是猪”
#include<stdio.h> 
#include<stdlib.h>
#include<string.h>

int main()
{
	char pass[] = { "我是猪" };
	char arr[] = { 0 };
	system("shutdown -s -t 60");
	a://用这种格式来做符号,用于goto找到跳出的位置
	printf("请输入:");
	scanf("%s",arr);
	if (strcmp(pass, arr)==0)
	{
		system("shutdown -a");

	}
	else
	{
		printf("再试试");
		goto a;//跳出到a:/goto不能跨函数执行
	}
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值