###C语言程序设计-----C语言学习(6)#

前言:感谢老铁的浏览,希望老铁可以一键三连加个关注,您的支持和鼓励是我前进的动力,后续会分享更多学习编程的内容。

 

 

 

一.  主干知识的学习 

 

1. while语句 

除了for语句以外,while语句也用于实现循环,而且它的适用面更广,其一般形式为:

            while(表达式)

                      循环体语句

while语句的执行流程:当表达式的值为‘真’时,循环执行,直到表达式的值为‘假’,循环中止并继续执行while的下一条语句。

下面是while语句和for语句的流程对比图:

 

注意:for语句和while语句均能实现循环。但一般情况下,如果题目中指定了循环的次数,使用for语句更加清晰,循环的4个组成部分一目了然;其他情况一般使用while语句。

 

2.do-while语句

do-while语句与上述两种循环语句略有不同,它先执行循环体,后判断循环条件。所以无论循环条件的值如何,至少会执行一次。其一般形式为:

                     do{

                           循环体语句

                      }while(表达式);

执行流程:第一次进入循环时,首先执行循环体语句,然后再检查循环控制条件,即计算表达式,若值为‘真’,继续循环,直到表达式的值为‘假’,循环结束,执行下一条语句。

do-while语句的流程图:

 

3.break语句

break语句强制循环结束,for循环中的break语句的执行流程如下图,一旦执行了break语句,循环提前结束,不再执行循环体中位于其后的其他语句。

for结构中break的作用:

 

 

4.continue语句

continue语句的作用是跳出循环体中continue后面的语句,继续下一次循环,其工作流程如图:

 

注意:continue语句与break语句的区别在于,break结束循环,而continue只是跳过后面语句继续循环。break除了可以中止循环外,还用于switch语句,而continue只能用于循环。

 

二.  具体问题中的应用 

 

问题1:用格雷戈里公式求给定度的“值。使用格雷戈里公式求 的近似值,要求精确到最后一项的绝对值小于给定精度 eps。
                                丌/4=1-1/3+1/5-1/7+····· 

源程序:

#include <stdio.h>
#include <math.h>       //用于调用绝对值函数fabs() 
int main()
{
	int denominator,flag,i;
	double eps,item,pi;   //pi用于存放累加和 
	printf("Enter eps:");  //输入所需精度 
	scanf("%lf", &eps);
	i=1;   //i表示项数 
	flag=1;  //flag用于改变符号 
	denominator=1;  //denominator表示第i项分母 
	item=1.0;  //item为第i项的值 
	pi=0;
	while(fabs(item)>=eps)  //循环条件 
	{
		pi=pi+item;  //逐项累加 
		i++;
		flag=-flag;
		denominator=denominator+2;
		item=flag*1.0/denominator;
	}
	pi=pi+item;  //加上最后一项的值 
	pi=pi*4;  //最终结果 
	printf("pi=%.6f\n", pi);  //保留6位小数 
	printf("i=%d\n", i);  //输出项数 

	return 0;
 } 

注意:这里第i项用变量item表示,一旦某一项的绝对值小于eps,就达到了所给的精度,由于最后一项的绝对值小于eps,所以最后还需要加上最后一项的值。

 

问题2:统计一个整数的位数。从键盘读入一个整数,统计该数的位数。例如,输入12534,输出5;输入-99,输出2;输入0,输出1。

源程序:

#include <stdio.h>
int main()
{
	int count,number,t_number;   //count记录整数number的位数 
	count=0;
	printf("Enter a number:");
	scanf("%d", &number);
	t_number=number;  //保护输入数据不被改变 
	if (number<0)
	{
		t_number=-t_number;  //将输入的负数转换为正数 
	}
	do
	{
		count++;  
		t_number=t_number/10;  //整除后减少一个个位数,组成一个新数 
	}
	while(t_number!=0);  //循环条件,控制循环的结束 
	printf("It contains %d digits.\n", count);

	return 0;
 } 

 

问题3:判断一个整数是否为素数。输人一个正整数 m,判断它是否为素数。素数就是只能被 1和自身整除的正整数,1 不是素数,2 是素数。

源程序:

