高级语言程序第四次作业

这个作业属于哪个课程 2025高级语言程序设计
这个作业的要求在哪里 高级语言程序第四次作业
学号 102300317
姓名 李东阳

运行程序截图:
1、
image

2、
image

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

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

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

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

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

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

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

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

传统流程图:
开始

i = 100

i <= 200? → 否 → 结束
↓是
j = 2, flag = 1

j <= sqrt(i)? → 否 → 输出i
↓是
i % j == 0? → 是 → flag = 0, break
↓否
j++

回到j循环判断

i++

回到i循环判断

NS流程图:
┌─────────┐
│ 开始 │
└─────────┘

┌─────────┐
│ i = 100 │
└─────────┘

┌─────────────────┐
│ i <= 200 ? │←──┐
└─────────────────┘ │
↓是 │
┌─────────┐ │
│ j = 2 │ │
│ flag=1 │ │
└─────────┘ │
↓ │
┌─────────────────┐ │
│ j <= sqrt(i) ? │←┐ │
└─────────────────┘ │ │
↓是 │ │
┌─────────────────┐ │ │
│ i % j == 0 ? │ │ │
└─────────────────┘ │ │
↓是 ↓否 │ │
┌───────┐ j++ ──────┘ │
│flag=0 │ │
│ break │ │
└───────┘ │
↓ │
┌─────────────────┐ │
│ flag == 1 ? │ │
└─────────────────┘ │
↓是 │
┌─────────┐ │
│ 输出 i │ │
└─────────┘ │
↓ │
i++ ────────────────┘

算法思想:
遍历100到200之间的所有整数

对每个数,检查是否能被2到其平方根之间的任何整数整除

如果不能被任何数整除,则该数是素数

第6章编程练习:
1、
image

image

5、
image
image

7、
image
image

10、
image
image

13、
image
image

16、
image
image

18、
image
image

第7章编程练习:
1、
image
image

2、
image
image

4、
image
image

5、
image
image

7、
image
image
image

思考:
通过编写这一系列C语言程序,我对程序设计有了更深入的理解和思考,现将主要收获总结如下:
一、输入输出的复杂性与缓冲区管理
核心认知:输入输出看似简单,实则隐藏着复杂的边界情况。
具体体会:

  1. 缓冲区问题:在字符替换程序中,最初忽略了换行符的影响,导致替换计数为0。这让我认识到getchar()会读取所有输入字符,包括换行符。
  2. 用户交互设计:程序不仅要功能正确,还要考虑用户的使用习惯。比如在工资计算程序中,清晰的提示信息和格式化的输出大大提升了用户体验。
  3. 错误处理:完善的程序应该能够处理异常输入,如大写字母金字塔程序中对输入范围的检查。
    技术收获:
    掌握了getchar()scanf()等输入函数的特点
    学会了使用continue跳过不需要处理的字符
    理解了标准输入的行缓冲机制
    二、循环结构的灵活运用与选择
    核心认知:不同的循环结构各有适用场景,正确选择能提升代码质量和效率。
    具体体会:
  4. while vs do-while:在π的计算程序中,while循环更自然,因为需要先判断条件;而在数组显示程序中,do-while确保至少执行一次。
  5. 循环嵌套:字母金字塔程序展示了嵌套循环的强大,外层控制行数,内层控制每行的字符输出。
  6. 终止条件设计:平方和计算程序通过while (scanf() == 2 && lower < upper)巧妙处理了多种退出情况。
    技术收获:
    掌握了break和continue在循环控制中的精确使用
    学会了通过循环计数器控制输出格式
    理解了循环效率优化(如素数判断中的j <= sqrt(i)
    三、算法思维与数学建模
    核心认知:程序设计本质上是将实际问题转化为计算机可执行的算法。
    具体体会:
  7. 数学模型建立:投资比较程序将金融概念转化为迭代计算模型,清晰展示了单利与复利的区别。
  8. 算法优化:累加和计算从双重循环优化到数学公式,性能大幅提升。
  9. 问题抽象:Rabnud博士的朋友增长问题,将社交现象抽象为数学规律。
    技术收获:
    学会了从实际问题中提取数学模型
    理解了时间复杂度与空间复杂度的概念
    四、从具体到抽象的思维提升
    通过这一系列程序的编写,我实现了几个重要的思维转变:
  10. 从面向过程到面向问题:不再仅仅关注语法细节,而是首先分析问题本质。
  11. 从实现功能到优化体验:在保证正确性的基础上,考虑程序的易用性和健壮性。

总结
这些程序设计练习不仅巩固了C语言的语法知识,更重要的是培养了计算思维和问题解决能力。每个程序都像是一个小型的工程项目,从需求分析、算法设计、代码实现到测试调试,完整地体验了软件开发的各个环节。这种从理论到实践的转化过程,让我对程序设计有了更深刻和全面的理解。
程序设计既是科学也是艺术——科学在于其严谨的逻辑和算法,艺术在于其优雅的实现和用户体验的考量。这种双重属性正是编程吸引人的魅力所在。

posted @ 2025-11-10 19:41  102300317-李东阳  阅读(0)  评论(0)    收藏  举报