学期:2024-2025-1 学号:20241303 《计算机基础与程序设计》第十一周学习总结

作业信息

这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计
这个作业要求在哪里 2024-2025-1计算机基础与程序设计第十一周作业
这个作业的目标 计算机科学概论(第七版)第15,16章 并完成云班课测试,《C语言程序设计》第10章并完成云班课测试
作业正文 ... 本博客链接

教材学习内容总结

1.以下是《计算机科学概论》第七版第15、16章的内容总结

第15章:数据库与信息管理

  • 数据库基础:数据库是有组织的电子数据集合。数据库管理系统(DBMS)用于创建、管理和操作数据库,常见的有MySQL、Oracle、Microsoft SQL Server等。
  • 数据模型:关系模型以行和列存储数据,表代表实体,通过键值关联;对象关系模型结合关系模型与对象导向方法,支持复杂数据类型;层次模型与网络模型是较旧的数据结构,分别以树形和网状方式组织数据。
  • SQL语言:基本操作包括SELECT(检索数据)、INSERT(添加新记录)、UPDATE(修改记录)、DELETE(删除记录)。还可通过WHERE子句、ORDER BY、GROUP BY等进行条件查询、数据过滤和排序,以及使用JOIN操作从多表中提取相关数据。
  • 数据库设计:规范化可消除数据冗余,保证一致性,通过将数据分解到多个表实现。主键用于唯一标识表中的记录,外键用于建立表之间的关系。
  • 事务管理与并发控制:事务具有ACID特性,即原子性、一致性、隔离性、持久性。并发控制技术如锁机制、时间戳等可防止数据冲突。
  • 数据安全性与隐私:数据备份与恢复可防止数据丢失。用户授权与身份验证确保只有授权用户可访问或修改数据,同时要遵循隐私保护法律法规,实现数据最小化原则。

第16章:计算机网络

  • 网络概述:计算机网络是通过通信链路连接的计算机系统,用于数据交换和资源共享。
  • 网络类型:局域网(LAN)局限于较小地理范围,速度快、成本低;广域网(WAN)覆盖广泛区域,由多个局域网组成,速度较慢,使用公共或租用线路;互联网是全球最大的计算机网络,实现全球信息共享。
  • 网络协议:TCP/IP协议栈是网络通信的基础。传输层的TCP负责可靠的数据传输和顺序控制,UDP则更注重效率;网络层的IP负责地址寻址与路由选择;应用层有HTTP、FTP、SMTP等协议支持各种实际应用程序。
  • 网络安全:网络面临病毒、恶意软件、DDoS攻击等威胁。相应的安全措施包括使用SSL/TLS协议加密数据传输、设置防火墙监控流量、采用入侵检测和预防系统(IDS/IPS)识别和响应网络攻击。
  • 网络应用:电子邮件通过SMTP、IMAP/POP3等协议实现点对点消息传递;网页浏览借助HTTP/HTTPS协议,浏览器负责解析和展示网页内容;文件传输可通过FTP和P2P技术快速共享文件 。

2.以下是关于C语言结构体内容的总结

结构体的定义

结构体是一种用户自定义的数据类型,它允许将不同类型的数据成员组合在一起,用来表示一个更复杂的实体。其定义的基本语法形式如下:

struct 结构体名 {
    数据类型 成员1;
    数据类型 成员2;
    // 可以有多个成员
    数据类型 成员n;
};

例如,定义一个表示学生信息的结构体:

struct Student {
    char name[20];
    int age;
    float score;
};

结构体变量的声明与初始化

  • 声明:在结构体定义完成后,可以声明该结构体类型的变量,有以下几种常见方式。
    • 先定义结构体类型,再声明变量:
struct Student stu1;
- 在定义结构体类型的同时声明变量:
struct Student {
    char name[20];
    int age;
    float score;
} stu2;
- 使用 `typedef` 关键字给结构体类型定义别名后声明变量,这样后续使用更简洁:
typedef struct Student {
    char name[20];
    int age;
    float score;
} Stu;
Stu stu3;
  • 初始化:可以在声明结构体变量时进行初始化,用花括号按成员顺序依次给出初始值,例如:
struct Student stu4 = {"Tom", 18, 85.5};

结构体成员的访问

通过结构体变量名使用 .(点运算符)来访问其成员,格式为“结构体变量名.成员名”。例如:

