热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C语言程序设计(第4版)课后练习题第三章:顺序程序设计

练习环境windows10VisualStudio2017习题3.3三种基本结构N-S流程图用以下流程图符号。(1)顺序结构。顺序结构用图3.4形式表示。表示执行完A操作后,接

练习环境
windows 10 Visual Studio 2017

习题
3.3

三种基本结构

N-S流程图用以下流程图符号。
(1)顺序结构。顺序结构用图3.4形式表示。表示执行完A操作后,接着执行B操作。
在这里插入图片描述

(2)选择结构。选择结构用图3.5表示。当p条件成立时执行A操作,p不成立则执行B操作。
在这里插入图片描述

图3.2可以改用N-S流程图表示,如图3.6所示。

在这里插入图片描述

(3)循环结构。循环结构可用图3.7形式表示。图3.7表示当p1条件成立时反复执行A操作,直到p1条件不成立为止。
在这里插入图片描述

输出1到10的算法,用N-S流程图表示如图3.8所示。它的流程与图3.3相同。
在这里插入图片描述

顺序结构

(1)顺序结构。各操作步骤是顺序执行的,如图3.10所示,虚线框内是一个顺序结构。其中A和B两个框是顺序执行的,即在执行完A框所指定的操作后,必然接着执行B框所指定的操作。顺序结构是最简单的一种基本结构。

在这里插入图片描述

选择结构

(2)选择结构。选择结构又称为判断结构或分支结构&#xff0c;根据是否满足给定的条件而从两组操作中选择- -种操作,如图 3.11所示。虚线框内是一个选择结构。此结构中必包含一个判断条件p(以菱形框表示)&#xff0c;根据给定的条件p是否成立而选择执行A组操作或B组操作。p所代表的条件可以是x<0或x>y,a&#43;b

在这里插入图片描述

循环结构

(3)循环结构。它又称为重复结构,即在一定条件下反复执行某一部分的操作。图3.13所示的就是一-种循环结构。执行过程是:当给定的条件p成立时&#xff0c;执行A操作,执行完A后,再判断条件p是否成立,如果仍然成立,再执行A,如此反复执行A,直到某一次p条件不成立为止,此时不执行A,而脱离循环结构。
在这里插入图片描述

在这里插入图片描述

例3.1 先后输出几个字符&#xff08;putchar&#xff09;

putchar的作用是输出字符变量c的值

#include int main()
{char a, b, c; //定义三个字符型变量a &#61; &#39;B&#39;, b &#61; &#39;O&#39;, c &#61; &#39;Y&#39;;//putchar &#61; put characterputchar(a); //向显示器输出字符Bputchar(b);putchar(c);putchar(&#39;\n&#39;);return 0;
}

运行结果
在这里插入图片描述

变更

#include int main()
{int a, b, c; //定义三个整型变量a &#61; 66, b &#61; 79, c &#61; 89;//putchar &#61; put characterputchar(a); //向显示器输出字符Bputchar(b);putchar(c);putchar(&#39;\n&#39;);return 0;
}

运行结果
在这里插入图片描述

结论: putchar©中的c可以是字符变量或整型变量(其值在字符的ASCII码范围内)&#xff0c;当然也可以是字符常量或整型常量,如putchar( ‘B’)或putchar( 66)。


例子3.2 用getchar输入字符

#include int main()
{char a, b, c;a &#61; getchar();b &#61; getchar();c &#61; getchar();putchar(a);putchar(b);putchar(c);putchar(&#39;\n&#39;);return 0;
}

运行结果
&#xff08;输入BOY&#xff0c;输出BOY&#xff09;
在这里插入图片描述

说明:在用键盘输入信息时,并不是在键盘上敲一个字符,该字符就立即送到计算机中的。这些字符先暂存在键盘的缓冲器中,只有按了Enter 键才把这些字符一起输入到计算机中,按先后顺序分别赋给相应的变量。

输入一个字符后马上按Enter&#xff0c;会发生什么&#xff1f;
运行结果

第二种情况&#xff0c;打两个字母出两个字母在这里插入图片描述

注意:第1行输入的不是一个字符B,而是两个字符: B和换行符&#xff0c;其中字符B赋给了变量a,换行符赋给了变量b。第2行接着输入两个字符: O和换行符,其中字符O赋给了变量c&#xff0c;换行符没有送入任何变量。在用putchar函数输出变量a,b,c的值时,就输出了字符B,然后输出换行&#xff0c;再输出字符O,然后执行putchar(’\n’),换行。

改写

