[学C日记]---循环

2023-10-30

1. 计算 n的阶乘。
调用阶乘函数,三种循环
1.计算阶乘
int main()
{
	int n = 0;
	int m = 0;
	scanf("%d", &n);
	m = jiecheng(n);
	printf("%d\n", m); 
	system("pause");
	return 0;
}
int jiecheng(int n)
{
	int i = 1;
	int m = 1;
	while (i <= n)
	{
		m = m*i;
		i++;
	}
	/*do
	{
		m = m*i;
		i++;
	} while (i <= n);*/
	/*for (i = 1; i <= n; i++)
	{
		m = m*i;
	}*/
	return m;
}
2. 计算 1!+2!+3!+……+10!
两种方式,一种简单,一种复杂,时间复杂度不同
int main()
{
	int i = 0;
	int ret = 1;
	int sum = 0;
	for (i = 1; i <= 10; i++)
	{
		ret *= i;
		sum += ret;
	}
	printf("%d", sum);
	return 0;
}
int main()
{
	int i = 0;
	int n = 0;
	int ret = 1;
	int sum = 0;
	for (n = 1; n <= 10; n++)
	{
		for (i = 1; i <= n; i++)
		{
			ret *= i;
		}
		sum += ret;
		ret = 1;
	}
	printf("%d", sum);
	return 0;
}  
3. 在一个有序数组中查找具体的某个数字n。(讲解二分查找)
需要复习
int main()
{
	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	int k = 0;
	scanf("%d", &k);
	int	sz = sizeof(arr) / sizeof(arr[0]);
	int left = 0;
	int right = sz - 1;
	while (left <= right)
	{
		int mid = (right + left) / 2;
		if (arr[mid] < k)
		{
			left = mid + 1;
		}
		else if (arr[mid]>k)
		{
			right = mid - 1;
		}
		else
		{
			printf("找到了,下标是:%d", mid);
			break;
		}
	}
	if (left > right)
	{
		printf("找不到");
	}

	return 0;
}

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

休眠清屏

#include <string.h>
#include <Windows.h>
int main()
{
	char arr1[] = "happy birthday!!";
	char arr2[] = "################";
	int sz = sizeof(arr1) / sizeof(arr1[0]);
	int n = (sz / 2)-1;
	int i = 0;
	int j = 0;
	for (i = 0; i <= n; i++)
	{
		arr2[i] = arr1[i];
		arr2[sz-2 - i] = arr1[sz-2 - i];
		printf( "%s\n", arr2);
		Sleep(500);//休眠
		system("cls");//清屏
	}
	printf("%s\n", arr2);
	return 0;
}
5. 编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则 提示登录成,如果三次均输入错误,则退出程序。
比较两个字符串是否相同用strcmp(a,b)==0
int main()
{
	int i = 0;
	char arr[] = "abc";
	char p[20] = {0};
	for (i = 1; i <= 3; i++)
	{
		printf("请输入密码:");
		scanf("%s", p);//p数组本来就是地址,不用取地址
		//if (p == arr)错误,两个字符串比较不能用==应该使用strcmp 
		if (strcmp(p,arr)==0)
		{ 
			printf("登录成功\n");	
			break;
		}	
		else
		{
			if (i < 3)
				printf("密码错误,请重新输入,还有%d次机会\n", 3 - i);
			else
				printf("密码错误,今天次数已达上限\n");
		}
	}

	return 0;
}

6. 猜数字游戏实现
        
1.随机产生一个1-100之间的随机数
        2.猜数字
                a.猜对了,恭喜你游戏结束
                b.猜错了,会告诉猜大了或者猜小了,继续猜直到猜对
        3.游戏可以一直玩,除非退出
//猜数字游戏
//1.随机产生一个1-100之间的随机数
//2.猜数字
//a.猜对了,恭喜你游戏结束
//b.猜错了,会告诉猜大了或者猜小了,继续猜直到猜对
//3.游戏可以一直玩,除非退出
#include <stdlib.h>//调用rand
#include <time.h>
void game()
{
	int n = rand();
	int a = n % 100 + 1;、、将随机数控制在1-100之间
	int b = 0;
	printf("请输入一个1-100之间的数字:\n");
	do
	{
		scanf("%d", &b);
		if (b > a)
			printf("猜大了\n");
		else if (b < a)
			printf("猜小了\n");
	} while (a != b);
	printf("猜对了,Congratulation!该数是%d\n", a);
	return 0;
}
void menu()
{
	printf("***********************\n");
	printf("******  1. play  ******\n");
	printf("******  0. exit  ******\n");
	printf("***********************\n");
	return 0;
}
int main()
{	
	srand((unsigned int)time(NULL));//用时间戳获取随机数
	int input;
	do
	{
		menu();
		printf("请选择(0/1):");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			printf("开始游戏\n");
			game();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("重新输入,请输入0或1\n");
			break;
		}
	} while (input);
	

	return 0;
}

7.求两个数的最大公约数

a.普通方法

