for,while,do while循环练习

  1. 求n的阶乘

    #include<stdio.h>
    int main()
    {
    	int i = 0;
    	int n = 0;
    	int ret = 1;
    	scanf("%d", &n);
    	for (i = 1; i <= n; i++)
    	{
    		ret *= i;
    	}
    	printf("%d\n", ret);
    	return 0;
    }

  2. 计算1!+2!+...+10!

    int main()
    {
    	int n = 0;
    	int sum = 0;
    	int ret = 1;
    	for (n = 1; n <= 10; n++)
    	{
    		ret *= n;
    		sum += ret;
    	}
    	printf("%d", sum);
    	return 0;
    }
    //或者
    int main()
    {
    	int i = 0;
    	int n = 0;
    	int sum = 0;
    	int ret = 1;
    	for (n = 1; n <= 10; n++)
    	{
    		int ret = 1;//计算n阶乘之前,把ret初始为1
    		for (i = 1; i <= n; i++)
    		{
    			ret =ret * i;
    		}
    		sum = sum + ret;
    	}
    	printf("%d", sum);
    	return 0;
    }

    3.在一个有序数组中查找具体的某个数字n

    //二分查找
    int main()
    {
    	int arry[10] = { 10,20,30,40,50,60,70,80,90,100 };
    	int size = sizeof(arry)/sizeof(arry[0]);//数组元素的个数
    	int k = 70;//要查找的数
    	int left = 0;//左下标
    	int right = size - 1;//右下标
    	while (left <= right)
    	{
    		int mid = (left + right) / 2;
    		if (arry[mid] < k)
    		{
    			left = mid + 1;
    		}
    		else if (arry[mid] > k)
    		{
    			right = mid - 1;	
    		}
    		else
    		{
    			printf("要查找的数下标为:%d", mid);
    			break;
    		}
    			
    		if (left > right)
    		{
    			printf("要查找的数不存在\n");
    		}
    	}
    
    	return 0;
    }

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

    #include <string.h>
    #include <windows.h>
    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);//睡眠1s
    		system("cls");//清空屏幕
    		left++;
    		right--;
    	}
    	printf("%s\n", arr2);
    	return 0;
    }

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

    #include <string.h>
    int main()
    {
    	//假设密码是字符串"fch122525"
    	int i = 0;
    	char password[10] = { 0 };
    	for (i = 0; i < 3; i++)
    	{
    		printf("请输入密码:\n");
    		scanf("%s", password);
            //两个字符串比较不能使用==,strcmp()函数用于比较两个字符串
    		if (strcmp(password, "fch122525") == 0)
    		{
    			printf("登陆成功\n");
    			break;
    		}
    		else
    			printf("输入错误\n");
    	}
    	if (i == 3)
    	{
    		printf("三次密码输入错误,退出程序\n");
    	}
    	return 0;
    
    }

猜数字游戏

游戏规则:

  1. 自动产生一个1-100之间的随机数

  2. 用户进行猜数字

    • 猜对了,就恭喜你,游戏结束

    • 猜错了,会提示猜大了还是猜小了,继续猜,直到猜对

  3. 游戏可以一直玩,除非退出游戏

#include <stdlib.h>  //rand()
#include<time.h>//time()
void game()
{
	//产生1-100之间的随机数
	int ret = rand()%100+1;//%100的余数是0-99,然后加一,范围就是1-100
    //猜数字
	int guess = 0;
	while(1)
	{
		printf("请猜数字:\n");
		scanf("%d", &guess);
		if (guess > ret)
		{
			printf("笨蛋猜大了\n");
		}
		else if (guess < ret)
		{
			printf("笨蛋猜小了\n");
		}
		else
		{
			printf("恭喜聪明蛋猜对了\n");
			break;
		}
	}
}

void menu()
{
	printf("****************\n");
	printf("**** 1. play  *****\n");
	printf("**** 0. exit  *****\n");

}
int main()
{
	srand((unsigned int)time(NULL));
	int key = 0;
	do
	{
		menu();//打印菜单
		printf("请输入:\n");
		scanf("%d", &key);
		switch (key)
		{
		case 0:
		{
			printf("退出游戏");
			break;
		}
		case 1:
		{
			game();
			break;
		}
		default:
			printf("请输入:0/1\n");

		}
	} while (key);
	
	return 0;

}

 

rand()与srand()函数

  1. rand()函数的用法

  • rand函数,C语言中用来产生一个随机数的函数。

  • rand函数界限:stdlib.h头文件中有宏**#define RAND_MAX 0x7fff

rand产生一个0-0x7fff的随机数,即最大是32767的一个数

  • *rand函数原型*

#include <stdlib.h>
int rand(void);
  • rand函数的使用 如果想要表示一个数是从0开始到最大值的,比如说,想要产生一个0-99之间的随机数,那么用法如下

int num = rand() % 100;

如果想要产生一个数是从1开始到最大值的,比如说,想要产生一个1-100之间的随机数,那么用法如下

int num = rand() % 100 + 1;

需要注意最后+1和不+1的区别,+1的最小值是1,不+1的最小值是0

但是通常rand()产生的随机数在每次运行的时候都是与上一次相同的。例如猜字游戏,若要产生每次不同的随机数,要在调用rand()函数前,使用srand( seed )函数进行产生随机化种子,随着seed的不同,就能够产生 不同的随机数。

  1. srand()函数

srand函数是随机数发生器的初始化函数,

  • srand函数原型

void srand(unsigned int seed);
  • 当然很多时候刻意让rand()产生的随机数随机化,用时间作种子 srand(time(NULL)),这样每次运行程序的时间肯定是不相同的,产生的随机数肯定就不一样了。

  • 我们常常使用系统时间来初始化,使用time函数来获取系统时间,得到的值是一个时间戳,然后将得到的time_t类型数据转化为(unsigned int)的数,然后再传给srand函数,用法如下:

    #include <time.h>
    srand((unsigned int)time(NULL));//我们在使用rand和srand时,主要使用的就是这一种初始化方法!!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值