#include int main()
{putchar(getchar());putchar(getchar());putchar(getchar());putchar(&#39;\n&#39;);return 0;
}

在这里插入图片描述
第二种情况&#xff0c;打一个出一个字母
在这里插入图片描述

例子3.3 用printf函数输出字符数据

#include int main()
{char c &#61; &#39;a&#39;;int i &#61; 97;printf("c&#61;%c,c&#61;%d\n", c, c);printf("i&#61;%c,i&#61;%d\n", i, i);return 0;
}

运行结果
在这里插入图片描述

例子&#xff1a;3.4 分析输出实数时的有效位数

#include
int main()
{float a, b;a &#61; 111111.111; b &#61; 222222.222;printf("%f\n",a&#43;b);return 0;
}

运行结果

这个结果有误差&#xff0c;只有前7为数字是有效数字&#xff0c;后面几位有误差&#xff0c;因为float 型数据的存储单元只能容纳6~7位有效数字&#xff0c;因此实际上a,b中并不能存入给出的9位有效数字。a&#43;b 也只能保证6-7位的精度。%f 格式输出的有效位数一般为16位&#xff0c;给出小数6位。

在这里插入图片描述

例子3.5 输出双精度数时的有效位数

#include
int main()
{double a, b;a &#61; 11111111.11111111; b &#61; 22222222.22222222;printf("%f\n", a &#43; b);return 0;
}

运行效果

a和b是双精度变量&#xff0c;能提供16位精度&#xff0c;但是由于用%f 格式输出&#xff0c;只能输出6位小数。所以我们可以看到有两位小数呗忽略了&#xff0c;后面可以看下3.9节的指定输出数值的宽度和小数位数的方法。

在这里插入图片描述

例子3.6 用scanf函数输入数据

scanf&#xff08;格式控制&#xff0c;地址列表&#xff09; &a&#xff0c;&代表是地址运算符&#xff0c;&a 指的是变量。

#define _CRT_SECURE_NO_WARNINGS
#include
int main()
{ int a, b, c;scanf("%d%d%d", &a, &b, &c);printf("a&#61;%d,b&#61;%d,c&#61;%d\n", a, b, c);return 0;
}

运行效果

输入数据中间用以空格分隔
内存中的地址。上面scanf函数的作用是:读人a,b,c的值并存放到变量a,b,c的存储单元中( &a,&.b, &.c指出变量a,b,c在内存中的地址)

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

  • 这里特别要注意一下格式控制&#xff0c;如果在“格式控制字符串”中除了格式声明以外还有其他字符,则在输入数据时在对应位置应输入与这些字符相同的字符。scanf("%d %d", &a, &b); 由于在两个%d间有两个空格&#xff0c;因此在输入时&#xff0c;两个数据间应有两个或更多的空格字符。


例子3.7 输入三角形的三个边长&#xff0c;求三角形面积

(1)输人三角形的三个边长a,b,c。为简单起见&#xff0c;假设这三个边能构成三角形(如果不能确定这三边能否构成-一个三角形,应先检查此条件是否成立。在学习了第4章“选择结构程序设计”后&#xff0c;就可以进行检查了)。
(2)确定从三个边长求三角形面积的方法。从中学数学知识可以知道求三角形面积的公式为:
在这里插入图片描述
(3)输出计算出的三角形面积area。

#include
#include //调用sqrt函数
int main()
{ double a, b, c, s,area;scanf("%lf,%lf,%lf", &a, &b, &c); //输入三角形的三个边值s &#61; (a &#43; b &#43; c) / 2.0; //计算sarea &#61; sqrt(s*(s - a)*(s - b)*(s - c)); //计算三角形面积areaprintf("a&#61;%f\nb&#61;%f\nc&#61;%f\narea&#61;%f\n", a, b, c, area); //输出结果return 0;
}

运行结果
在这里插入图片描述

例子3.8 从键盘输入一个大写字母&#xff0c;要求改写小写字母输出。

#include
int main()
{ char c1, c2;c1 &#61; getchar();printf("%c,%d\n", c1, c1);c2 &#61; c1 &#43; 32;printf("%c,%d\n", c2, c2);return 0;
}

在这里插入图片描述

优化输入三个大写字母&#xff0c;输出相应的三个小写字母

#include
int main()
{ printf("%c", getchar() &#43; 32);printf("%c", getchar() &#43; 32);printf("%c\n", getchar() &#43; 32);return 0;
}

此程序没有定义字符变量,在执行printf函数过程中输入一个大写字母,不赋给变量。由于getchar丽数的值就是刚输人的字符,因此加32就得到相应的小写字母的ASCII码,用格式声明“%c”进行输出,就输出了该小写字母&#xff0c;也可以用putchar丽数输出

#include
int main()
{ putchar(getchar() &#43; 32);putchar(getchar() &#43; 32);putchar(getchar() &#43; 32);putchar(&#39;\n&#39;);return 0;
}

例3.9 求ax2&#43;bx&#43;c&#61;0方程的根。a、b、c. 由键盘输人&#xff0c;设b2-4ac>0。

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

#include
int main()
{ double a, b, c, disc, x1, x2, p, q;scanf("a&#61;%lf,b&#61;%lf,c&#61;%lf", &a, &b, &c); //输入双精度数要用格式声明%lfdisc &#61; b * b - 4 * a * c;p &#61; -b / (2 * a);q &#61; sqrt(disc) / (2 * a);x1 &#61; p &#43; q;x2 &#61; p - q;printf("x1&#61;%5.2f\nx2&#61;%5.2f\n", x1, x2);return 0;
}

运行结果

注意此程序未优化&#xff0c;在第4章后可以用if来检查该程序是否可以有两个实根。
在这里插入图片描述


例子3.10 有符号整数赋值给无符号整型变量&#xff0c;数据会失真

#include
int main()
{ unsigned short a;short int b;b &#61; -1;a &#61; b;printf("%u\n", a);return 0;
}

运行结果

2的16次方-1

在这里插入图片描述

例子3.11无符号整数赋值给有符号整型变量

#include
int main()
{ unsigned short int a;short int b;a &#61; 65535;b &#61; a;printf("%d\n", b);return 0;
}

在这里插入图片描述

例子3.12无符号数据的输出


#include
int main()
{ unsigned short a &#61; 65535; //变量a最右边的16个二进制的值全是1short int b &#61; -2;printf("a&#61;%d,%o,%x,%u\n", a, a, a, a);printf("b&#61;%d,%o,%x,%u\n", b, b, b, b);return 0;
}

运行结果
在这里插入图片描述

例子3.13字符串的输出

#include
int main()
{ printf("%3s,%7.2s,%.4s,%-5.3s\n", "CHINA", "CHINA", "CHINA", "CHINA");return 0;
}

运行结果

在这里插入图片描述

例子3.14输出实数时指定输出两位小数

#include
int main()
{ float f &#61; 123.456;printf("%f %10f %10.2f %.2f %-10.2f\n", f, f, f, f, f);return 0;
}

运行效果
在这里插入图片描述

例子3.15求3个圆的周长&#xff0c;输出结果时上下按小数点对齐&#xff0c;取两位小数

#define PI 3.1415926
#include
int main()
{ double r1 &#61; 1.53, r2 &#61; 21.83, r3 &#61; 123.71, s1, s2, s3;s1 &#61; 2.0 * PI * r1;s2 &#61; 2.0 * PI * r2;s3 &#61; 2.0 * PI * r3;printf("r1&#61;%10.2f\nr2&#61;%10.2f\nr3&#61;%10.2f\n", r1, r2, r3);return 0;
}

在这里插入图片描述


推荐阅读
  • 1、字符型常量字符型常量指单个字符,是用一对单引号及其所括起来的字符表示。例如:‘A’、‘a’、‘0’、’$‘等都是字符型常量。C语言的字符使用的就是 ... [详细]
  • KMP算法是一种高效的字符串模式匹配算法,能够在不进行回溯的情况下完成匹配,其时间复杂度为O(m+n),其中m和n分别为文本串和模式串的长度。本文将详细介绍KMP算法的工作原理,并提供C语言实现。 ... [详细]
  • 探讨 HDU 1536 题目,即 S-Nim 游戏的博弈策略。通过 SG 函数分析游戏胜负的关键,并介绍如何编程实现解决方案。 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
  • 本文介绍了一种基于选择排序思想的高效排序方法——堆排序。通过使用堆数据结构,堆排序能够在每次查找最大元素时显著提高效率。文章详细描述了堆排序的工作原理,并提供了完整的C语言代码实现。 ... [详细]
  • 深入剖析JVM垃圾回收机制
    本文详细探讨了Java虚拟机(JVM)中的垃圾回收机制,包括其意义、对象判定方法、引用类型、常见垃圾收集算法以及各种垃圾收集器的特点和工作原理。通过理解这些内容,开发人员可以更好地优化内存管理和程序性能。 ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
  • 序列化与反序列化是数据处理中的重要技术,特别是在网络通信和数据存储中。它们允许将复杂的数据结构转换为可传输或存储的格式,再从这些格式恢复原始数据。本文探讨了序列化与反序列化的基本概念,以及它们在不同协议模型中的角色。 ... [详细]
  • 本文详细探讨了Java命令行参数的概念、使用方法及在实际编程中的应用,包括如何通过命令行传递参数给Java程序,以及如何在Java程序中解析这些参数。 ... [详细]
  • 俗话说得好,“工欲善其事,必先利其器”。这句话不仅强调了工具的重要性,也提醒我们在任何项目开始前,准备合适的工具至关重要。本文将介绍几款C语言编程中常用的工具,帮助初学者更好地选择适合自己学习和工作的编程环境。 ... [详细]
  • Win10 UWP 开发技巧:利用 XamlTreeDump 获取 XAML 元素树
    本文介绍如何在 Win10 UWP 开发中使用 XamlTreeDump 库来获取和转换 XAML 元素树为 JSON 字符串,这对于 UI 单元测试非常有用。 ... [详细]
  • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
  • 本文介绍了如何在 C# 和 XNA 框架中实现一个自定义的 3x3 矩阵类(MMatrix33),旨在深入理解矩阵运算及其应用场景。该类参考了 AS3 Starling 和其他相关资源,以确保算法的准确性和高效性。 ... [详细]
  • yikesnews第11期:微软Office两个0day和一个提权0day
    点击阅读原文可点击链接根据法国大选被黑客干扰,发送了带漏洞的文档Trumps_Attack_on_Syria_English.docx而此漏洞与ESET&FireEy ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
author-avatar
你可知马羔_523
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有