高级语言程序设计第四次作业

高级语言程序设计第四次作业

一、运行以下程序给出程序结果

1、

让status等于scanf的返回值,输入整数的时候scanf的返回值是1,while循环可以进行,如果输入的是q(非整数),则跳出循环计算结果。注意用==判断
image

2、

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

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

while

错误代码

image

正确代码

image

错误原因:

循环条件为 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。

代码优化

更简洁的写法:
image

do while

image

不同之处:

while循环:先判断,后执行。如果初始条件不满足,循环体可能一次都不执行。
do while:先执行,后判断。循环体至少会执行一次。(注意最后的while写完要加分号),但是它会比while循环多累加一项​(即最后那项小于10^-4的项也被加进去了)。

三、设计一个程序,实现功能:逻辑表达式中的运算符,只有会影响表达式求值时,才会执行。

image
对于逻辑与:如果左操作数为假,则不再计算右操作数,因为整个表达式已经为假
对于逻辑或:如果左操作数为真,则不再计算右操作数,因为整个表达式已经为真

四、用for循环输出六行,第一行有FEDCBA,第二行是FEDCB,第三行是FEDC....,以此类推。

思路,用for循环嵌套,(devcpp不支持在for里面声明变量)
注意,ch这时候要在第一个循环和第二个循环中间声明,如果在循环外面声明,会一直在F的基础上进行很多次ch--,而程序的目的应该是在输出每一行之前都要让ch=F;
image
image

五、编程输入n, 计算s=1+(1+2)+(1+2+3)+…+(1+2+3+4+…n)。

利用循环嵌套
image

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

用三个for循环分别执行数组的赋值,遍历和求和
image

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

if

image

switch

image

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

break

image

continue

image

遇到的错误

联想截图_20251104181119
这样不能输出1245,因为continue会跳过循环下面所有的语句包括i++,所以i就会一直停留在3,i<=5一直为真,所以会进入死循环;

不同之处

break:结束整个循环
continue:结束本次循环,进行下一次循环

九、设计一个程序求100~200间的全部素数,给出算法思想、传统流程图、程序NS流程图

image
87d6b78362fcf019de92b18a6d1ba019_720

十、编写并运行书本第6章6.16编程练习题目中的第1,5,7,10,13,16,18题。

1、

编写一个程序,创建一个包含26个元素的数组,并在其中储存26个小写字母,然后打印数组中的所有内容

错误代码

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

正确代码

image

5、打印大写字母金字塔

3620c671d88f5235334b3a9ca612576c

7、倒序打印单词

image

10、打印平方和

image

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

image

16、两种方式存利息

image

18、Rabnud博士的神秘社交圈

image

编写并运行书本第7章7.12编程练习题目中的第1,2,4~5,7题

1、读取字符数量

image

2、字符-ASCII码组合

image

4、统计替换次数

image
注意中英文输出的!不一样!🤣

5、用switch重写4

image

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

image

思考与总结

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

posted @ 2025-11-05 19:06  黄洁琳  阅读(16)  评论(0)    收藏  举报