作业信息
这个作业属于哪个课程 | <班级的链接>(如2024-2025-1-计算机基础与程序设计) |
---|---|
这个作业要求在哪里 | <作业要求的链接>(如2024-2025-1计算机基础与程序设计第八周作业) |
这个作业的目标 | <写上具体方面> 计算机科学概论(第七版)第9章 并完成云班课测试,《C语言程序设计》第7章并完成云班课测试 |
作业正文 | ... 本博客链接 |
教材学习内容总结
《计算机科学概论(第七版)》第9章主要内容如下:
-
程序设计语言范型:
- 命令式范型:
- 面向过程:以过程为中心,将程序看作一系列按顺序执行的步骤,注重解决问题的具体流程。
- 面向对象:以对象为基础,把现实世界中的事物抽象成对象,通过对象之间的交互来解决问题。对象包含数据(属性)和操作数据的方法(行为),具有封装、继承、多态等特性。
- 声明式范型:
- 函数式模型:强调使用函数来进行计算和编程,函数被视为一等公民,可以作为参数传递、返回值或存储在数据结构中。函数式编程避免了可变状态和副作用,注重函数的组合和变换。
- 逻辑编程:基于逻辑推理的编程范式,程序由一系列逻辑规则和事实组成,通过逻辑推理引擎来求解问题。
- 命令式范型:
-
高级程序设计语言的功能性:
- 布尔表达式:用于表示逻辑条件,是程序中进行条件判断和控制流程的基础。
- 数据归类:涉及到数据的类型和分类,不同的数据类型有不同的操作和存储方式,程序设计语言需要提供相应的数据类型来支持对各种数据的处理。
- 输入/输出结构:程序与外部世界进行交互的方式,包括从用户获取输入和向用户输出结果,以及与文件、网络等外部设备进行数据交换。
- 控制结构:用于控制程序的执行流程,如顺序结构、选择结构(如 if 语句)、循环结构(如 for 循环、while 循环)等。
-
面向对象语言的功能性:
- 封装:将数据和操作数据的方法封装在一个类中,对外隐藏内部的实现细节,只提供公共的接口供外部访问,提高了代码的安全性和可维护性。
- 类:是对象的模板或蓝图,定义了对象的属性和方法,通过类可以创建多个具有相同属性和行为的对象。
- 继承:子类可以继承父类的属性和方法,并可以在此基础上进行扩展和修改,实现了代码的复用和扩展。
- 多态:不同类的对象可以对同一消息做出不同的响应,增加了程序的灵活性和可扩展性。
-
过程设计与面向对象设计的区别:
- 过程设计:侧重于解决问题的具体步骤和过程,将问题分解为一系列的函数或过程,通过函数的调用来实现程序的功能。
- 面向对象设计:更关注问题中的对象及其相互关系,将问题域中的实体抽象成对象,通过对象之间的消息传递和协作来解决问题。
在《C语言程序设计》教材中,第7章内容总结
- 数组的定义和声明
- 一维数组:介绍一维数组的基本语法。例如,
int arr[5];
定义了一个名为arr
的整型数组,它可以存储5个整数。数组的下标从0开始,所以可以通过arr[0]
、arr[1]
等访问数组中的元素。 - 二维数组:
int matrix[3][4];
定义了一个3行4列的二维整型数组。它在内存中是按行存储的,访问元素时使用双下标形式,如matrix[1][2]
表示访问第2行(下标从0开始)第3列的元素。
- 一维数组:介绍一维数组的基本语法。例如,
- 数组的初始化
- 一维数组初始化:可以在定义数组时进行初始化,如
int arr[3] = {1, 2, 3};
,也可以部分初始化,如int arr[5]= {1, 2};
,此时未初始化的元素会被自动初始化为0(对于全局数组和静态数组)或不确定的值(对于局部数组)。 - 二维数组初始化:例如,
int matrix[2][3]={{1,2,3},{4,5,6}};
- 一维数组初始化:可以在定义数组时进行初始化,如
- 数组在内存中的存储方式
- 一维数组:在内存中是连续存储的,元素之间的地址是连续的。例如,对于
int arr[5];
,如果arr
的首地址是0x1000
,那么arr[1]
的地址可能是0x1004
(假设int
类型占4个字节)。 - 二维数组:对于二维数组,它的行与行之间也是连续的。比如对于
int matrix[3][4];
,可以把它看作是一个包含3个元素的一维数组,每个元素又是一个包含4个整数的一维数组(注意:二维数组的列不可以省略)。
- 一维数组:在内存中是连续存储的,元素之间的地址是连续的。例如,对于
- 数组作为函数参数
- 当数组作为函数参数时,实际上传递的是数组的首地址。
例如
int Readscore(int score[],int n);
其中,n代表了score数组的下标
- 当数组作为函数参数时,实际上传递的是数组的首地址。
基于AI的学习
代码调试中的问题和解决过程
问题:在输入每个学生的成绩时,输出记录输入学生的人数时,与实际不相符
解决过程:要将i进行初始化为-1。
int Readscore(int score[],long num[])
{
int i=-1;
do
{
i++;
printf("\nInput score and num:");
scanf("%d%ld",&score[i],&num[i]);
}while(score[i]>=0);
return i;
}
上周考试错题总结
上周进行了一次小测验,一共五道题,但结果不尽人意,出现了很多错误。
错误1:如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则A和B称为亲密数。求10000以内的亲密数。
在运行时无法输出结果
原因:无法正确求出某一个整数的全部因子。同时,在最后比计算全部因子的和并做出比较时,存在许多语法问题。
#include <stdio.h>
int main()
{
int a, b, i, n;
for (a = 1; a < 10000; a++)
{
b = 0;
for (i = 1; i <= a / 2; i++)
{
if (a % i == 0)
b += i;
}
n = 0;
for (i = 1; i <= b / 2; i++)
{
if (b % i == 0)
n += i;
}
if (n == a && a < b)
printf("(%4d,%4d)\n", a, b);
}
return 0;
}
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第五周 | 900/1500 | 1/2 | 20/20 | |
第六周 | 1100/1600 | 1/4 | 18/38 | |
第七周 | 1300/1800 | 1/7 | 22/60 | |
第八周 | 1400/2000 | 1/9 | 30/90 |