c语言循环知识练习


例题练习

1.求某数阶乘

在理解阶乘的前提下,运用while循环知识点完成功能实现

#include<stdio.h>
#include<Windows.h>
#pragma warning(disable:4996)
int Fac(int n)
{
	int Res = 1;//定义一个Res变量初始化为1
	while (n>0)
	{
		Res = Res*n;
		n--;
	}
	return Res;//将阶乘的结果返回
}
int main()
{
	int n;
	printf("你想求几的阶乘呢?\n");
	scanf("%d", &n);
	printf("%d的阶乘为:%d\n",n, Fac(n));
	system("pause");
	return 0;
}

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

2.二分查找法

实现功能:用二分法的思想在一组有序数据中查找某一数据返回其在数组中的下标。

#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996)
int Binary_search(int arr[], int x,int len)
{
	int start = 0;//定义查找起点
	int end = len - 1;//定义查找终点
	while (start<=end)//两端是往中间移动的,当start>end时就说明把整个数组查询了个遍,等于的情况是针对只有一个元素的时候
	{
		int mid = (start + end) / 2;//mid必须放在while循环中,因为随着起点和终点的变化,密度也在所致
		if (x > arr[mid])
		{
			start = mid + 1;//当查寻值大于中间值时,因为是升序的数组,所以要查询的值应该在mid后面了,mid以及mid之前的数据被淘汰
		}
		else if (x < arr[mid])
		{
			end = mid - 1;//当查寻值小于中间值时,因为是升序的数组,所以要查询的值应该在mid前面了,mid以及mid之后的数据被淘汰
		}
		else
		{
			return mid;//即当查询值等于中间值时,找到了,我们返回中间值下标!!!
		}
	}
}
int main()
{
	int arr[10] = { 1, 2, 3, 4, 5, 11, 22, 33, 44, 55 };//定义一个升序的数组存放数据
	int flag = 0; //定义一个想要查找的数
	int len = (sizeof(arr) / sizeof(arr[0]));//计算数组的长度
	printf("请输入一个你想要查找的数:\n");//输入要查询的数字
	scanf("%d", &flag);
	printf("index:%d", Binary_search(arr, flag,len));//调用方法,传入数组和想要查找的数,输出被查数下标
	system("pause");
	return 0;
}

例如当我们查找11时:
执行结果:
在这里插入图片描述
执行流程:
在这里插入图片描述

3.数字炸弹

利用计算机生成随机数,游戏者重从键盘输入猜测数字,直到猜到为止。

#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#pragma warning(disable:4996)
void game()//定义一个游戏函数,主要存放游戏逻辑
{
	srand((unsigned long)time(NULL));//种随机数种子
	int x = rand()%100+1;
	int k = 0;
	while (1)
	{	
		scanf("%d", &k);
		if (k == x)
		{
			printf("         恭喜你猜对了!\n\n\n");
			printf("         欢迎再次游戏\n");
			break;
		}
		else if (k > x)
		{
			printf("         对不起猜大了!请重新猜测  ");
		}
		else{
			printf("         对不起猜小了!请重新猜测  ");
		}
	}
}
void Menu()//定义一个菜单函数
{
	int quit = 0;
	while (!quit)
	{
		int flag = 0;
		printf("         +------------------+\n");
		printf("         |     数字炸弹     |\n");
		printf("         |1.play      2.exit|\n");
		printf("         +------------------+\n");
		printf("         请开始你的选择: ");
		scanf("%d", &flag);
		switch (flag)
		{
			case 1:
				printf("         请输入你的猜测,区间为[0-100]  ");
				game();
				break;
			case 2:
				printf("          谢谢参与,欢迎再来!\n");
				quit = 1;
				break;
			default:
				printf("          输入有误!请重新输入\n");
				break;
		}
	}
}
int main()
{
	Menu();
	system("pause");
	return 0;
}

游戏效果:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值