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

高级语言程序设计课程第四次个人作业
这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/gjyycx
这个作业要求在哪里: https://edu.cnblogs.com/campus/fzu/gjyycx/homework/14577
学号:102300120
姓名:覃俊源
一.运行以下程序给出程序结果(无需代码,截图程序输出结果,如有错误可自行修改)。
1.
image
说明:代码无错误,无需修改。
2.
image
说明:将 ANSWER 改为 PI,值更新为 3.1415926535(更接近真实圆周率),避免因参考值精度不足导致判断误差。
二.编写代码。
1.用while和do while分别设计程序实现:用公式π/4=1-1/3+1/5-1/7+1/9+...求π的近似值,直到某一项的绝对值小于10-4为止,对两个程序的不同之处进行讨论。
(1)while
image
说明:先初始化符号、项、π 近似值和分母,在 while 循环中,当项的绝对值不小于 1e-4 时,累加项到 π,更新分母、符号和项,最后将结果乘以 4 得到 π 近似值。
(2)do while
image
说明:初始化操作与 while 版本一致,do while 循环先执行一次循环体,再判断项的绝对值是否不小于 1e-4,后续操作同 while 版本,最终得到 π 近似值。
不同之处讨论:while 是先判断条件再执行循环体,若初始条件不满足,循环体一次都不执行;do while 是先执行循环体再判断条件,循环体至少执行一次。在此题中,初始项term=1.0满足fabs(term)>=1e-4,所以两者执行次数相同,结果也相同,但执行流程上有差异。
2.设计一个程序,实现功能:逻辑表达式中的运算符,只有会影响表达式求值时,才会执行。
image
image
说明:通过逻辑与(&&)和逻辑或(||)运算符的短路特性来演示。当逻辑与的左操作数为假时,右操作数不执行;当逻辑或的左操作数为真时,右操作数不执行。代码中通过变量a、b的变化来体现这一特性。
3.用for循环输出六行,第一行有FEDCBA,第二行是FEDCB,第三行是FEDC....,以此类推。
image
说明:定义字符串s为 "FEDCBA",通过 for 循环执行 6 次,每次输出从字符串开头截取长度为6 - i的子串,从而实现每行依次减少一个字符的效果。
4.编程输入n, 计算s=1+(1+2)+(1+2+3)+…+(1+2+3+4+…n)。
image
说明:输入整数n,定义s存储总和,sum存储每一组1+2+…+i的和。通过 for 循环从 1 到n,每次累加i到sum,再将sum累加到s,最终输出s的值。
5.用for循环给一组整型类型的数组进行赋值,输出,以及求和,数组长度为8。
image
说明:定义长度为 8 的整型数组arr和求和变量sum。第一个 for 循环给数组赋值为 1 到 8;第二个 for 循环输出数组元素并累加求和,最后输出数组和。
6.设计一个if和else的多分支程序(分支数目大于3),该多分支程序再用switch语句进行改写,同时设计一个使用条件运算符(?:)的双分支语句。
(1)if-elseif-else
image
说明:输入分数score,通过 if-elseif-else 多分支结构根据分数范围判断等级并输出。
(2)switch
image
说明:输入分数score,计算grade = score / 10,通过 switch 语句根据grade的值判断等级并输出,利用 case 穿透特性处理 90-100 分的情况。
(3)条件运算符
image
说明:输入两个整数a、b,使用条件运算符判断a和b的大小,将较大的值赋给max并输出。
7.设计一个循环程序,再循环中用break和continue语句,实现不同的程序效果,给出结果并讨论。
(1)break
image
说明:for 循环从 1 到 10,当i等于 5 时,执行 break 语句,循环立即终止,只输出 1 到 4。
(2)continue
image
说明:for 循环从 1 到 10,当i为偶数时,执行 continue 语句,跳过当前循环的后续操作,进入下一次循环,最终只输出奇数。
讨论:break 用于立即终止整个循环,循环不再执行;continue 用于跳过当前循环的剩余语句,进入下一次循环。break 改变了循环的执行次数(提前终止),continue 不改变循环次数(只是跳过某次的部分操作)。
8.设计一个程序求100~200间的全部素数,给出算法思想、传统流程图、程序NS流程图。
(1)算法思想:对于每个数n(100≤n≤200),判断其是否为素数。素数是指除了 1 和它本身外,不能被其他数整除的数。判断方法是对于n,从 2 到sqrt(n)依次判断是否能整除n,若都不能,则n是素数。
(2)传统流程图:
开始
初始化n=100
循环:若n>200,则结束;否则进入下一步
初始化isPrime=1,i=2
循环:若i>sqrt(n),则跳出循环;否则判断n%i0,若成立则isPrime=0并跳出循环;i++
若isPrime
1,则输出n
n++,返回循环判断n>200处
结束
(3)程序NS流程图
image
(4)截图
image
说明:外层 for 循环遍历 100 到 200 的每个数n,内层 for 循环从 2 到sqrt(n)判断n是否能被整除,若能则标记isPrime为 0 并跳出内层循环,若isPrime为 1 则输出n,即为素数。
9.编写并运行书本第6章6.16编程练习题目中的第1,5,7,10,13,16,18题。
(1)编写一个程序,创建一个包含26个元素的数组,并在其中存储26个小写字母。然后打印数组的所有内容。
image
说明:通过循环给数组赋值小写字母a到z,再循环打印数组所有元素。
(2)编写一个程序,提示用户输入大写字母。使用嵌套循环以下面金字塔型的格式打印字母:
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
打印这样的图形,要根据用户输入的字母来决定。例如,上面的图形是在用户输入 E 后的打印结果。
提示:用外层循环处理行,每行使用3个内层循环,分别处理空格、以升序打印字母、以降序打印字母。如果系统不使用 ASCII 或其他以数字顺序编码的代码,请参照练习3的解决方案。
image
说明:外层循环控制行数,第一个内层循环打印空格,第二个内层循环升序打印字母,第三个内层循环降序打印字母,根据用户输入的大写字母确定行数
(7)编写一个程序把一个单词读入一个字符数组中,然后倒序打印这个单词。提示: strlen ()函数(第4章介绍过)可用于计算数组最后一个字符的下标。
image
说明:使用strlen函数获取单词长度,然后通过循环从后往前打印字符实现倒序。
(10)编写一个程序,要求用户输入一个上限整数和一个下限整数,计算从上限到下限范围内所有整数
的平方和,并显示计算结果。然后程序继续提示用户输入上限和下限整数,并显示结果,直到用户输入的上限整数等于或小于下限整数为止。程序的运行示例如下:
Enter lower and upper integer limits :59
The sums of the squares from 25 to 81 is 255
Enter next set of limits :325
The sums of the squares from 9 to 625 is 5520
Enter next set of limits :55
image
说明:循环获取用户输入的上下限,当上限不大于下限时退出循环,否则通过循环计算范围内整数的平方和并打印。
(13)编写一个程序,创建一个包含8个元素的 int 类型数组,分别把数组元素设置为2的前8次幂。使用 for 循环设置数组元素的值,使用 do while 循环显示数组元素的值。
image
说明:用for循环给数组赋值 2 的前 8 次幂(利用左移运算1 << i实现),再用do while循环打印数组元素。
(16)Daphne以10%的单利息投资了100美元(也就是说,每年投资获利相当于原始投资的10%)。Deirdre以5%的复合利息投资了100美元(也就是说,利息是当前余额的5%,包含之前的利息)。编写一个程序,计算需要多少年Deirdre的投资额才会超过Daphne ,并显示那时两人的投资额。
image
说明:分别计算 Daphne 的单利和 Deirdre 的复利,循环直到 Deirdre 的投资额超过 Daphne,记录并打印所需年数和两人的投资额。
(18)
image
说明:该 C++ 代码通过循环迭代计算,最终输出满足特定条件的整数 p,核心是模拟一个递推逻辑的终止状态值。
10.编写并运行书本第7章7.12编程练习题目中的第1,2,4~5,7题。
(1)编写一个程序读取输入,读到#字符停止,然后报告读取的空格数、换行符数和所有其他字符的数量。
image
说明:循环读取字符直到遇到 '#',分别计数空格(' ')、换行符('\n')和其他字符,最后输出统计结果。
(2)编写一个程序读取输入,读到#字符停止。程序要打印每个输入的字符以及对应的 ASCII 码(十进制)。每行打印8个"字符﹣ ASCII 码"组合。建议:使用字符计数和求模运算符(%)在每8个循环周期时打印一个换行符。
image

