栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C语言】分支和循环语句的应用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C语言】分支和循环语句的应用

1. 计算n的阶乘
#include 

int main()
{
	int i = 1;
	int n = 0;
	int ret = 1;
	
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		ret = ret * i;
	}
	printf("%dn", ret);

	return 0;
}
2. 计算1!+2!+3!+...+10!
#include 

int main()
{
	int i = 1;
	int n = 0;
	int ret = 1;
	int sum = 0;

	for (n = 1; n <= 10; n++)
	{
	    ret = ret * n;
		sum = sum + ret;
	}
	printf("%dn", sum);
		
	return 0;
}
3. 二分(折半)查找法
//在一个1-10的有序数组中查找数字7

#include

int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int k = 7;
	int sz = sizeof(arr) / sizeof(arr[0]);//计算数组元素个数
	int left = 0;
	int right = sz - 1;

	while (left <= right)
	{
		//int mid = (left + right) / 2;当数值太大可能出现溢出问题
		int mid = left + (right - left) / 2;//不会出现溢出问题

		if (arr[mid] < k)
		{
			left = mid + 1;
		}
		else if (arr[mid] > k)
		{
			right = mid - 1;
		}
		else
		{
			printf("找到了,下标是:%dn", mid);
			break;
		}
	}
	if (left > right)
		printf("找不到n");

	return 0;
}
4. 演示多个字符从两端移动,向中间汇聚
#include
#include //windows头文件
#include //standard library 标准库头文件

int main()
{
	char arr1[] = "Welcome to JLU!!!!";
	char arr2[] = "##################";
	int left = 0;
	//int right = sizeof(arr1)/sizeof(arr1[0])-2;sizeof算
	int right = strlen(arr1) - 1;//strlen不算

	while (left <= right)
	{
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];

		printf("%sn", arr2);

		//程序休眠1000ms
		Sleep(1000);//Sleep()是一个库函数,头文件是window.h

		//清空屏幕(clear screen)
		system("cls");//system()是一个库函数,执行系统命令,头文件是stdlib.h

		left++;
		right--;
	}

	printf("%sn", arr2);

	return 0;
}

运行结果:

W################!

↓(时间间隔1000ms)

We##############!!

↓(时间间隔1000ms)

Wel############!!!

↓(时间间隔1000ms)

Welc##########!!!!

↓(时间间隔1000ms)

Welco########U!!!!

↓(时间间隔1000ms)

Welcom######LU!!!!

↓(时间间隔1000ms)

Welcome####JLU!!!!

↓(时间间隔1000ms)

Welcome ## JLU!!!!

↓(时间间隔1000ms)

Welcome to JLU!!!!

↓(时间间隔1000ms)

Welcome to JLU!!!!

5. 最多只能输入三次密码
//最多只能输入三次密码,密码正确则提示登录成功,三次均输入错误,则退出程序。
//假设密码是字符串:abcdef。

#include
#include 

int main()
{
	int i = 0;
	char password[20] = { 0 };

	for (i = 0; i < 3; i++)
	{
		printf("请输入密码:>");
		scanf("%s", password);

		//比较两个字符串不能使用==,应该使用一个库函数strcmp(),头文件是string.h
		if (strcmp(password, "abcdef") == 0)//如果返回值是0,那么两个字符串相等
		{
			printf("登陆成功n");
			break;
		}
		else
		{
			printf("密码错误n");
		}
	}
	if (3 == i)
	{
		printf("三次密码均输入错误,退出程序n");
	}

	return 0;
}
6. 猜数字游戏
//游戏流程:
//1.产生1-100的随机数
//2.猜数字
//猜大了
//猜小了
//直到猜对了,结束

//rand()函数、srand()函数和time()函数介绍:
//rand()是一个库函数,可以产生0-32767的随机数,头文件是stdlib.h
//rand()在产生随机数前,需要系统提供的生成伪随机数序列的种子,根据种子值产生随机数
//如果种子没有变化,每次调用rand()函数生成的伪随机数序列都是一样的
//srand(unsigned int seed)通过参数seed改变系统提供的种子值,头文件是stdlib.h
//通常可以利用系统时间来改变系统的种子值,即srand((unsigned int)time(NULL))
//rand()放在循环内,srand()放在循环外
//time()函数返回当前时间的Unix时间戳,头文件是time.h
//Unix时间戳是指从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数

#include
#include
#include

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

void game()
{
	int guess = 0;
	//1. 生成1-100的随机数
	int ret = rand()%100+1;//rand()%100表示生成0-99的随机数,再+1表示生成1-100的随机数
	//2. 猜数字
	while (1)
	{
		printf("请猜数字:>");
		scanf("%d", &guess);
		if (guess < ret)
		{
			printf("猜小了n");
		}
		else if (guess > ret)
		{
			printf("猜大了n");
		}
		else
		{
			printf("恭喜你,猜对了n");
			break;
		}
	}
}

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

	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/847177.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号