高级语言程序设计第四次作业
高级语言程序设计第四次作业
一、运行以下程序给出程序结果
1、
让status等于scanf的返回值,输入整数的时候scanf的返回值是1,while循环可以进行,如果输入的是q(非整数),则跳出循环计算结果。注意用==判断

2、
fabs表示取浮点数的绝对值,使用时一定要有math.h,while里面条件判断的意思是输入的值如果在0.001这个误差范围内就足够接近ANSWER了
当while里面的判断语句带浮点数时,尽量不要用==,可能会出现误差

二、用while和do while分别设计程序实现:用公式π/4=1-1/3+1/5-1/7+1/9+...求π的近似值,直到某一项的绝对值小于10-4为止,对两个程序的不同之处进行讨论。
while
错误代码

正确代码

错误原因:
循环条件为 while((1/(2i+1)) >= 1e-4)。这里的关键问题是:1和 (2i+1)都是整数,因此 1/(2i+1)执行的是整数除法,结果会截断小数部分(只保留整数部分)
当 i = 0时:2 * 0+1 = 1,1/1 = 1(整数除法)。由于 1 >= 0.0001为真,循环体被执行。
在循环体内,i % 2 == 0为真,执行 pi=pi+(1.0/(2i+1)) * 4。这里 1.0/(20+1) = 1.0,乘以4后为 4.0,所以 pi变为 4.0。
然后 i++,i变为1。
当 i = 1时:循环条件再次检查,2 * 1+1 = 3,1/3在整数除法中等于 0(因为 1除以 3的小数部分被截断)。此时 0 >= 0.0001为假,循环立即退出
循环只执行了一次,pi的值保持为 4.0,因此 printf("%lf", pi)输出 4.000000。
代码优化
更简洁的写法:

do while

不同之处:
while循环:先判断,后执行。如果初始条件不满足,循环体可能一次都不执行。
do while:先执行,后判断。循环体至少会执行一次。(注意最后的while写完要加分号),但是它会比while循环多累加一项(即最后那项小于10^-4的项也被加进去了)。
三、设计一个程序,实现功能:逻辑表达式中的运算符,只有会影响表达式求值时,才会执行。

对于逻辑与:如果左操作数为假,则不再计算右操作数,因为整个表达式已经为假
对于逻辑或:如果左操作数为真,则不再计算右操作数,因为整个表达式已经为真
四、用for循环输出六行,第一行有FEDCBA,第二行是FEDCB,第三行是FEDC....,以此类推。
思路,用for循环嵌套,(devcpp不支持在for里面声明变量)
注意,ch这时候要在第一个循环和第二个循环中间声明,如果在循环外面声明,会一直在F的基础上进行很多次ch--,而程序的目的应该是在输出每一行之前都要让ch=F;


五、编程输入n, 计算s=1+(1+2)+(1+2+3)+…+(1+2+3+4+…n)。
利用循环嵌套

六、用for循环给一组整型类型的数组进行赋值,输出,以及求和,数组长度为8。
用三个for循环分别执行数组的赋值,遍历和求和

七、设计一个if和else的多分支程序(分支数目大于3),该多分支程序再用switch语句进行改写,同时设计一个使用条件运算符(?:)的双分支语句。
if

switch

八、设计一个循环程序,再循环中用break和continue语句,实现不同的程序效果,给出结果并讨论
break

continue

遇到的错误

这样不能输出1245,因为continue会跳过循环下面所有的语句包括i++,所以i就会一直停留在3,i<=5一直为真,所以会进入死循环;
不同之处
break:结束整个循环
continue:结束本次循环,进行下一次循环
九、设计一个程序求100~200间的全部素数,给出算法思想、传统流程图、程序NS流程图


十、编写并运行书本第6章6.16编程练习题目中的第1,5,7,10,13,16,18题。
1、
编写一个程序,创建一个包含26个元素的数组,并在其中储存26个小写字母,然后打印数组中的所有内容
错误代码

原因:scanf(“%s”,arr)就不用取地址符
但是scanf("%c",&arr[i]);给的是单个字符,所以必须要有&
正确代码

5、打印大写字母金字塔

7、倒序打印单词

10、打印平方和

13、用for设置2的前8次幂的数组,用do while打印

16、两种方式存利息

18、Rabnud博士的神秘社交圈

编写并运行书本第7章7.12编程练习题目中的第1,2,4~5,7题
1、读取字符数量

2、字符-ASCII码组合

4、统计替换次数

注意中英文输出的!不一样!🤣
5、用switch重写4

7、计算工资、税收、净收入

思考与总结
我的devcpp版本太低了,不让我在for里面声明变量,后续课本的题用vs编写
本次作业完成较顺利,主要是要注意在循环哪里声明变量,避免变量的生命周期对输出造成影响
主要巩固了for的循环嵌套问题,外循环决定输出几行,内循环决定输出几列,由此可以完成正三角倒三角金字塔等图形。
plus流程图太难画了!!!!!!😫

浙公网安备 33010602011771号