说明:读取字符至 '#' 停止,用计数器控制每行输出 8 个 "字符 - ASCII" 组合,通过count % 8 == 0判断换行,注意空格和换行符的显示优化。
(4)使用 if else 语句编写一个程序读取输入,读到#停止。用感叹号替换句号,用两个感叹号替换原来的感叹号,最后报告进行了多少次替换。
image
说明:读取字符至 '#',用 if-else 判断:句号('.')替换为感叹号('!'),原感叹号('!')替换为两个感叹号("!!"),其他字符原样输出,最后统计替换总次数。
(5)使用 switch 重写练习4。
image
说明:逻辑与(4)一致,将 if-else 替换为 switch 语句,通过字符值匹配分支实现替换逻辑。
(7)编写一个程序,提示用户输入一周工作的小时数,然后打印工资总额、税金和净收入。做如下假设: a .基本工资=10.00美元/小时
b .加班(超过40小时)=1.5倍的时间
c .税率:前300美元为15%
续150美元为20%
余下的为25%
用# define 定义符号常量。不用在意是否符合当前的税法。
image
说明:用 #define 定义时薪、加班倍数及税率相关常量,读取工作小时数,先计算总工资(40 小时内按基本工资,超出部分按 1.5 倍),再按阶梯税率计算税金,最后输出总工资、税金和净收入(总工资 - 税金)。
三.总结和思考
通过本次作业,我明确了不同循环、分支语句的适用场景,掌握了数组操作与算法优化技巧,深化了对 C++ 基础语法的理解与应用能力。

posted @ 2025-11-10 18:28  功夫格斗广告费  阅读(4)  评论(0)    收藏  举报