首页 > 编程语言 >第九周学习总结(2022-2023-1 计算机基础与程序设计)姚博茗

第九周学习总结(2022-2023-1 计算机基础与程序设计)姚博茗

时间:2022-10-29 21:15:03浏览次数:75  
标签:姚博茗 分区 float sum2 int 算法 2022 2023 空闲

学期(2022-2023-1) 学号(20221407) 计算机基础与程序设计 第九周学习总结

作业信息

这个作业属于哪个课程 2022-2023-1-计算机基础与程序设计
这个作业要求在哪里 2022-2023-1计算机基础与程序设计第九周作业
这个作业的目标 操作系统责任 内存与进程管理 分时系统 CPU调度 文件、文件系统 文件保护 磁盘调度
作业正文 见下

教材学习内容总结

  • 《计算机科学概论》:这两章讲述了计算机中的操作系统的相关内容:操作系统的功能,操作系统实现这些功能的算法,以及文件系统,目录,以及磁盘调度;
  • 《C语言基础与程序设计》:这一张讲述了数组这种数据结构以及数组向函数的传递,让我使用C语言编程时更加方便。不必定义很多数组。

教材学习中的问题和解决过程

  • 分时是什么意思,书上的定义是被翻译过的,不是很通顺。
    解决方案:查找百度知道;
    解决:分时就是时间片轮转。分时系统允许多个用户同时连机使用计算机。操作系统采用时间片轮转的方式处理每个用户的服务请求。
    CSDN:所谓分时技术,是把处理机时间划分成很短的时间片,轮流地分配给各个用户程序使用,如果某个用户程序在分配的时间片用完之前还未完成计算,该程序就暂停执行,等待下一轮继续计算,此时处理机让给另一个用户程序使用。
  • 算法是否应该把程序的所有实现细节说明?
    ————通过查找后我知道算法不是实现一个程序。就像设计师不是工人一样。算法只是指出应该怎么做,不需要指出实现的细节。4
  • 动态分区是如何实现最差匹配的?
    ——解决途径:CSDN
    动态分区分配:动态分区分配是一种动态划分内存的分区方法。这种分区方法不预先将内存划分,而是在进程装入内存时,根据进程的大小动态地建立分区,并使分区的大小正好合适进程的需要。因此系统中分区的大小和数目是可变的。

2、动态分区的分配策略,有以下几种算法
2.1首次适应算法(First Fit)算法:空闲分区以地址递增的次序链接,分配内存时顺序查找,找到大小能满足要求的第一个空闲分区。
2.2最佳适应算法(Best Fit):空闲分区按容量递增形成分区链,找到第一个能满足要求的空闲分区。
2.3最坏适应算法(Worse Fit):又称最大适应算法(Largest Fit),空闲分区以容量递减的次序链接。找到第一个能满足要求的空闲分区,也就是挑选出最大的分区。
2.4临近适应算法(Next Fit):又称循环首次适应算法,由首次适应算法演变而成。不同之处是分配内存时从上次查找结束的位置开始继续查找。
版权声明:本文为CSDN博主「光怪陆离的节日」的原创文章
原文链接原文作者:光怪陆离的节日
由这篇文章,我对动态内存分配有了更多的了解。原来,动态内存分配中,最初时,整个内存是一个空闲分区,操作系统选用此分区分配了一个大小正好的内存空间,对于下一个进程,剩余部分为空闲空间,此时无法体现内存分配方法。我认为,当出现外部碎片时,才有内存分配方法。

代码调试中的问题和解决过程