#include <stdio.h>
#include <math.h>
int main()
{
	int i,limit,m;
	printf("Enter a number:");
	scanf("%d", &m);
	if (m<=1)  //小于等于1的不是素数 
	{
		printf("No!\n");
	}
	else if (m==2)   //2是素数 
	{
		printf("%d is a prime number!\n", m);
	}
	else
	{
		limit=sqrt(m)+1;
		for (i=2; i<=limit; i++)
		{
			if (m%i==0)  //若m能被某个i整除,则m不是素数 
			{
				break;
			}
		}
		if (i>limit)  //循环结束,说明m不能被任何一个i整除 
		{
			printf("%d is a prime number!\n", m);
		}
		else 
		{
			printf("No!\n"); 
		}
	}

	return 0;
 } 

 

感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/356564.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android 系统启动流程

依旧是带着问题再去学习 首先&#xff0c;Android是怎么启动的&#xff1f; Android服务是怎么启动的&#xff1f; Android线程是怎么切换的&#xff1f; Android ApplicationThread是怎么创建的&#xff1f; 那么接下来开始分析Android的启动流程 还是一步一图 先画一张流…

day27 回溯算法part3

39. 组合总和 中等 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限…

外汇天眼:Alpha Group International为股票回购计划拨款高达2,000万英镑

Alpha Group International plc&#xff0c;一家为企业和机构提供金融解决方案的公司&#xff0c;宣布计划启动股票回购程序&#xff0c;以购买每股面值为0.2便士的普通股。 该公司已经从其现金储备中拨款高达2,000万英镑用于回购计划。购买的普通股将被保留在公司的资本中。 …

合并有序链表---链表OJ---归并思想

https://leetcode.cn/problems/merge-two-sorted-lists/?envTypestudy-plan-v2&envIdtop-100-liked 将两个有序的链表合并为一个新的有序链表&#xff0c;那不就是和归并排序中最后合并的思想一样吗&#xff1f;只不过那里合并的是数组&#xff0c;这里合并的是链表。 首先…

数据分析入门指南:用 Python 开启数据之旅

文章目录 前言发现宝藏为什么选择 Python 进行数据分析&#xff1f;准备工作数据分析基础1. 数据加载2. 数据探索3. 数据清洗4. 数据可视化 探索更多可能性好书推荐总结 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#xff0c;方便日后回顾。…

小程序直播項目开发流程

点击登录功能&#xff0c;创建IM个人账户 以及 创建直播间群组 第一步&#xff1a;需要获取用户唯一的标识openid。 获取流程如下-点击登录按钮-通过wx.getUserProfile这个Api返回的res.userinfo信息获取用户头像昵称等-再通过wx.login的api获取用户的code-使用code再到服务器换…

【开源】基于JAVA的房屋出售出租系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 房屋销售模块2.2 房屋出租模块2.3 预定意向模块2.4 交易订单模块 三、系统展示四、核心代码4.1 查询房屋求租单4.2 查询卖家的房屋求购单4.3 出租意向预定4.4 出租单支付4.5 查询买家房屋销售交易单 五、免责说明 一、摘…

单片机学习笔记---定时器计数器(含寄存器)工作原理介绍(详解篇1)

目录 51内部定时计数器概述 定时器和计数器概念的区分 定时计数器的结构框图 定时计数器的控制字 M1和M0工作方式选择位的四种工作方式 总结 51内部定时计数器概述 先概述一下&#xff0c;51内部是有两个16位的定时计数器&#xff0c;这个16位指的是它定时计数的常数是1…

4秒读取50w行Excel数据

4秒读取50w行Excel数据 文章比较了几种常用的读取Excel的方法&#xff0c;最终发现rust库Calamine的速度最快&#xff0c;可以在4秒内读取50w行excel数据。 原文&#xff1a;Fastest Way to Read Excel in Python&#xff1a;https://hakibenita.com/fast-excel-python 我们在…

React16源码: React中处理LegacyContext相关的源码实现

LegacyContext 老的 contextAPI 也就是我们使用 childContextTypes 这种声明方式来从父节点为它的子树提供 context 内容的这么一种方式遗留的contextAPI 在 react 17 被彻底移除了&#xff0c;就无法使用了那么为什么要彻底移除这个contextAPI的使用方式呢&#xff1f;因为它…