int main()
{
	int a = 0;
	int b = 0;
	int i = 0;
	scanf("%d %d", &a, &b);
	if (a > b)
		i = b;
	else
		i = a;
	for (i; i > 0; i--)
	{
		if (a%i == 0 && b%i == 0)
		{
			printf("%d\n", i);
			break;
		}
	}
	return 0;
}

b.辗转相除法:a%b=c,b%c=d,c%d=e.....m%n==0,n就是最大公因数

int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	int temp = 0;
	scanf("%d %d", &a, &b);
	/*if (b > a)
	{
		temp = a;
		a = b;
		b = temp;
	}	不需要判断ab大小a=55,b=77,c=55,a=77;b=55*/
	do 
	{
		c = a%b;
		a = b;
		b = c;
	} while (c != 0);//当括号内成立继续,不成立跳出 
	printf("%d", a);
	return 0;
}
//最小公倍数=m*n/最大公约数

8.打印100-200之间的素数

int main()
{
	int i = 0;
	int j = 2;
	for (i = 100; i <= 200; i+=2)
	{
		for (j = 2; j < i; j++)
		{
			if (i%j == 0)
				break;
		}
		if (i == j)//没想到
			printf("%d ", i);
	}
	return 0;
}

不同方法

#include <math.h>
int main()
{
	int i = 0;
	for (i = 100; i <= 200; i++)
	{
		int j = 0;
		int flag = 1;
		for (j = 2; j<=sqrt(i); j++)
		{
			if (i%j == 0)
			{
				flag = 0;
				break;
			}				
		}
		if (flag)//没想到
			printf("%d ", i);
	}
	return 0;
}
//初始定义flag=1应在循环里定义
//m=a*b
//a,b之间一定至少有一个数字是<=m开平方sqrt()

9.控制电脑关机

