2023-2024-1 20231301 《计算机基础与程序设计》第九周学习总结
2023-2024-1 20231301 《计算机基础与程序设计》第九周学习总结
作业信息
作业 | 链接 |
---|---|
作业课程 | <班级>(2023-2024-1-计算机基础与程序设计) |
作业要求 | <作业>(2023-2024-1计算机基础与程序设计第九周学习总结) |
作业目标 | <《计算机基础与程序设计》预习第十、十一章>《计算机基础与程序设计》英 《计算机基础与程序设计》中 <《C语言程序设计》预习第八章> 《C语言程序设计》 |
作业正文 | <博客>(第九周学习总结) |
学习内容总结
《计算机科学概论》第十、十一章
内存管理:了解主存中载有多少个程序以及他们的位置的动作。
进程管理:了解活动进程的信息的动作。
CPU调度:确定主存中的哪个进程可以访问CPU以便执行的动作。
逻辑地址:是指定了一个普通地址的值(对一个存储值的引用),这个地址是相对程序而不是相对主存的。
物理地址:是主存储设备中的真实地址。
固定分区法:把内存分成特定数目的分区以载入程序的方法。而不是把主存分为相同大小分区。
动态分区法:根据容纳程序的需要对内存分区的方法。
非抢先调度:当当前执行的进程自愿放弃了CPU时发生的CPU调度。
抢先调度:当操作系统决定照顾另一个进程而抢占当前执行进程的CPU资源时发生的CPU调度。
先到先服务(FCFS):非抢先,进程按照他们到达运行状态的顺序转移到CPU。
最短作业优先(SJN):非抢先,查看所有处于准备就绪状态的进程,并分派一个具有最短服务时间的。是最优的。
轮询法(Round robin):抢先,将把处理时间平均分配给所有准备就绪的进程。应用最广泛,最公平。
《C语言程序设计》第八章
数组是一组具有相同类型的变量的集合,它是一种顺序存储、随机访问的顺序表结构。
下标个数表明数组的维数。
C语言中数组的下标都是从0开始的。
点击查看代码
days[month-1]
点击查看代码
int[N] 或 Int[SIZE]
点击查看代码
scanf("%d",&n);
int score[n];
第一维的长度代表数组每一列的元素个数,第二维的长度代表数组每一行的元素个数。
二维数组占用的字节数为:第一维长度x第二维长度xsizeof(基类型)
既可以按元素初始化,也可以按行初始化。
当初始化列表给出数组全部元素的初值时,第一维的长度声明可以省略。数组第二维的长度声明永远都不能省略。
C语言中的二维数组元素在C编译程序为其分配的连续存储空间中是按行存放的。
闰年:(满足下列条件之一)
- 能被4整除,但不能被100整除
- 能被400整除
点击查看代码
((year%4==0) && (year%100!=0)) || (year%400==0)
若要把一个数组传递给一个函数,那么只要使用不带方括号的数组名作为函数实参调用函数即可。
数组作函数形参时,数组的长度可以不出现在数组名后面的方括号内,通常用另一个整型形参来指定数组的长度。
以负值作为输入结束的标记值。
学习中的问题
- 例8.2:b[5]={0}是给全部元素赋值为0还是只给第一个元素赋值为0?
C语言中,b[5]={0}会给数组b的所有元素赋值为0,而不仅仅是第一个元素。这是因为在C语言中,当我们定义一个数组时,如果在初始化时只给了部分元素赋值,那么剩余的元素会自动被初始化为0。
- 下面两组代码的区别在哪里?
点击查看代码
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
scanf("%d",&matrix[i][j]);
}
}
点击查看代码
for(i=0,j=0;i<3,j<4;i++,j++)
{
scanf("%d",&matrix[i][j]);
}
第一段代码使用了嵌套的 for 循环,外层循环控制行数,内层循环控制列数。通过这种方式,可以逐个输入矩阵中的每个元素。
在第二段代码中,for 循环的条件部分使用了逗号连接两个判断条件 i<3 和 j<4。然而,在 C 语言中,逗号运算符会依次计算两个表达式,并返回最后一个表达式的值。因此,上述代码实际上相当于 i<(3,j<4),即 j<4 这个条件并不会影响循环的执行次数,因为它只会被计算一次,而且不会对 i<3 的条件产生影响。因此这段代码只会循环一次,只会让 matrix[0][0] 被赋值。逻辑错误
- 二维数组中能不按顺序提供初值吗?
点击查看代码
int matrix[3][4] =
{
{1, 2},
{3, 4, 5},
{6}
};
- 二维数组中能实现某元素初值不确定但是不为0,用一个变量代替吗?
点击查看代码
int main()
{
int matrix[3][4];
int uncertainValue = 10;
matrix[1][2] = uncertainValue;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
- 实验3:
问题:如何实现下面功能?
(3)按成绩由高到低排出名次表;
(4)按学号由小到大排出成绩表;
解决:我采用了冒泡排序。
sortDescendingByScore()函数使用冒泡排序(Bubble Sort)对学生数组按照分数从高到低进行降序排序。
sortAscendingByNumber()函数使用冒泡排序(Bubble Sort)对学生数组按照学号从小到大进行升序排序。
之所以没有采用其他排序方式是因为学生总人数为40,数量不是很大。采用冒泡在所给数据顺利的情况下,更加方便快捷。当然有可能数据刚好完全相反,这时冒泡排序会相对较慢,但是基数40毕竟不是很大,所以可以接受。
posted on 2023-11-26 21:26 20231301周子昂 阅读(16) 评论(1) 编辑 收藏 举报