struct Student stu = {"Jerry", 20, 90.0};
printf("学生姓名:%s\n", stu.name);
stu.age++;

如果是通过指针来指向结构体变量,那就需要使用 ->(箭头运算符)来访问成员,例如:

struct Student stu = {"Alice", 19, 88.0};
struct Student *p = &stu;
printf("学生分数:%f\n", p->score);

结构体数组

可以定义结构体类型的数组,用来存储多个同类型的结构体变量。例如:

struct Student class[3] = {
    {"Bob", 18, 78.0},
    {"Lily", 17, 82.0},
    {"Mike", 19, 85.0}
};

访问结构体数组元素中的成员,同样使用 . 运算符,比如遍历结构体数组输出学生信息:

for (int i = 0; i < 3; i++) {
    printf("第 %d 个学生姓名:%s,年龄:%d,分数:%f\n", i + 1, class[i].name, class[i].age, class[i].score);
}

结构体作为函数参数

结构体可以作为函数的参数进行传递,有两种常见方式:

  • 值传递:将结构体变量的值复制一份传递给函数,函数内对参数的修改不会影响原结构体变量,这种方式在结构体较大时可能产生较大的开销。例如:
void printStudent(struct Student s) {
    printf("姓名:%s,年龄:%d,分数:%f\n", s.name, s.age, s.score);
}
  • 地址传递(指针传递):传递结构体变量的地址给函数,函数内可以通过指针修改原结构体变量的内容,效率相对更高,常用这种方式来处理结构体参数,例如:
void updateAge(struct Student *p, int newAge) {
    p->age = newAge;
}

结构体的嵌套

结构体中成员的数据类型也可以是另一个结构体,这就是结构体嵌套。例如定义一个包含日期结构体的学生结构体:

struct Date {
    int year;
    int month;
    int day;
};

struct StudentWithDate {
    char name[20];
    struct Date birthday;
    float score;
};

访问嵌套结构体中的成员时,需要使用多层 . 运算符,比如:

struct StudentWithDate stu = {"David", {2005, 3, 15}, 80.0};
printf("学生生日:%d年%d月%d日\n", stu.birthday.year, stu.birthday.month, stu.birthday.day);

基于AI的学习






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

问题1
在连续输入一串数字,并以-1为结束条件时

int number[10],i=0;      
while(number[i]!=-1)
{
   scanf("%d",&number[i]);
   i++;
}

上述代码并不会在遇到-1时结束,而是继续输入。
原因
在判断循坏条件时,并没有判断刚输入的number[i],而是在i++后,才进行判断,此时相当于在判断number[i+1],而该数字并没有输入任何值,相当于一个随机数,所以number[i+1]并不会一定等于-1
解决方案

int number[10],i=0;      
while(number[i-1]!=-1)
{
   scanf("%d",&number[i]);
   i++;
}

或者

int num,number[10],i=0;
while(1)
{
scanf("%d",&num);
if(num!=-1)
{
number[i]=num;
i++;
}
else
{
break;
}
}

上周考试错题总结

错误1
用字符指针作函数参数编程实现如下功能:在字符串中删除与某字符相同的字符。
输入格式要求:"%s"
输入提示信息:
"Input a string:"
"Input a character:"
输出格式要求:"Results:%s\n"
程序运行示例1如下:
Input a string:hello,world!
Input a character:o
Results:hell,wrld!
请按如下框架编程:

 #include <stdio.h>
 #include <string.h>
 #define N 100
 void  Squeeze(char *s, char c);
 int main()
 {
    char  str[20], ch;
    printf("Input a string:");
    gets(str);
    printf("Input a character:");
    ch = getchar();
 
    ......
 
    printf("Results:%s\n", str);
    return 0;
 }
 void  Squeeze(char *s, char c)
 {
    ......
 }

解决方法

理解情况
在删除相同字符时,借用了一个变量i来记录相同字符的位置

其他(感悟、思考等,可选)

需要继续努力

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第八周 1400/2000 1/2 20/20
第九周 1600/2000 1/4 18/38
第十周 1700/2000 1/7 22/60
第十一周 1900/3000 1/9 30/90
posted @ 2024-12-07 16:48  段蕾  阅读(6)  评论(0编辑  收藏  举报