• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

twilight0966

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

2023-2024-1 20231301 《计算机基础与程序设计》第九周学习总结

2023-2024-1 20231301 《计算机基础与程序设计》第九周学习总结

作业信息

作业 链接
作业课程 <班级>(2023-2024-1-计算机基础与程序设计)
作业要求 <作业>(2023-2024-1计算机基础与程序设计第九周学习总结)
作业目标 <《计算机基础与程序设计》预习第十、十一章>《计算机基础与程序设计》英 《计算机基础与程序设计》中 <《C语言程序设计》预习第八章> 《C语言程序设计》
作业正文 <博客>(第九周学习总结)

目录
  • 2023-2024-1 20231301 《计算机基础与程序设计》第九周学习总结
    • 作业信息
    • 学习内容总结
      • 《计算机科学概论》第十、十一章
      • 《C语言程序设计》第八章
    • 学习中的问题

学习内容总结

《计算机科学概论》第十、十一章

内存管理:了解主存中载有多少个程序以及他们的位置的动作。
进程管理:了解活动进程的信息的动作。
CPU调度:确定主存中的哪个进程可以访问CPU以便执行的动作。
逻辑地址:是指定了一个普通地址的值(对一个存储值的引用),这个地址是相对程序而不是相对主存的。
物理地址:是主存储设备中的真实地址。
固定分区法:把内存分成特定数目的分区以载入程序的方法。而不是把主存分为相同大小分区。
动态分区法:根据容纳程序的需要对内存分区的方法。
非抢先调度:当当前执行的进程自愿放弃了CPU时发生的CPU调度。
抢先调度:当操作系统决定照顾另一个进程而抢占当前执行进程的CPU资源时发生的CPU调度。
先到先服务(FCFS):非抢先,进程按照他们到达运行状态的顺序转移到CPU。
最短作业优先(SJN):非抢先,查看所有处于准备就绪状态的进程,并分派一个具有最短服务时间的。是最优的。
轮询法(Round robin):抢先,将把处理时间平均分配给所有准备就绪的进程。应用最广泛,最公平。

《C语言程序设计》第八章

数组是一组具有相同类型的变量的集合,它是一种顺序存储、随机访问的顺序表结构。
下标个数表明数组的维数。
C语言中数组的下标都是从0开始的。

点击查看代码
days[month-1]
数组的长度用宏常量或const常量来定义。
点击查看代码
int[N] 或 Int[SIZE]
C89规定在定义数组时不能使用变量定义数组的大小,C99允许。
点击查看代码
scanf("%d",&n);
int score[n];
对数组初始化的时候,可将元素初值放在=后面用一对花括号括起来的初始化列表中。 当数组在所有函数外定义,或用static定义为静态存储类型时,即使不给数组元素赋初值,那么数组元素也会自动初始化为0,这是在编译阶段完成的。 数组下标一旦越界,将访问数组以外的空间,后果很严重。

第一维的长度代表数组每一列的元素个数,第二维的长度代表数组每一行的元素个数。
二维数组占用的字节数为:第一维长度x第二维长度xsizeof(基类型)
既可以按元素初始化,也可以按行初始化。
当初始化列表给出数组全部元素的初值时,第一维的长度声明可以省略。数组第二维的长度声明永远都不能省略。
C语言中的二维数组元素在C编译程序为其分配的连续存储空间中是按行存放的。

闰年:(满足下列条件之一)

  1. 能被4整除,但不能被100整除
  2. 能被400整除
点击查看代码
((year%4==0) && (year%100!=0)) || (year%400==0)

若要把一个数组传递给一个函数,那么只要使用不带方括号的数组名作为函数实参调用函数即可。
数组作函数形参时,数组的长度可以不出现在数组名后面的方括号内,通常用另一个整型形参来指定数组的长度。
以负值作为输入结束的标记值。

学习中的问题

  1. 例8.2:b[5]={0}是给全部元素赋值为0还是只给第一个元素赋值为0?

C语言中,b[5]={0}会给数组b的所有元素赋值为0,而不仅仅是第一个元素。这是因为在C语言中,当我们定义一个数组时,如果在初始化时只给了部分元素赋值,那么剩余的元素会自动被初始化为0。

  1. 下面两组代码的区别在哪里?
点击查看代码
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] 被赋值。逻辑错误

  1. 二维数组中能不按顺序提供初值吗?
点击查看代码
int matrix[3][4] = 
{
    {1, 2},
    {3, 4, 5},
    {6}
};
  1. 二维数组中能实现某元素初值不确定但是不为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;
}
  1. 实验3:
    问题:如何实现下面功能?
    (3)按成绩由高到低排出名次表;
    (4)按学号由小到大排出成绩表;

解决:我采用了冒泡排序。
sortDescendingByScore()函数使用冒泡排序(Bubble Sort)对学生数组按照分数从高到低进行降序排序。
sortAscendingByNumber()函数使用冒泡排序(Bubble Sort)对学生数组按照学号从小到大进行升序排序。
之所以没有采用其他排序方式是因为学生总人数为40,数量不是很大。采用冒泡在所给数据顺利的情况下,更加方便快捷。当然有可能数据刚好完全相反,这时冒泡排序会相对较慢,但是基数40毕竟不是很大,所以可以接受。

posted on 2023-11-26 21:26  20231301周子昂  阅读(35)  评论(1)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3