高级语言程序设计课程第四次个人作业
这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/gjyycx
这个作业要求在哪里: https://edu.cnblogs.com/campus/fzu/gjyycx/homework/14577
学号:102500402
姓名:林睿滢
运行以下程序给出程序结果
T1

//只要输入的不是数字程序就结束了,不一定是读到'q'才结束
T2

//π精确到小数后4位
编写并运行书本第6章6.16编程练习题目中的第1,5,7,10,13,16,18题
T1 26个小写字母

T5 字母金字塔

T7 单词倒序

T10 平方和

T13 2的前8次幂

T16 投资额

T18 邓巴数

编写并运行书本第7章7.12编程练习题目中的第1,2,4~5,7题
T1 读入字符并判断类型

T2 字符-ASCII码

//如果我读入了一个回车呢(?
//好像会打乱一行八个的格式吧(挠头)
//需要写一个(getchar()!='\n')来去掉回车咩 题目没有具体要求
T4 字符替换 if-else

T5 字符替换 switch

T7 算工资、税金、净收入

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

- 思考:
while是先判断后执行,语句至少执行0次
而do-while是先执行后判断,语句至少执行1次
但是两个写法得到的答案是一样的,说明循环的执行次数相同,但是条件语句的执行次数不一样(在程序加入了计数器进行验证)
T2 设计一个程序,实现功能:逻辑表达式中的运算符,只有会影响表达式求值时,才会执行

- 思考:
我们已知&&遇到表达式值为0将会停止,||遇到表达式值为1将会停止
第一条和第二条都停止在d==1而结果并不一样,因为后者d==1的语句前计数器多加了一次
我们凭直觉会认为第三条和第四条都会停在b==1,而实际上两条都停在了第一个++cnt,因为这个语句的返回值是1,所以得到的结果都是1
T3 用for循环输出六行,第一行有FEDCBA,第二行是FEDCB,第三行是FEDC....,以此类推

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

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

//我不知道赋值是要赋什么值(要我输入数字还是程序内赋值
T6 设计一个if和else的多分支程序(分支数目大于3),该多分支程序再用switch语句进行改写,同时设计一个使用条件运算符(?:)的双分支语句

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

- 思考:
break:遇到5直接终止循环 效果为输出1~4
continue:遇到5直接跳过 效果为输出1~10除了5以外的数
T8 设计一个程序求100~200间的全部素数,给出算法思想、传统流程图、程序NS流程图

-
算法思想:使用两层for循环
- 外层循环i遍历100~200
(优化了一下,因为除了2以外的偶数一定不会是质数,所以只遍历了100~200的奇数) - 内层循环j遍历因数
(理论范围是2~i-1 ,这里将范围优化为3~根号i取整即sqrt(i),排除2是因为偶数已经被排除,上界改为sqrt(i)可以去重减少计算量) - 使用一个标记fl来记录是否出现因数,若出现,将fl的值改为1并跳出循环,如果没有出现因数则fl的值为0,用if-else语句通过判断fl的值来确定i是否为质数(注意:内层循环开始前fl要清零)
- 外层循环i遍历100~200
-
传统流程图
![3480e633e97baf49789363da87384848]()
-
程序NS流程图
![322b26576e6afb688e0161731220de87]()
总结
本次作业主要练习了循环结构,练习了break和continue的使用,同时加入了之前学习的判断语句。涉及内容较多,我将多加巩固。


浙公网安备 33010602011771号