2023-2024-1 20231417 《计算机基础与程序设计》第十五周学习总结
作业信息
作业属于的课程 | (2022-2023-1-计算机基础与程序设计) |
---|---|
作业要求 | (2022-2023-1计算机基础与程序设计第一周作业) |
作业目标 | 课程总结 |
作业正文 |
作业内容
第一周作业:
简要内容:简要阅读了《计算机科学概论》和《c语言程序设计》,打开了学习计算机新世界的大门,对计算机和c语言都有了简单的了解,在此分享学习过程和其中遇见的问题。
第二周作业:
简要内容:《计算机科学概论》第一章:1.计算系统的分层以及计算系统的核心板块:硬件、软件、数据。2.抽象是一种思考问题的方式删除或隐藏了复杂的细节,保留实现目标所必须的信息
3.计算机的四代硬件简史,五代软件简史。大体了解计算机的发展历程。
《C语言程序设计》第一章:
明白了什么是编程,学习编程的意义是什么,了解了如何学编程。
第三周作业:
简要内容:计算机科学概论第二章总结
学习了数字,位置计数法,二进制八进制十六进制的换算,了解了计算机以2为幂的计数系统。
第三章总结
学习了数据,信息,数字数据表示法,文本表示法,文本压缩等知识点,明白了原码,反码,补码的转换以及布尔代数的知识点。
C语言程序设计第二章总结
学习了变量,常量,运算符和表达式,数据类型转换等知识点,初步了解了c语言的一些指令,可进行简单编程。
第四周作业:
简要内容:
《计算机科学概论》第4章
了解了门的分类,晶体管的作用
《计算机科学概论》第5章
了解了冯 诺伊曼体系的基本结构,了解了存储程序的概念
《C语言程序设计》第3章
学习基本运算,学习了宏常量和宏替换和const语句,了解了自动类型转换
第五周作业:
简要内容:
《计算机科学概论》第六章
1.学会了区分机器语言和汇编语言
2.学会了Pep/9的相关应用。
《C语言程序设计》第四章
1.for循环和do while 以及while循环的区别与运用
第六周作业:
简要内容:
计算机科学概论第7章
说明了提出问题和解决问题的做法,介绍了有简单参数的算法。说明了选择和循环的算法。数组是同构项目的有名集合,记录是异构项目的有名集合。排序包括选择排序 冒泡排序和插入排序
c语言程序设计第5章
说明了选择控制结构,学习了if,if-else,else-if,switch语句,以及逻辑运算符与&&,或||,非!
第七周作业:
简要内容:
计算机科学概论第8章
1.了解了一些抽象复合结构,如:列表、栈、队列、树、图。列表和数还有在结构中查找元素的操作。
2.栈是后进先出,队列是先进先出。
3.图的搜索分为:广度优先搜索、深度优先搜索和单源最短路搜索。
4.介绍了几种抽象数据类型,如栈,队列,列表,树,图
5.介绍了子程序相关概念
c语言程序设计第6章
1.介绍了while语句,do-while语句,for语句的表达式和语法
2.介绍了计数控制的循环,条件控制的循环,嵌套循环,并能通过循环解决一些实际问题
3.结构化语句要求:一个入口,一个出口,无不可达语句,无死循环。
4.宁可适当降低效率,也要保持好的结构
第八周作业:
简要内容:
计算机科学概论第9章
了解面向对象设计的重点是确定问题中的对象其中四个阶段包括头脑风暴,过滤,场景,责任算法,以及汇编器的使用原理和作用,和多种高级语言的模型。强类型转化的过程。三种类型对对象程序的刻画。
c语言程序设计第7章
了解信息隐藏的概念和函数的传递和返回值之间的区别以及如何进行函数的封存和防御性程序和变量的作用域和生存期和模块化程序设计的基本原理
第九周作业:
简要内容:
《计算机科学概论》第10章
主要介绍了操作系统,内存管理,进程管理,CPU调度,让我了解了操作系统是如何管理内存的,也让我学习到了三种调度方法:先到先服务,最短作业优先和轮询法。
《C语言程序设计》
这章主要讲了一维数组和二维数组,包括一维数组和二维数组的定义和初始化,以及如何向函数传递一维、二维数组。还介绍了交换法排序、选择法排序两种排序方法,顺序查找、折半查找两种查找方法。
第十周作业:
简要内容:
《计算机科学概论》:
信息编码与数据存储、计算机体系结构:这部分详细介绍了计算机的硬件组成,包括CPU、主存储器和海量存储器,以及它们之间的通信方式,人工智能的定义 人工智能的历史。
《C语言程序设计》:
指针的定义:指针是一种特殊的变量,其值为另一个变量的内存地址。
第十一周作业:
简要内容:
《计算机科学概论》:
网络是指将多个计算机或设备连接在一起,以便它们可以相互通信和共享资源。网络基于一组协议和技术,如TCP/IP协议、以太网和无线网络等。通过网络,用户可以传输数据、共享文件、发送电子邮件、浏览网页等。万维网的一些关键定义有HTML(超文本标记语言)HTTP(超文本传输协议)浏览器:浏览器是用于访问和显示网页的软件应用程序。常见的浏览器包括谷歌浏览器、火狐浏览器、微软 Edge 等。浏览器可以解析HTML代码并将其呈现为可视化的网页。
第十二周作业:
简要内容:
《C语言程序设计》第11章:
这一章首先更加深入地讲述了数组与指针之间的关系尤其是二维数组与指针的关系,之后有讲述了指针在多个方面的应用让内容更加形象。同时又讲述了如何动态分配内存以及分配内存时常常存在的一些问题以及解决对策。最后又介绍了缓冲区溢出攻击。
第十三周作业:
简要内容:
《c语言程序设计》第十二章:
本章主要讲了结构体,先介绍了结构体、共用体、枚举、定义数据类型,然后讲解了结构体变量、结构体数组、结构体指针的定义和初始化,接着讲了向函数传递结构体变量、结构体数组、结构体指针,最后讲了动态数据结构、动态链表。
第十四周作业:
简要内容:
《C语言程序设计》
学习了C语言中常见的文件操作,掌握了文件的打开与关闭、写入与读出以及相关格式化和数据块操作等;了解了二进制文件和文本文件的格式和不同。
实验
实验一:熟悉Linux命令,在Vbox下Ubuntu中进行相关的命令的练习
实验二:基本编程结构控制练习,通过在华为云下OpenEuler中的编程练习,既掌握了有关C语言的知识,同时也对Linux系统命令行有一些新的认识理解分支结构和循环结构程序设计方法;掌握实现分支结构和循环结构控制语句的使用方法;掌握随机函数的使用方法。
#include
#include
int main() {
int c, i, n;
srand(time(NULL));
do{
for (i = 1, n = 0; i <= 10; i++) {
int a = rand() % 10 + 1;
int b = rand() % 10 + 1;
int randomNum = rand() % 4;
char operator;
switch (randomNum) {
case 0:
operator = '+';
break;
case 1:
operator = '-';
break;
case 2:
operator = '*';
break;
case 3:
operator = '/';
break;}
printf("%d %c %d =", a, operator, b);
scanf("%d", &c);
switch (operator) {
case '+':
if (a + b == c) {
printf("Right!\n");
n++;
int outcome = rand() % 4;
switch (outcome) {
case 0:
printf("Very good!\n");
break;
case 1:
printf("Excellent!\n");
break;
case 2:
printf("Nice work!\n");
break;
case 3:
printf("Keep up the good work!\n");
break;
}
} else {
printf("Wrong!\n");
int outcome = rand() % 4;
switch (outcome) {
case 0:
printf("No. Please try again.\n");
break;
case 1:
printf("Wrong. Try once more.\n");
break;
case 2:
printf("Don't give up!\n");
break;
case 3:
printf("Not correct. Keep trying.\n");
break;
}
}
break;
case '-':
if (a - b == c) {
printf("Right!\n");
n++;
int outcome = rand() % 4;
switch (outcome) {
case 0:
printf("Very good!\n");
break;
case 1:
printf("Excellent!\n");
break;
case 2:
printf("Nice work!\n");
break;
case 3:
printf("Keep up the good work!\n");
break;
}
} else {
printf("Wrong!\n");
int outcome = rand() % 4;
switch (outcome) {
case 0:
printf("No. Please try again.\n");
break;
case 1:
printf("Wrong. Try once more.\n");
break;
case 2:
printf("Don't give up!\n");
break;
case 3:
printf("Not correct. Keep trying.\n");
break;
}
}
break;
case '*':
if (a * b == c) {
printf("Right!\n");
n++;
int outcome = rand() % 4;
switch (outcome) {
case 0:
printf("Very good!\n");
break;
case 1:
printf("Excellent!\n");
break;
case 2:
printf("Nice work!\n");
break;
case 3:
printf("Keep up the good work!\n");
break;
}
} else {
printf("Wrong!\n");
int outcome = rand() % 4;
switch (outcome) {
case 0:
printf("No. Please try again.\n");
break;
case 1:
printf("Wrong. Try once more.\n");
break;
case 2:
printf("Don't give up!\n");
break;
case 3:
printf("Not correct. Keep trying.\n");
break;
}
}
break;
case '/':
if (a / b == c) {
printf("Right!\n");
n++;
int outcome = rand() % 4;
switch (outcome) {
case 0:
printf("Very good!\n");
break;
case 1:
printf("Excellent!\n");
break;
case 2:
printf("Nice work!\n");
break;
case 3:
printf("Keep up the good work!\n");
break;
}
} else {
printf("Wrong!\n");
int outcome = rand() % 4;
switch (outcome) {
case 0:
printf("No. Please try again.\n");
break;
case 1:
printf("Wrong. Try once more.\n");
break;
case 2:
printf("Don't give up!\n");
break;
case 3:
printf("Not correct. Keep trying.\n");
break;
}
}
break;
}
}
}
while(n < 8);
printf("你一共答对了%d道题\n", n);
printf("你的正确率是%d%%\n", 10 * n);
if (n < 8) {
printf("你的正确率不足75%%,需要重做。\n");
}
return 0;
}
实验四:函数与数组编程练习,掌握函数的使用方法;掌握数组的使用方法;掌握数组作函数参数的方法;运用排序、查找等常用算法;掌握模块化程序设计的方法
#include
int main()
{
int num,xuehao,n,i,j,x,xuehao2,z;
int t=0;
char ch;
int a[i],b[i];
int average;
int num1=0;
int num2=0;
int num3=0;
int num4=0;
int num5=0;
float n1,n2,n3,n4,n5;
printf("( 1)Append record\n");
printf("(2)Calculate total and average score of course\n");
printf("(3)Sort in descending order by score\n");
printf("(4)Sort in ascending order by number\n");
printf("(5)Search by number\n");
printf("(6)Statistic analysis\n");
printf("(7)List record\n");
printf("(8)Exit\n");
scanf("%d",&num);
for(i=0;i<num;i++)
{
scanf("%d %d",&xuehao,&n);
b[i]=xuehao;
a[i]=n;
t+=n;
}
start:
printf("( 1)Append record\n");
printf("(2)Calculate total and average score of course\n");
printf("(3)Sort in descending order by score\n");
printf("(4)Sort in ascending order by number\n");
printf("(5)Search by number\n");
printf("(6)Statistic analysis\n");
printf("(7)List record\n");
printf("(8)Exit\n");
scanf("%d",&z);
switch(z){
case 2:{
average=t/num;
printf("%d %d",t,average);
goto start;
}
case 3:{
for(i = 0; i < num - 1; i++)
{
for( j = 0; j < num - 1 - i; j++)
{
if(a[j] < a[j + 1])
{
x = a[j + 1];
a[j + 1] = a[j];
a[j] = x;
x = b[j + 1];
b[j + 1] = b[j];
b[j] = x;
}
}
}
average=t/num;
for ( i = 0; i < num; i++)
{
printf("%d %d\n",a[i],b[i]);
}
goto start;
}
case 4:{
for(i = 0; i < num - 1; i++)
{
for( j = 0; j < num - 1 - i; j++)
{
if(b[j] < b[j + 1])
{
x = a[j + 1];
a[j + 1] = a[j];
a[j] = x;
x = b[j + 1];
b[j + 1] = b[j];
b[j] = x;
}
}
}
average=t/num;
for ( i = 0; i < num; i++)
{
printf("%d %d\n",b[i],a[i]);
}
goto start;
}
case 5:{
for(i = 0; i < num - 1; i++)
{
for( j = 0; j < num - 1 - i; j++)
{
if(a[j] < a[j + 1])
{
x = a[j + 1];
a[j + 1] = a[j];
a[j] = x;
x = b[j + 1];
b[j + 1] = b[j];
b[j] = x;
}
}
}
scanf("%d",&xuehao2);
for ( i = 0; i < num; i++)
{
if(xuehao2==b[i])
{
printf("%d %d\n",i+1,a[i]);
}}
goto start;
}
case 6:{
for(i=0;i<num;i++)
{
if(a[i]<60)
{
num1++;
}
if(a[i]<=100&&a[i]>=90)
{
num5++;
}
if(a[i]<70&&a[i]>=60)
{
num2++;
} if(a[i]<80&&a[i]>=70)
{
num3++;
} if(a[i]<90&&a[i]>=80)
{
num4++;
}
}
n1=(float)num1/num;
n2=(float)num2/num;
n3=(float)num3/num;
n4=(float)num4/num;
n5=(float)num5/num;
printf("%d %d %d %d %d\n",num1,num2,num3,num4,num5);
printf("%f %f %f %f %f",n1,n2,n3,n4,n5);
goto start;
}
case 7:{
average=t/num;
for(i=0;i<num;i++)
{
printf("%d %d\n",b[i],a[i]);
}
printf("%d %d",t,average);
goto start;
}
case 8:{
return 0;
}
}
}
实验六:掌握文件的打开、读、写及关闭操作;掌握结构体的使用方法;文件可以是文本文件,也可以是二进制文件,注意选择正确的读写函数
#include
#include
typedef struct date{
int MT;
int EN;
int PH;
}DATE;
typedef struct{
int id;
char name[50];
DATE score;
float average;
int sum;
}student;
void aver(student *str,int n);
void findstudent(student *str,int n);
void scorerank1(student *str,int n);
void scorerank2(student *str,int n);
void tofile(student *str, int n);
void outputfile(student *str, int n);
void swap(student *a,student *b);
int main()
{
int n;
int i;
scanf("%d",&n);
int choice;
student str[n];
for(i=0;i<n;i++)
{
printf("Please input the information of student %d:\n", i + 1);
printf("id:");
scanf("%d",&str[i].id );
printf("name:");
scanf("%s",&str[i].name );
printf("english:");
scanf("%4d",&str[i].score.EN );
printf("math:");
scanf("%4d",&str[i].score.MT );
printf("physics:");
scanf("%4d",&str[i].score.PH );
str[i].sum=str[i].score.EN+str[i].score.MT+str[i].score.PH;
str[i].average = (float)(str[i].score.EN + str[i].score.MT + str[i].score.PH) / 3.0;
}
start:
printf("1.Append record\n");
printf("2.Caculate total and average score of every student\n");
printf("3.Sort in ascending order by total score of every student\n");
printf("4.Sort in dictionary order by name\n");
printf("5.Search by name\n");
printf("6.Write to a file\n");
printf("7.Read from a file\n");
printf("8.Exit\n");
printf("Please enter your choice:\n");
scanf("%d",&choice);
switch(choice){
case 2:{
aver(str,n);
goto start;
}
case 3:{
scorerank1(str,n);
goto start;
}
case 4:{
scorerank2(str,n);
goto start;
}
case 5:{
findstudent(str,n);
goto start;
}
case 6:{
tofile(str, n);
goto start;
}
case 7:{
outputfile(str,n);
goto start;
}
case 8:{
break;
}
}
}
void aver(student *str,int n)
{
int sum=0;
int i=0;
printf("\n\nThe student information is as follows:\n");
for(i=0;i<n;i++)
{
printf("id:%d, name:%s, Average score:%.2f\n", str[i].id, str[i].name, str[i].average);
}
}
void findstudent(student *str,int n)
{
int sum[100];
student *write=str;
int i=0;
char findname[100];
int j;
int temp;
char temp1[150];
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
{
if(strcmp(str[j].name,str[j+1].name)>0)
{
swap(&str[j],&str[j+1]);
}
}
}
printf("Please input the name of the student you want to search:\n");
scanf("%s",&findname);
printf("\n\nThe student information is as follows:\n");
for(i=0;i<n;i++)
{
if(strcmp(findname, write[i].name) == 0)
{
printf("rank:%d,name:%s,total:%d\n",i+1,str[i].name,str[i].sum);
}
}
}
void scorerank1(student *str, int n)
{
int i, j;
for(i = 0; i < n; i++)
{
for(j = 0; j < n - i - 1; j++)
{
if(str[j].sum < str[j + 1].sum)
{
swap(&str[j], &str[j + 1]);
}
}
}
printf("\n\nThe student information is as follows:\n");
for(i = 0; i < n; i++)
{
printf("Rank:%d, Name:%s, Total score:%d\n", i + 1, str[i].name, str[i].sum);
}
}
void scorerank2(student *str,int n)
{
int sum[100];
student *write=str;
int i=0;
int j;
int temp;
char temp1[150];
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
{
if(strcmp(strs[j].name,write[j+1].name)>0)
{
swap(&str[j],&str[j+1]);
}
}
}
printf("\n\nThe student information is as follows::\n");
for(i=0;i<n;i++)
{
printf("rank:%d,name:%s,total:%d\n",i+1,str[i].name,str[i].sum );
}
}
void swap(student *a,student *b)
{
student temp;
temp=*a;
*a=*b;
*b=temp;
}
void tofile(student *str, int n)
{
FILE *fp;
int i;
fp = fopen("student.txt", "w");
if(fp == NULL)
{
printf("Cannot open file");
return;
}
fprintf(fp, "Student information record:\n");
for(i = 0; i < n; i++)
{
fprintf(fp, "id:%d\n", str[i].id);
fprintf(fp, "name:%s\n", str[i].name);
fprintf(fp, "english:%d\n", str[i].score.EN);
fprintf(fp, "math:%d\n", str[i].score.MT);
fprintf(fp, "physics:%d\n", str[i].score.PH);
fprintf(fp, "total:%d\n", str[i].sum );
fprintf(fp, "Average score:%.2f\n\n", str[i].average);
}
fclose(fp);
}
void outputfile(student *str, int n)
{
FILE *fp;
int i;
fp = fopen("student.txt", "r");
if(fp == NULL)
{
printf("Cannot open file");
return;
}
printf("The student information read from the file is as follows:\n");
for(i = 0; i < n; i++)
{
fscanf(fp, "id:%d\n", &str[i].id);
fscanf(fp, "name:%s\n", &str[i].name);
fscanf(fp, "english:%d\n", &str[i].score.EN);
fscanf(fp, "math:%d\n", &str[i].score.MT);
fscanf(fp, "physics:%d\n", &str[i].score.PH);
fscanf(fp, "total:%*d\n",&str[i].sum );
fscanf(fp, "Average score:%2f\n",&str[i].average );
printf("id:%d\n", str[i].id);
printf("name:%s\n", str[i].name);
printf("english:%d\n", str[i].score.EN);
printf("math:%d\n", str[i].score.MT);
printf("physics:%d\n", str[i].score.PH);
printf("total:%d\n", str[i].score.EN + str[i].score.MT + str[i].score.PH);
printf("Average score:%.2f\n\n", str[i].average);
}
fclose(fp);
}
实验七:缓冲区溢出,缓冲区溢出的原理;缓冲区溢出的防范
实验八:Web部署,基于LAMP部署wordpress
回答问题
第一章
计算系统和操作系统在计算机运行时分别发挥什么作用?
答:计算系统是由硬件和软件组成的计算机系统,负责处理计算机上的任务和数据。操作系统是计算机系统中的核心软件,主要负责管理计算机的资源,为应用程序提供服务和接口。
第二章
可以使用二进制来进行加减乘除吗?
答:可以使用二进制来进行加减乘除,只需要将数字转换成二进制后,按照二进制的运算规则进行运算,最后再将结果转换回十进制即可。
第三章
为何在数据压缩时会出现损失?
答:数据压缩时会出现损失,是因为在压缩过程中,为了减小数据量,会对数据进行一定的简化或丢失,从而导致压缩后的数据与原始数据存在差异。
第四章
不是很理解多路复合器如何运作。
答:多路复用器是一种电子电路,可以将多个输入信号合并到一个输出信号中,实现多路信号的复用和传输。它的运作原理是通过控制选择器的通道,使得不同的输入信号能够在不同的时间段被传输到输出端。
第五章
为何冯·诺依曼体系会成为当今计算机的底层体系结构?
答:冯·诺依曼体系具有程序和数据存储在同一存储器中、以二进制数表示指令和数据、指令和数据采用相同的格式等特点,这使得计算机的指令和数据可以通过总线进行传输和共享,大大提高了计算机的运行效率和灵活性,因此成为了当今计算机的底层体系结构。
第六章
虚拟机的作用
答:虚拟机可以在一台物理主机上运行多个虚拟机操作系统,从而实现资源的共享和隔离。它的作用包括提高硬件利用率、降低系统管理和维护成本、加强系统安全性、方便软件测试和开发等。
第七章
不同排列的作用
答:不同排列的作用包括优化数据存储、提高访问速度、实现散列、增加随机性等。
第八章
形参和实参有什么区别呢?
答:形参是函数定义中的参数,实参是函数调用中的参数。形参用于接收函数调用时传入的实参值,实参则是实际传入函数的值。
第九章
定义数据类型和强类型的差别
答:定义数据类型是指在编程语言中对数据进行分类和描述,强类型则表示在编程语言中,变量必须在声明时指定其数据类型,并且在后续使用过程中,也必须遵循该数据类型的规则进行操作。
第十章
不理解各种cpu调度算法的处理
答:CPU调度算法是指操作系统中用于决定哪个进程将获得CPU资源的算法。各种算法的处理方式各不相同,例如先来先服务、短作业优先、优先级调度、时间片轮转等。
第十一章
机械硬盘和固态硬盘有什么区别呢?
答:机械硬盘是使用机械读写头在磁盘上读写数据的存储设备,而固态硬盘则是使用闪存芯片来存储数据的存储设备。相比之下,固态硬盘具有读写速度快、耐用性强、噪音小、能耗低等优点。
第十二章
电子商务与信息系统的关系
答:电子商务和信息系统密切相关,电子商务需要依靠信息系统的支持实现在线购物、支付、物流等功能,而信息系统则提供了电子商务运营所需的各种技术和平台。
第十三章
人工智能现如今最大且最难突破的障碍是什么?
答:人工智能现如今最大且最难突破的障碍是AI算法的局限性,目前的AI算法仍然不能够完全模拟人类的思维和行为,无法处理复杂的场景和问题,需要进一步研究和改进。
第十四章
动画与单一图像更需要注意的问题
答:动画和单一图像都需要注意的问题包括色彩、清晰度、比例、透明度、优化等,但动画还需要考虑帧率、动作流畅度、运动轨迹等问题。
第十五章
防火墙的作用
答:防火墙是一种网络安全设备,能够监测和过滤网络流量,保护网络不受未经授权的访问和攻击。它的作用包括限制对网络资源的访问、检测和阻止恶意软件、监视网络流量等。
第十六章
cookie是什么?
答:Cookie是一种在浏览器端存储的小型文本文件,用于记录用户在网站上的活动和偏好,以便在用户下次访问该网站时提供更好的用户体验。
第十七章
信息安全与网络空间安全的区别
答:信息安全是指保护信息不受未经授权的访问、使用、泄露、破坏等威胁,而网络空间安全则是指保护网络不受恶意攻击、病毒、恶意软件等威胁。
第十八章
图灵机为计算机出现作出怎样铺垫
答:图灵机为计算机出现作出了重要的铺垫,它提出了“可计算性”概念,即任何能够用数学方法定义的问题都可以通过计算机来解决,这为计算机的发展和应用奠定了基础。
课程总结
总体来说,学习计算机科学概论是打开计算机科学大门的重要一步,它为我提供了计算机科学的基础知识和思维方式,为未来深入学习和研究计算机科学奠定了基础。然而,它仅仅是起点,还需要进一步的学习和实践来不断提高自己的能力和应用水平。
本文链接
https://www.cnblogs.com/yuyuyu12133/p/17948861