点击查看代码
#include<stdio.h>
#include<math.h>
/*#define EPS 1e-6*/
float Average(float g[][5],int i);/*1)每个学生的平均分;*/
float Clas(float g[][5],int j);/*(2)每门课的平均分;*/
int max(float g[][5],int i);/*(3)找出最高的分数所对应的学生和课程;*/
float Var(float sum1,float sum2);/*(4)求出平均分方差:*/
int main(void)
{
    float g[2][5];
    int i,j;
    float aver1,aver2,cla;
    int numclass;
    float sum1 = 0,sum2 = 0;/*用来求方差的平方和与和*/
    for(i = 0;i<=1;i++)
    {
       printf("\n输入学生%4d的5个成绩:\n",i+1);
       for(j = 0;j<=4;j++)
       {
           scanf("%f",&g[i][j]);
       }
        if(i == 0)
        {
            aver1 = Average(g,i);
        }
        else
        {
            aver2 = Average(g,i);
        }

    }
    printf("\n 序号     课程1     2     3     4     5     平均分\n");
    for(i= 0;i<=1;i++)//输出
    {
        printf("\n NO%2d",i+1);
        for(j = 0;j<=4;j++)
        {
            printf("%8.2f",g[i][j]);
        }
        if(i == 0)
            printf("%8.2f",aver1);
        else
            printf("%8.2f",aver2);
    }
    printf("\n课平均",i);
    for(j = 0; j<=4; j++)
    {
        cla = Clas(g,j);
        sum1 = sum1+cla*cla;
        sum2 = sum2+cla;
        printf("%8.2f",cla);
    }
    for(i = 0;i<=1;i++)
    {

        numclass = max(g,i);
    }
    if((g[0][numclass]<g[1][numclass]))
    {
        printf("\n\n最高分%8.2f是%d号学生的第%d门课\n",g[1][numclass],2,numclass+1);
    }
    else
    {
        printf("\n\n最高分%8.2f是%d号学生的第%d门课\n",g[0][numclass],1,numclass+1);
    }
    printf("\n方差 %8.2f",Var(sum1,sum2));

}
float Average(float g[][5],int i)/*1)每个学生的平均分;*///没错
{
    int j;
    float total = 0;
    if (i == 0)
    {
        for(j = 0;j<= 4;j++)
        {
            total = g[i][j] + total;
        }
    }
    else
    {
        for(j = 0;j<= 4;j++)
        {
            total = g[i][j] + total;
        }
    }
    return total/5;
}
float Clas(float g[][5],int j)//没错
{
    int i;
    float total;
    total = g[i][j]+g[i+1][j];
    return total/2;
}
int max(float g[][5],int i)//没错
{
   int max = 0;
   int j;
   for(j = 1;j<=4;j++)
   {
       if(g[i][j]>=g[i][max])
       {
           max = j;
       }
   }
   return max;
}
float Var(float sum1,float sum2)
{
    sum2 = sum2/5;
    return sum1/5-pow(sum2,2);
}
1.在编写写这个非常长的代码时,我发现很容易就会把if判断语句写成赋值语句,导致循环进入死循环。所以我应当写成if(0 == i)这样,可以让编译器帮忙。 *
点击查看代码
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void right();//函数功能:输出相应的鼓励话语
void wrong();//函数功能:输出相应的鼓励话语
int main(void)
{
    int a, b, c;
    int result, answer;//result是正确结果,answer是学生自己输入的答案
    int i;
    int count = 0;
    float N = 10;//这是学生总人数
    float rate;
Start:
    count = 0;//防止第二次做题时又把上一次的数加上去
    for(i = 0; i<10; i++)
    {
        if(i != 0)
        printf("\n");//再两道题之间换行
        srand(time(NULL));
        a = rand()%10+1;
        b = rand()%10+1;
        c = rand()%4+1;//功能用来随机生成四则运算
        switch (c)
        {
        case 1:
            result = a*b;
            printf("%d*%d=",a,b);
            scanf("%d",&answer);
            if(answer == result)
            {
                printf("Right!");
                right();
                count++;
            }
            else
            {
                printf("Wrong!");
                wrong();
            }
            break;
        case 2:
            result = a+b;
            printf("%d+%d=",a,b);
            scanf("%d",&answer);
            if(answer == result)
            {
                printf("Right!");
                right();
                count++;
            }
            else
            {
                printf("Wrong!");
                wrong();
            }
            break;
        case 3:
            result = a-b;
            printf("%d-%d=",a,b);
            scanf("%d",&answer);
            if(answer == result)
            {
                printf("Right!");
                right();
                count++;
            }
            else
            {
                printf("Wrong!");
                wrong();
            }
            break;
        case 4:
            if(a%b != 0)
            {
                do
                {
                    a = rand()%10+1;
                    b = rand()%10+1;
                }
                while(a%b != 0);
            }
            result = a/b;
            printf("%d/%d=",a,b);
            scanf("%d",&answer);
            if(answer == result)
            {
                printf("Right!");
                right();
                count++;
            }
            else
            {
                printf("Wrong!");
                wrong();
            }
            break;

        }
    }
    printf("The score is %d",10*count);
    rate = (count/N)*100;
    printf("\nThe rate to answer a correct answer:%f%%\n",rate);
    if(rate<75)
    {
        goto Start;//重新再来做题
    }
    return 0;
}
void right()
{
    srand(time(NULL));//原理:通过生成一个随机数来对应一种鼓励语从而随机出现一种鼓励语
    int m;
    m = rand()%4+1;
    switch (m)
    {
    case 1:
        printf("Very good!\n");
        break;
    case 2:
        printf("Excellent!\n");
        break;
    case 3:
        printf("Nice work!\n");
        break;
    case 4:
        printf("Keep up the good work!\n");
        break;
    }
}
void wrong()
{
    srand(time(NULL));
    int n;
    n = rand()%4+1;
    switch (n)
    {
    case 1:
        printf("No. Please try again.\n");
        break;
    case 2:
        printf("Wrong. Try once more.\n");
        break;
    case 3:
        printf("Don’t give up!\n");
        break;
    case 4:
        printf("Not correct. Keep trying.\n");
        break;
    }
}
这个代码是这周的实验作业,对于我来说挺长的。当时,我刚刚把它编好时,错误非常多,而且很难改。可以看到我只用了两个自定义函数,几乎所有内容都在主函数中,导致了程序非常难改。 所以,以后我应用结构化程序设计。(上面那段是昨晚这次实验后写的,真的有用函数……)