int main()
{
	char input[20] = { 0 };
	system("shutdown -s -t 120");
	while (1)
	{
		printf("请注意,你的电脑将在两分钟内关机,想取消请输入:秋秋最漂酿\n");
		scanf("%s", input);
		if (strcmp(input, "秋秋最漂酿") == 0)
		{
			system("shutdown -a");
			break;
		}
	}	
	return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[学C日记]---循环 的相关文章

  • Windows下如何构建和发布Python模块

    转自 http blog sciencenet cn blog 800737 649292 html 1 首先将你要发布的模块 函数 写在一个Python文件里 即以 py的文件 如nester py文件 该文件内容即为你要发布的函数 2
  • RestClient操作文档和DSL查询语法

    一 文档操作 1 新增文档 本案例中 hotel为索引库名 61083为文档id Test void testAddDocument throws IOException 1 根据id查询酒店数据 Hotel hotel hotelServ
  • jQuery Custom PopUp Window

  • Mongo6.0 分片集群搭建

    Mongo6 0 分片搭建 6 5 1 分片 配置config server replica set 配置Shard Replica Sets 配置 mongos for the Sharded Cluster 分片设置 Range分区 H
  • 替代notepad++最优选择之一:vscode

    notepad 作者作妖不是一次两次了 实际上我的一些体制内或者有要求的大公司的朋友 都又在要求替换notepad 我之前没有选择替换notepad 主要是习惯了其操作方式和插件化 很多同类的工具一般有以下三类毛病 1 收费 2 功能少 不
  • 钉钉桌面版(dingtalk)介绍:支持Linux、Windows和macOS平台

    钉钉桌面版 dingtalk 介绍 支持Linux Windows和macOS平台 钉钉桌面版 dingtalk 它基于electron及钉钉网页版开发的跨平台桌面版钉钉 支持Linux Windows和macOS平台 以下是关于钉钉桌面版
  • Flutter网络请求与JSON解析

    本文介绍如何在Flutter中创建HTTP网络请求和对请求的json string进行类型解析 网络请求 官方使用的是用dart io中的HttpClient发起的请求 但HttpClient本身功能较弱 很多常用功能都不支持 建议使用di

随机推荐

  • 深度学习框架选择

    介绍 开源已经成为一种深度学习框架能否流行的唯一途径 如果你有需要 上GitHub就可以找到他们的源码和文档 深度学习框架比较 Keras 受到 Torch 启发 Keras 提供了简单易用的 API 接口 特别适合初学者入门 其后端采用
  • docker --help 命令

    Usage docker COMMAND A self sufficient runtime for containers Options config string Location of client config files defa
  • 系统安装部署系列教程(一):安装原版系统镜像

    电脑在使用过程中难免遇到问题 其中最万能 并不是一定有用 的一种方法就是重装系统了 很多人都不会安装系统 有时候甚至需要付费让别人来安装 其实安装系统这个过程并不算太难 我会慢慢向大家介绍安装系统的各种方法 首先要说的第一种自然是安装原版系
  • 超好用的pdf编辑+pdf转word工具 – Adobe Acrobat Pro DC下载

    Adobe Acrobat DC 是一款 PDF 的处理工具 下面我来给大家说一说这款软件相关内容 Adobe Acrobat Pro DC 是一款由 Adobe 官方推出的 PDF 编辑和阅读软件 是目前互联网上最专业最优秀的桌面 pdf
  • JavaScript中为什么0.1+0.2 不等于 0.3?

    1 问题现状 0 1 0 2 0 3 这个等式的成立看起来是理所当然的 然而事实并非如此 这个属于JS运算中精度的缺失问题 所以0 1 0 2 0 3 2 问题原因 因为计算机硬件存储数据时 是以二进制 10101010 形式进行存储的 所
  • oceanbase的数据视图

    文章目录 一 OceanBas 系统视图 1 1 字典视图 1 1 1 Help 命令 1 1 2 SPM 相关 1 1 3 权限相关 1 1 4 调度程序 1 1 5 存储相关 1 1 6 时区相关 1 1 7 字符集 1 1 8 表和列
  • Spring Boot日志详解

    目录 1 日志的抽象与实现 2 配置文件 2 1 application properties 2 2 application properties与logback spring xml的优先级 3 logback spring xml标签
  • golang的xml解析

  • 第五章 变形

    文章目录 一 长宽表的变形 1 pivot 2 pivot table 练一练 END 3 melt 4 wide to long 二 索引的变形 1 stack与unstack 2 聚合与变形的关系 三 其他变形函数 1 crosstab
  • Vue.js的组件(一)全局组件和局部组件

    刚开始学习Vue js 记录下心得 所谓组件 在我看来 就相当于新建一个属于自己的标签 但是这个标签的功能很强大 可以有很多特殊的功能 组件可以全局声明 js Vue component my component button1 templ
  • 环县计算机培训班,庆阳中职学校排名前十

    甘肃省庆阳市西峰区陇东职业中等专业学校建于1988年 是一所国家级重点职业学校 中德合作项目学校 学校位于庆阳市西峰区董志镇南街 毗邻庆阳市南区开发区 市内1路公交车南终点站 交通便利 环境优美 学校占地面积152亩 校舍建筑面积3 62万
  • 教你如何实现带复选框的ComboBox(自定义QComboBox)

    Qt提供的QComboBox只能选择其中一个选项 无法实现同时选中多个 而实际工程项目中 下拉框中带复选框的需求比比皆是 阅读了网上大量的博客 但是没有发现一个能完美的实现该功能的ComboBox 都存在各种未解决的bug缺陷 样子是那么回
  • 央企数字化转型实践思考

    01 数字化转型的内涵与价值效益 数字化转型是顺应新一轮科技革命和产业变革趋势 不断深化应用云计算 大数据 物联网 人工智能 区块链等新一代信息技术 激发数据要素创新驱动潜能 打造和提升信息时代的生存与发展能力 加速业务优化升级和创新转型
  • Python爬虫:如何下载汽车之家的数据(完整代码)

    欢迎来到我的博客 作者 秋无之地 简介 CSDN爬虫 后端 大数据领域创作者 目前从事python爬虫 后端和大数据等相关工作 主要擅长领域有 爬虫 后端 大数据开发 数据分析等 欢迎小伙伴们点赞 收藏 留言 关注 关注必回关 一 确定目标
  • C语言 项目 CRM系统(客户信息管理系统)

    项目目标 项目需求说明 系统界面 1 添加客户界面 通过编号来区分客户 2 删除客户界面 对用户输入的编号进行核查 存在与否 合法与否 3 显示客户列表界面 4 修改客户信息的界面 项目设计 Customer结构体的设计 CRM系统结构框架
  • 基于机器学习方法对销售预测的研究

    很高兴 InfoQ 团队和 百分点大数据学院 牵头举办此次活动 百分点大数据学院 是由百分点发起的大数据领域专业 开放的分享交流平台 通过定期举办线上线下活动 邀请大数据领域学术专家 技术领袖 企业高层 分享行业 技术 应用等方面最前沿的经
  • PowerMock(一):PowerMock的基本使用

    文章目录 为啥要使用PowerMock PowerMock的使用 环境 引入依赖 注解说明 mock普通方法 mock抛出异常 mock新建对象 mock无返回值的方法 mock被final修饰的方法 参数模糊匹配 mock静态方法 moc
  • 下载安装office2019

    Hello 大家好 我是小喵 支付宝搜索 321994 领红包喽 前几天答应给大家写一篇关于安装激活Office2019的文章 一直在准备 准备制作GIF动图 制作图片等 把我电脑上的Office反复安装卸载 折腾的不像样子 终于 功夫不负
  • 在B端供应链上,看见企业增长的「密码」

    在被疫情重塑的B端市场里 在这个新的产业互联时代 发展的新答案到底是什么 作者 皮爷 出品 产业家 2022年中秋节 一款特殊的牛奶让伊利再次在B端市场破圈 在人们司空见惯的牛奶包装上 青花瓷的样本图案清晰可见 典雅大气 蓝白相间之中充斥着
  • [学C日记]---循环

    1 计算 n的阶乘 调用阶乘函数 三种循环 1 计算阶乘 int main int n 0 int m 0 scanf d n m jiecheng n printf d n m system pause return 0 int jiec