C Primer Plus 第6章——第一篇

news2024/9/28 17:30:54

你该逆袭了

第6章:重点摘录

  • 零、本章内容介绍
  • 一、while 循环
    • 1、程序注释
      • (1)伪代码
    • 2、C 风格读取循环
  • 二、while 语句
    • 1、终止 while 循环
    • 2、语法要点
  • 三、用 关系运算符 和 表达式 比较大小
    • 1、fabs( ) 函数 比较 浮点数
      • (1) fabs( ) 函数
    • 2、什么是 真?
    • 3、_Bool 类型
    • 4、优先级 和 关系运算符

零、本章内容介绍

1、关键字:for、while、do while
2、运算符:<、>、>=、<=、!=、==、+=、*=、-=、/=、%=
3、函数:fabs( )
4、C 语言有 3 中循环:for、while、do while
5、使用 关系运算符 构建 控制循环 的表达式
6、其他运算符
7、循环常用的数组
8、编写有返回值的函数

一、while 循环

1、程序注释

//P137 程序清单6.1 
//根据用户键入的整数求和

#include <stdio.h>

int main()
{
	long num = 0;
	long sum = 0;
	int status = 0L;    //尽管C编译器会把 0 自动转换为合适的类型,
	                    //但是为了保持程序的一致性,我们把 sum 初始化为 0L (long 类型),而不是 0 (int 类型)

	printf("please enter an integer to be summed ");
	printf("(q to quit):");    
	status = scanf("%ld", &num);
	while (status == 1)
	{
		sum = sum + num;
		printf("please enter next integer (q to quit):");  //因为输入的字符不是数字(如,q) 
		                                                   //scanf( )会读取失败并返回 0 .此时,status 的值就是 0,循环结束。
		                                                   //因为输入的字符 q 不是数字,所以它会被放回输入队列
		                                                   //实际上,不仅仅是 q ,任何非数值的数据都会被导致循环终止
		status = scanf("%ld", &num);
	}
	printf("those integers sum to %ld.\n", sum);

	return 0;
}

(1)伪代码

优点:把注意力集中在程序的组织和逻辑上,不用再设计程序时还要分心如何用编程语言来表达自己的想法。
在这里插入图片描述

2、C 风格读取循环

同时使用scanf( )的两种不同的特性。
首先,如果函数调用成功,scanf( )会把一个值存入 num。
然后,利用 scanf( ) 的返回值(0或1,不是 num 的值)控制 while 循环。

while (scanf("%ld", &num) == 1)
{
	/*循环行为*/
}

在这里插入图片描述

二、while 语句

1、终止 while 循环

#include <stdio.h>