上周考试错题总结

1.Which of the following is a program that translates and executes statements in sequence?
A.
Interpreter
B.
Compiler
C.
Input
D.
Machine code
E.
Bytecode
正确答案: A
你的作答: C
翻译:以下哪一项是按顺序翻译和执行语句的程序?
A.解释器
B编译器
C输入
D机器代码
E字节码
CSDN:解释器:直接执行用编程语言编写的指令的程序。
解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。
找到的解释
2.Modern compilers translate high-level language programs into the corresponding program in machine code.
正确答案: 正确
你的作答: 错误
做题不能太着急
3.A Boolean expression may be an arithmetic expression followed by an integer.
正确答案: 错误
你的作答: 正确
同上
Which of the following paradigms is based on the mathematical concepts of symbolic logic?
A.
Imperative (or procedural)
B.
Functional
C.
Logic
D.
Object-oriented
正确答案: C
你的作答: B
"逻辑编程基于数理逻辑编程"

其他

这周我发现,在CSDN由中国人写的博客要比翻译成中文后的教材更好懂,这可能就是翻译的短板。再好的翻译也不可能保持原汁原味,意思多少会变得令人费解,所以老师让我们学习去看英文资料是有道理的。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第...周 ... ... ...
第九周 170/1300 1/9 30/90

标签:姚博茗,分区,float,sum2,int,算法,2022,2023,空闲
From: https://www.cnblogs.com/xiaoyaotonhxue/p/16839850.html

相关文章

  • 20221027数据结构与算法之线性表——顺序表
    广州疫情被封区,在家学习#pragmawarning(disable:4996)#include<stdio.h>#include<stdlib.h>//动态顺序表的实现typedefintdata_t;typedefstructSeqList{data_t*da......
  • CSP2022 梦游记
    同步发表于luogu前情提要:csp前完全一天也没有停课,模拟赛自然更加不用说了,因此代码能力直线下降(大概是线段树2都打不出来233)。所以前面几天的也没啥好讲的了qwq。Day-1......
  • 2022-2023-1 20221325《计算机基础与程序设计》第九周学习总结
    班级链接:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08作业目标:操作系统责任、内存与进程管理......
  • 2022-2023-1 20221305 《计算机基础与程序设计》第9周学习总结
    2022-2023-120221305《计算机基础与程序设计》第9周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2022-2023-1-计算机基础与程序设计)这个作业要求在哪......
  • 2022-2023-1 20221326《计算机基础与程序设计》第九周学习总结
    班级链接:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08作业目标:操作系统责任、内存与进程管理、......
  • 米联客2022年度双十一活动促销通知!
    双十一欢乐购!米联客天猫商城和京东商城狂欢15日!2022.10.28-2022.11.11店铺推出满减优惠券!领券下单享优惠!全店满1000减50,满2000减120满4000减250,满6000减360满8000减480,满10......
  • 玩客云刷入armbian(2022-08-14亲测)
    0.1使用AmlBurnTool软件烧录首选底包至固件。烧录完成后断开玩客云电源备用。(靠近hdmi的那个口子。)0.2使用rufus软件将emmc固件写入U盘。0.3写入成功后,先将U盘插......
  • CSP2022 J2参考解析
    目录P8813[CSP-J2022]乘方P8814[CSP-J2022]解密P8815[CSP-J2022]逻辑表达式P8816[CSP-J2022]上升点列https://www.luogu.com.cn/contest/90215#problemsP8813[C......
  • 2022/10/27
    至此我每看到那些场景都会回想想起那年的今日有的是在阳光下的倾斜的长坡坡顶有家便利店卖的是散装的用袋子装的啤酒味道有点甜带着回甘最上面有一家教堂很大,从来......
  • 2022-2023-1 20221306《计算机基础与程序设计》第九周学习总结
    作业信息这个作业属于哪个课程<班级的链接>(2022-2023-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2022-2023-1计算机基础与程序设计第九周作业)......