热门标签 | 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;
}

在这里插入图片描述


推荐阅读
  • 一,关于C语言的问卷调查【作业3】1.你对自己的未来有什么规划?做了哪些准备?没有明确的规划,在学习教材知识的同时准备了解其他知识。2.你认为什么是学 ... [详细]
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • 《2017年3月全国计算机等级考试二级C语言上机题库完全版》由会员分享,可在线阅读,更多相关《2017年3月全国计算机等级考试二级C语言上机题库完全版( ... [详细]
  • c语言基础编写,c语言 基础
    本文目录一览:1、C语言如何编写?2、如何编写 ... [详细]
  • 利用空间换时间减少时间复杂度以及以C语言字符串处理为例减少空间复杂度
    在处理字符串的过程当中,通常情况下都会逐个遍历整个字符串数组,在多个字符串的处理中,处理不同,时间复杂度不同,这里通过利用空间换时间等不同方法,以字符串处理为例来讨论几种情况:1: ... [详细]
  • 深入理解计算机系统之链接(一)
    程序是怎样运行的写好的c程序怎样运行的呢?答案是一个写好的程序要先经过语言预处理器,编译器,汇编器和链接器生成最后的可执行文件,然后加载器将可执行文件加载到内存中才能运行。这里以一 ... [详细]
  • c语言 怎么访问64位地址_C语言调动硬件的原理是什么?
    大家都知道我们可以使用C语言写一段程序来控制硬件工作,但你知道其工作原理吗?1c语言在实际运行中,都是以汇编指令的方式运行的,由编译器把C ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • VSCode快速查看函数定义和代码追踪方法详解
    本文详细介绍了在VSCode中快速查看函数定义和代码追踪的方法,包括跳转到定义位置的三种方式和返回跳转前的位置的快捷键。同时,还介绍了代码追踪插件的使用以及对符号跳转的不足之处。文章指出,直接跳转到定义和实现的位置对于程序员来说非常重要,但需要语言本身的支持。以TypeScript为例,按下F12即可跳转到函数的定义处。 ... [详细]
  • 本文介绍了使用Rust语言编写、保存和编译程序的简单步骤。首先,打开记事本文件并编写程序代码,然后将代码保存到一个以.rs为扩展名的文件中。接下来,使用rustc命令来编译运行程序。最后,通过命令行运行编译后的程序,得到输出结果。如果遇到编译错误,可以下载Build Tools for Visual Studio 2017来解决。 ... [详细]
  • C语言自带的快排和二分查找
    Author🚹:CofCaiEmail✉️:cai.dongjunnexuslink.cnQQ😙:1664866311personalPage&#x ... [详细]
  • C语言的经典程序有哪些
    本篇内容介绍了“C语言的经典程序有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何 ... [详细]
  • 查找给定字符串的所有不同回文子字符串原文:https://www ... [详细]
  • C语言学习笔记—链表(二)链表的静态添加及动态遍历
    链表的静态添加及动态遍历我们知道数组中的数据存储是有序的,而链表中的数据是无序的但是存在某种联系使之组成链表。那么我们如果向一组数据中添加一个数据元素, ... [详细]
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社区 版权所有