int main()
{
	int index = 1;
	
	while (--index < 5)
	{
		printf("haha\n");  //会打印很多个 haha 
	}                      //index 减少到其类型到可容纳的最小负值变成最大正值时会终止循环

	return 0;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
整数溢出:P49
在这里插入图片描述
在这里插入图片描述

2、语法要点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、用 关系运算符 和 表达式 比较大小

在这里插入图片描述

while (ch != '$')      //可以比较单个字符,
{                      //但是,不可以用关系运算符比较“字符串”,
	                   //第十一章,会介绍如何比较字符串
	count++;
	scanf("%c", &ch);  
}

1、fabs( ) 函数 比较 浮点数

虽然 关系运算符 可以用来 比较浮点数,但是要注意:比较 浮点数 时,尽量使用 大于号 ‘ > ’ 和 小于号 ’ < '。因为,浮点数 的 舍入误差 会导致 在逻辑上应该相等的两个数却不相等。例如:3 乘以 1/3 的积是 1.0。如果用把 1/3 表示成 小数点后面 6 位数字,乘积则是:0.999999,不等于 1 。
使用 fabs( ) 函数(声明在 math.h 头文件中)可以方便地比较浮点数,该函数返回一个浮点值地绝对值(即,没有代数符号的值)。

//P144 程序清单6.5 
//浮点数的比较

#include <stdio.h>
#include <math.h>        //fabs() 函数的头文件

int main()
{
	const double ANSWER = 3.14159;
	double response = 0;

	printf("what is the value of pi?\n");
	scanf("%lf", &response);
	while (fabs(response - ANSWER) > 0.0001)    // 比较浮点数尽量使用  >   <
	{                                           // 使用 fabs( ) 函数
		printf("try again\n");
		scanf("%lf", &response);
	}
	printf("close enough\n");

	return 0;
}

(1) fabs( ) 函数

语法格式:double fabs (double x);
功能:计算绝对值

#include <stdio.h>      /* printf */
#include <math.h>       /* fabs */

int main()
{
	printf("The absolute value of 3.1416 is %f\n", fabs(3.1416));     //3.141600
	printf("The absolute value of -10.6 is %f\n", fabs(-10.6));       //10.600000
	return 0;
}

2、什么是 真?

0 是 假
非0 是 真

在这里插入图片描述

3、_Bool 类型

布尔变量:表示 真 或 假 的变量。
_Bool 是布尔变量的 类型名。
_Bool 类型 只能读取 1 或 0。
如果把其他非零数值赋给_Bool 类型的变量,该变量被设置为 1。

//P148 程序清单6.9
//使用_Bool 类型的变量 variable

#include <stdio.h>

int main()
{
	long num = 0L;
	long sum = 0L;
	_Bool input_is_good;

	printf("please enter an integer to be summed ");
	printf("(q to quit): ");
	input_is_good = (scanf("%ld", &num) == 1);  //(scanf("%ld",&num) == 1) 括起来(从优先级方面考虑,虽然没必要),但是可以提高代码的可读性
	while (input_is_good)                             
	{
		sum = sum + num;
		printf("please enter next integer (q to quit): ");
		input_is_good = (scanf("%ld", &num) == 1);
	}
	printf("those integers sum to %ld.\n", sum);

	return 0;
}

C99 提供头文件 stdbool.h ,让 bool 成为 _Bool 的别名

#include <stdio.h>
#include <stdbool.h>    //C99 提供该头文件,让 bool 成为 _Bool 的别名

int main()
{
	long num = 0L;
	long sum = 0L;
	bool input_is_good;     //让 bool 成为 _Bool 的别名

	printf("please enter an integer to be summed ");
	printf("(q to quit): ");
	input_is_good = (scanf("%ld", &num) == 1);
	while (input_is_good)
	{
		sum = sum + num;
		printf("please enter next integer (q to quit): ");
		input_is_good = (scanf("%ld", &num) == 1);
	}
	printf("those integers sum to %ld.\n", sum);

	return 0;
}

4、优先级 和 关系运算符

在这里插入图片描述

x = y + 2;   // 相当于 x=(y+2)
x_bigger = x > y;  // 相当于 x_bigger = (x > y)

ex != wye == zee;  // != 和 == 的运算符 优先级 相同
                   // 结合律是 从左往右
                   // 相当于:(ex != wye) == zee

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

世界人口过亿的一级行政区分布

世界国人口已经突破80亿&#xff0c;人口过亿的国家也有14个&#xff0c;分别是中国、俄罗斯、巴西、墨西哥&#xff0c;美国、日本、印度、巴基斯坦、印度尼西亚、尼日利亚、孟加拉国、埃塞俄比亚、菲律宾、埃及。 那么作为国家的一级行政区人口过亿的区域有那些呢?这里就来…

返璞归真:通过简化用例来简化用户界面01

Larry Constantine 著harvey 译 我们常被问及精简那些最简化、抽象和通用窗体用例的重要性。到底有多重要呢&#xff1f;在以用户为 中心的设计中&#xff0c;简化那些重要窗体的用例是获得成功的关键。它能够为开发者设计优秀的用户界面 助一臂之力。通过消除不必要的或技术驱…

书籍推荐-给数字化、PLM制造从业同行推荐的几本书

基础入门和提升的书籍&#xff1a; 1.《制造企业的产品数据管理--原理、概念、策略》&#xff0c;作者&#xff1a;[德]约瑟夫萧塔纳著&#xff0c;祁国宁译 这是一本很基础&#xff0c;但是也非常经典的企业实施PDM管理价值和方法的书籍&#xff0c;大概出版于2001年&#x…

@Component 注解高端玩法【策略模式】

优质博文&#xff1a;IT-BLOG-CN 在Spring框架中&#xff0c;Component注解本身并不支持直接通过注解参数来定义一个key值。不过&#xff0c;你可以通过自定义注解和Qualifier注解来实现类似的功能。 以下是一个示例&#xff0c;展示如何通过自定义注解和Qualifier来实现将不同…

芯片行业ERP相比于传统ERP到底有什么区别

在数字化发展时代&#xff0c;ERP系统已成为企业管理和运营的重要工具。然而&#xff0c;在高度正规化的芯片行业中&#xff0c;传统ERP系统往往难以满足其独特的业务需求。本文将带大家一起来探讨芯片行业ERP与传统ERP之间的主要区别。 1. 专业化与定制化需求 芯片行业ERP系统…

【教资 · 科目二】教育知识与能力

【教资 科目二】教育知识与能力 官网&#xff1a;https://ntce.neea.edu.cn/ ‍ 题型 教育学&#xff1a;1、2、3、7、8&#xff08;前&#xff09; 心理学&#xff1a;4、5、6、8&#xff08;后&#xff09; ​ ​ 黄色&#xff1a;重点 蓝色&#xff1a;次重点 灰色…

C++商店管理系统

代码中使用了C11的特性 后面有些输出(cout输出的)的提示文本是英文&#xff0c;因为懒得敲中文 源码在最后面 文末投票参与一下谢谢 商品数据保存在 items.txt 用户数据保存在 users.txt 实现功能 1.添加商品&#xff08;商品ID,商品名&#xff0c;库存数量&#xff0c;价格&a…

卓越运营必备神器:规划复杂项目、使用标准的项目模板,看Minitab Workspace!

可确保过程与产品卓越性的可视化工具 您是否知道Minitab Workspace是专门为Minitab统计软件配套而设计的&#xff1f; 您和您的团队或许会面临以下相关问题: 1) 在规划复杂项目上存在困难&#xff0c;如业务优化项目; 2) 因完成工作需要而使用多种未知品牌的产品; 3) 缺乏…

Python 设计模式之抽象工厂模式

文章目录 从一个例子谈起抽象工厂模式的组件构成根据抽象工厂模式实现抽象工厂模式的缺点 抽象工厂模式属于创建型设计模式&#xff0c;一般用来创建复杂的对象&#xff0c;这种对象由许多小对象组成&#xff0c;这些小对象都属于某个特定的类别。 从一个例子谈起 常见的例子是…

springboot企业人力资源管理系统-计算机毕业设计源码29005

目录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 2.2.5 修改信息流程 2.2.6 删除信息流程 2.3 系统功能…

【Windows 11 】Missing Customize FOlder OPtion 文件夹右键自定义消失

突然发现win11 无法修改文件夹的默认图标原来是因为没有自定义选项了。微软有人问&#xff0c;大神解决了这个问题 右键缺少的是自定义这个标签 自定义长这样子&#xff1a; HKEY_CLASSES_ROOT\Directory\shellex\PropertySheetHandlers 下已经有了 {ef43ecfe-2ab9-4632-bf21…

uniapp 让同一个子组件重新加载

给子组件添加不同的 “key” 值&#xff0c;当 key 值改变时&#xff0c;Vue 会认为这是一个不同的组件&#xff0c;并重新创建它

C语言——贪吃蛇游戏

用c语言在window环境的控制台中模拟写出贪吃蛇小游戏。 一.要实现的基本的功能 如下&#xff1a; 贪吃蛇的地图绘制 贪吃蛇吃食物的功能&#xff08;方向控制蛇的动作&#xff09; 贪吃蛇撞墙死亡判断 贪吃蛇撞自己死亡判断 计算得分 贪吃蛇的速度 暂停游戏 二 贪吃蛇的铺垫准…

【HTML入门】第二十二课 - 【实战】做一个注册页面

这一小节&#xff0c;我们继续纯HTML标签的使用&#xff0c;这一节我们做一个 注册页面。说到注册页面&#xff0c;其实大家的网站都大同小异&#xff0c;所以我们就不四处去找设计图了&#xff0c;我们自己想一个注册页面&#xff0c;想想注册页面都应该有哪些元素&#xff0c…

探究全局代理是什么?有什么作用?

今天&#xff0c;我们来聊聊一个经常被提及但很多人不太了解的概念——全局代理。那么&#xff0c;全局代理到底是什么&#xff1f;它有什么用&#xff1f;以及如何正确使用呢&#xff1f;接下来&#xff0c;小编就带大家一探究竟&#xff01; 什么是全局代理&#xff1f; 通俗…

360联合国内15个最强大模型推出“AI助手”碾压GPT4o!全球首部《人工智能法案》正式生效!|AI日报

文章推荐 GPT-4o版「Her」终于来了&#xff01;英伟达股价两周内下跌23%&#xff01;&#xff5c;AI日报 Apple Intelligence将在今年10月推出&#xff1f;AI毛绒玩具BubblePal回答人类幼崽十万个为什么&#xff01;&#xff5c;AI日报 今日热点 360放大招&#xff1a;联合…

Rodin来袭,AI建模再填猛将

AI建模&#xff0c;AI绘图&#xff0c;Rodin,人工智能&#xff0c;Stable Diffusion, Stable Diffusion,midjourney,Bing AI等人工智能在绘图界掀起腥风血雨&#xff0c;外界一致认为将取代原画师&#xff0c;但是真正的原画师却感觉良好&#xff0c;他们认为&#xff1a;“AI…

Unable to clear output directory

Bug信息 Exception in thread "main" java.io.IOException: Unable to clear output directory hdfs://xxx/warehouse/hive/xx.db/xxx prior to writing to itat org.apache.spark.sql.execution.datasources.InsertIntoHadoopFsRelationCommand.deleteMatchingPart…

“智绘未来,慧聚南京”2024南京智博会

“智慧城市”一个听起来颇具未来感的词汇&#xff0c;在如今的南京市已逐步成为现实。在5G、物联网、人工智能、大数据等新一代信息技术的支撑下&#xff0c;南京市正逐渐变成一个可感知可“思考”的智能体&#xff0c;智慧社区、智慧医疗、智慧交通、智慧政务等数字化、智能化…

Flink-StarRocks详解:第六部分-即席查询大案例解析(第56天)

系列文章目录 数仓场景&#xff1a;即席查询案例 6.1 场景介绍 6.2 方案架构 6.3 方案特点 6.4 操作流程 6.4.1 步骤一&#xff1a;创建MySQL源数据表 6.4.2 步骤二&#xff1a;创建StarRocks表 6.4.3 步骤三&#xff1a;执行Flink任务&#xff0c;启动数据流 6.4.4 步骤四&am…