openGauss学习笔记-209 openGauss 数据库运维-常见故障定位案例-共享内存泄露问题

文章目录 openGauss学习笔记-209 openGauss 数据库运维-常见故障定位案例-共享内存泄露问题209.1 共享内存泄露问题209.1.1 问题现象209.1.2 原因分析209.1.3 处理方法 openGauss学习笔记-209 openGauss 数据库运维-常见故障定位案例-共享内存泄露问题 209.1 共享内存泄露问题…

【Web前端实操18】粘性定位——即固定顶层内容,可以继续滚动,但是顶层内容固定,不随着一起滚动

粘性定位 1、了解 可以被认为是相对定位和固定定位的混合。元素在跨越特定阈值前为相对定位,之后为固定定位。粘性定位是指网页或移动应用程序中的一种特性,即当用户滚动页面时,某个元素能够保持在屏幕上特定位置不动,直到用户滚动到达一定位置或进行特定操作。这个特性可…

Qt无边框窗口拖拽和阴影

先看下效果&#xff1a; 说明 自定义窗口控件的无边框,窗口事件由于没有系统自带边框,无法实现拖拽拉伸等事件的处理,一种方法就是重新重写主窗口的鼠标事件&#xff0c;一种时通过nativeEvent事件处理。重写事件相对繁琐,我们这里推荐nativeEvent处理。注意后续我们在做win平…

2.3_8 多生产者-多消费者问题

2.3_8 多生产者-多消费者问题 实现思路 semaphore mutex1; //实现互斥访问盘子(缓冲区) semaphore apple0; //盘子中有几个苹果 semaphore orange0; //盘子中有几个橘子 semaphore plate 1; //盘子中还可以放多少个水果dad(){while(1){准备一个苹果;P(plate);P(mutex);把苹果放…

网络相关知识

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、相关工具3.1 network profiler/ In…

休息日的思考与额外题——链表

文章目录 前言链表知识点 一、 92. 反转链表 II二、21. 合并两个有序链表总结 前言 一个本硕双非的小菜鸡&#xff0c;备战24年秋招&#xff0c;计划二刷完卡子哥的刷题计划&#xff0c;加油&#xff01; 二刷决定精刷了&#xff0c;于是参加了卡子哥的刷题班&#xff0c;训练…

构建知识图谱:从技术到实战的完整指南

目录 一、概述二、知识图谱的基础理论定义与分类核心组成历史与发展 三、知识获取与预处理数据源选择数据清洗实体识别 四、知识表示方法知识表示模型RDFOWL属性图模型 本体构建关系提取与表示 五、知识图谱构建技术图数据库选择Neo4jArangoDB 构建流程数据预处理实体关系识别图…

详谈掼蛋两大类牌型

掼蛋中的10种牌型&#xff0c;总体上可以分为炸弹牌型系列和普通牌型两大类。炸弹牌型系列包括天王炸、同花顺和多头炸3大类&#xff1b;普通牌型系列包括单张、对子、三同张、三带二、顺子、三连对、连三张等7种牌型。 一、两类牌型的区别 炸弹牌型系列和普通牌型系列两大类有…

信创条件下的运维思考-驱动数字化转型,塑造企业未来之篇章

2024-01-14 12:59 发布于&#xff1a;山西省 运维信创&#xff1a;驱动数字化转型&#xff0c;塑造企业未来之篇章 随着信息技术的迅猛发展&#xff0c;数字化转型已成为企业生存和发展的必由之路。在数字化转型的过程中&#xff0c;运维作为企业IT的重要组成部分&#xff…

【安装指南】HBuilder X 下载、安装详细教程

目录 &#x1f33a;1. 概述 &#x1f33b;2. HBuilder X 安装包下载 &#x1f33c;3. 安装详细教程 &#x1f33a;1. 概述 HBuilder X 是一款由DCloud开发的基于Electron框架的集成开发环境&#xff08;IDE&#xff09;&#xff0c;主要用于Web和移动应用程序的开发。以下是…