20241313 刘鸣宇 《计算机基础与程序设计》第13周学习总结

作业信息

这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)
这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)
这个作业的目标 <写上具体方面>
作业正文 ... 本博客链接

教材学习内容总结

《C语言程序设计》第十二章结构体与数据结构基础

  1. 结构体(Structure)

    • 结构体的定义和使用:如何声明结构体类型,以及如何创建和使用结构体变量。
    • 结构体成员的访问:使用点(.)和箭头(->)运算符访问结构体成员。
    • 结构体数组:创建和操作结构体数组,以及如何遍历结构体数组。
    • 结构体与函数:如何将结构体作为参数传递给函数,以及如何从函数返回结构体。
  2. 数据结构基础

    • 数据结构的概念:介绍数据结构的基本概念,包括数据的组织、存储和管理方式。
    • 线性数据结构:如数组、链表等,介绍它们的结构、特点和基本操作。
    • 非线性数据结构:如树、图等,介绍它们的结构、特点和基本操作。
  3. 链表(Linked List)

    • 链表的定义:链表是一种动态数据结构,由节点组成,每个节点包含数据和指向下一个节点的指针。
    • 单链表:介绍单链表的创建、插入、删除和遍历操作。
    • 双向链表和循环链表:介绍这两种链表的特点和基本操作。
  4. 栈(Stack)

    • 栈的定义:栈是一种遵循后进先出(LIFO)原则的数据结构。
    • 栈的实现:使用数组或链表实现栈,介绍栈的基本操作,如入栈(push)、出栈(pop)和查看栈顶元素。
  5. 队列(Queue)

    • 队列的定义:队列是一种遵循先进先出(FIFO)原则的数据结构。
    • 队列的实现:使用数组或链表实现队列,介绍队列的基本操作,如入队(enqueue)、出队(dequeue)和查看队头元素。
  6. 树(Tree)

    • 树的定义:树是一种层次结构的数据结构,由节点组成,每个节点可以有零个或多个子节点。
    • 二叉树:介绍二叉树的定义、特点和基本操作,如遍历(前序、中序、后序遍历)。
  7. 图(Graph)

    • 图的定义:图是一种复杂的非线性数据结构,由顶点和边组成。
    • 图的表示:邻接矩阵和邻接表两种常见的图表示方法。
    • 图的遍历:深度优先搜索(DFS)和广度优先搜索(BFS)。
  8. 排序和查找算法

    • 排序算法:介绍几种基本的排序算法,如冒泡排序、选择排序、插入排序等。
    • 查找算法:介绍几种基本的查找算法,如线性查找和二分查找。
      思维导图
      《C语言程序设计》第四版第十二章

      ├── 结构体
      │ ├── 结构体定义
      │ │ └── struct 关键字
      │ ├── 结构体变量
      │ │ ├── 声明
      │ │ └── 初始化
      │ ├── 结构体成员访问
      │ │ ├── 点运算符 (.)
      │ │ └── 箭头运算符 (->)
      │ └── 结构体数组
      │ └── 遍历和操作

      ├── 数据结构基础
      │ ├── 数据结构概念
      │ └── 线性与非线性结构

      ├── 线性数据结构
      │ ├── 数组
      │ └── 链表
      │ ├── 单链表
      │ │ ├── 节点定义
      │ │ ├── 插入操作
      │ │ └── 删除操作
      │ ├── 双向链表
      │ └── 循环链表

      ├── 非线性数据结构
      │ ├── 栈
      │ │ ├── 后进先出 (LIFO)
      │ │ └── 基本操作
      │ ├── 队列
      │ │ ├── 先进先出 (FIFO)
      │ │ └── 基本操作
      │ └── 树
      │ ├── 二叉树
      │ │ ├── 遍历方法
      │ │ └── 特点
      │ └── 图
      │ ├── 顶点和边
      │ ├── 邻接矩阵
      │ └── 邻接表

      └── 排序与查找算法
      ├── 排序算法
      │ ├── 冒泡排序
      │ ├── 选择排序
      │ └── 插入排序
      └── 查找算法
      ├── 线性查找
      └── 二分查找

基于AI的学习

代码练习

include <stdio.h>

include <stdlib.h>

include <string.h>

define N 40

typedef struct
{
long num;
char name[10];
int score[3];
int z;
float p;
} STUDENT;
void READ(STUDENT x[],int n);
void CALCULATE(STUDENT x[],int n);
void RANK1(STUDENT x[],int n);
void RANK2(STUDENT x[],int n);
void SEARCH(STUDENT x[],int n);
void Printf(STUDENT x[],int n);
void WriteFILE(STUDENT x[],int n);
void READFILE(STUDENT x[],int n);
int main()
{
int n;
int y;
STUDENT x[N];
printf("1.Append record\n2.Caculate total and average score of every student\n3.Sort in ascending order by total score of every student\n4.Sort in dictionary order by name\n5.Search by name\n6.Write to a file\n7.Read from a file\n0.Exit\n");
do
{
printf("Please enter your choice:");
scanf("%d",&y);
switch(y)
{
case 1:
printf("Please input the student number:");
scanf("%d",&n);
READ(x,n);
break;
case 2:
CALCULATE(x,n);
Printf(x,n);
break;
case 3:
RANK1(x,n);
Printf(x,n);
break;
case 4:
RANK2(x,n);
Printf(x,n);
break;
case 5:
SEARCH(x,n);
break;
case 6:
WriteFILE(x,n);
break;
case 7:
READFILE(x,n);
Printf(x,n);
break;
}
}
while(y!=0);
}
void READ(STUDENT x[],int n)
{
int i;
for(i=0; i<n; i++)
{
printf("Input record:");
scanf("%ld %s %d %d %d",&x[i].num,&x[i].name,&x[i].score[0],&x[i].score[1],&x[i].score[2]);
}
}
void CALCULATE(STUDENT x[],int n)
{
int i;
for(i=0; i<n; i++)
{
x[i].z=x[i].score[0]+x[i].score[1]+x[i].score[2];
x[i].p=x[i].z/3.0;
}
}
void RANK1(STUDENT x[],int n)
{
int i,j;
int k;
STUDENT t;
for(i=0; i<n-1; i++)
{
k=i;
for(j=i+1; j<n; j++)
{
if(x[k].z<x[j].z)
k=j;
}
if(k!=i)
{
t=x[i];
x[i]=x[k];
x[k]=t;
}
}
}
void RANK2(STUDENT x[],int n)
{
int i,j;
int k;
STUDENT t;
for(i=0; i<n-1; i++)
{
k=i;
for(j=i+1; j<n; j++)
{
if(strcmp(x[k].name,x[j].name)>0)
k=j;
}
if(k!=i)
{
t=x[i];
x[i]=x[k];
x[k]=t;
}
}
}
void SEARCH(STUDENT x[],int n)
{
int i;
char m[10];
getchar();
printf("Please input the name:");
scanf("%s",m);
for(i=0; i<n; i++)
{
if(strcmp(m,x[i].name)0)
printf("%10ld%8s%4d%4d%4d%8d%8.2f\n",
x[i].num,x[i].name,
x[i].score[0],x[i].score[1],x[i].score[2],
x[i].z,x[i].p);
}
}
void Printf(STUDENT x[],int n)
{
int i;
for(i=0; i<n; i++)
{
printf("%10ld%8s%4d%4d%4d%8d%8.2f\n",
x[i].num,x[i].name,
x[i].score[0],x[i].score[1],x[i].score[2],
x[i].z,x[i].p);
}
}
void WriteFILE(STUDENT x[],int n)
{
FILE *fp;
int i;
if((fp=fopen("score.txt","w"))
NULL)
{
printf("Failure to open score.txt!\n");
exit(0);
}
for(i=0; i<n; i++)
{
fprintf(fp,"%10ld%8s%4d%4d%4d%8d%8.2f\n",
x[i].num,x[i].name,
x[i].score[0],x[i].score[1],x[i].score[2],
x[i].z,x[i].p);
}
/fwrite(x,sizeof(STUDENT),n,fp);/
fclose(fp);
}
void READFILE(STUDENT x[],int n)
{
FILE *fp;
int i;
if((fp=fopen("score.txt","r"))==NULL)
{
printf("Failure to open score.txt!\n");
exit(0);
}
for(i=0; i<n; i++)
{
fscanf(fp,"%ld%s%d%d%d%d%f\n",
&x[i].num,x[i].name,
&x[i].score[0],&x[i].score[1],&x[i].score[2],
&x[i].z,&x[i].p);

}
/*fread(x,sizeof(STUDENT),n,fp);*/fclose(fp);

}
第一个点就是在第一个问题中的fgets()函数中,fgets()函数在读入时会把换行符\n也读入,导致我输入的是姓名\n,因此与结构体中的姓名字符串数组中的姓名不一样,导致了搜索函数的出错。第二个就是fwrite()函数与fread()函数的使用,这两个函数在写入文件和从文件中读取时虽然代码简便,但也存在一些问题。在编写代码时前后更换fwrite()函数、fread()函数、fprintf()函数、fscanf()函数的过程中,暴露出我对文件那部分的函数的使用注意事项不清楚,对文件部分的函数的掌握还不够熟练,文件部分的函数的使用最好要一一对应,而不要混乱使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/856849.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中考阅读理解深入逻辑分析-002 Battle of the Classroom: Bits vs. Books 课堂之战:比特对抗书本

文章正文 The debate on “textbooks vs computers” has been going on for years. How much technology is in the classroom? Should textbooks be placed by notebook computers? The is no doubt that computers are powerful. Computer-based lesson plans are updated…

基于HarmonyOS 5.0 (Next)技术的渐变模糊效果技术实现【代码实战】

基于HarmonyOS 5.0 (Next)技术的渐变模糊效果技术实现【代码实战】 HarmonyOS 5.0(Next)作为华为自主研发的操作系统,以其强大的性能和丰富的开发功能吸引了众多开发者。本文将详细介绍如何在HarmonyOS 5.0(Next)中实现渐变模糊效果,并通过代码实战展示具体操作步骤。Ark…

渗透测试-前后端加密分析之RSA+AES

本文是高级前端加解密与验签实战的第8篇文章,本系列文章实验靶场为Yakit里自带的Vulinbox靶场,本文讲述的是绕过RSA与AES加密来爆破登录。本文是高级前端加解密与验签实战的第8篇文章,本系列文章实验靶场为Yakit里自带的Vulinbox靶场,本文讲述的是绕过RSA与AES加密来爆破登…

MCGSPRO密码输入访问页面

MCGSPRO密码输入访问页面

jquery响应式弹出层lightbox插件slick-lightbox.js

slick-lightbox.js是一款基于slick.js和jquery的响应式弹出层lightbox插件。该jquery lightbox插件支持图片懒加载,支持键盘交互,支持HTML5 History API等。功能非常强大。在线预览 下载安装 可以通过bower来安装slick-lightbox.js插件。bower install -S slick-lightbox …

我用cursor, 半就开发了一个手机壁纸小程序,真的太强了

我用cursor, 半就开发了一个手机壁纸小程序,真的太强了。原来一周的工作量,半天搞定。体验可以微信搜索《程序员博博》同名。前言 我用chatGPT帮我写后端爬虫,分析知乎html代码,爬取知乎壁纸。然后用cursor AI工具,完全使我一个不懂前端uniapp框架的人,开发了一个小程序手…

投票:你愿意为了gxyz的图标捐献token吗?

投票:你愿意为了gxyz的图标捐献token吗?(点击选项进行投票): 愿意,请把token发给洛谷上的Leo2126 不愿意,但不愿意加入铁一 不愿意,要去铁一 蒟蒻的每一天

存储引擎整理

// 数据库的结构 // 连接层,服务层,引擎层,存储层 //创建表时,指定存储引擎 // create table name ( // ... // )engine = 存储引擎; // 查看当前数据库支持的存储引擎 // show engines; // ---------------------------------------------------------------------------…

引用 | 如何将正文引用批量设置上标?

本方法适用对象: 请注意,本方法针对下图所示论文引用格式: ①外部:半角中括号 ②内部:数字,数字与半角逗号的组合,数字与连接符号的组合,数字、半角逗号与连接符号的组合主要步骤: 1. 打开高级查找2. 在查找内容中输入\[[0-9,-]{1,}\],并勾选搜索选项中的“使用通配符…

2024秋季学期 人工智能导论期末复习笔记

2024秋季学期(二秋)人工智能导论期末复习笔记Chapter3 知识推理Chapter4 不确定推理Chapter5-1 机器学习Chapter5-2 深度学习Chapter5-3 强化学习

鸿蒙开发实战:揭秘页面与项目生命周期,实现精准监控

前言 在鸿蒙应用开发中,每一个页面和组件都承载着特定的生命周期。这些生命周期阶段,如同生命的轨迹,记录着页面从诞生到消亡的每一个重要时刻。深入理解和监控这些生命周期,不仅能提升应用性能,还能帮助我们更好地把握用户体验。 1. 鸿蒙@Component组件生命周期详解 在鸿…

2024-2025-1 20241318M《计算机基础与程序设计》第十三周学习总结

作业信息这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK13这个作业的目标 <自学教材《C语言程序设计》第12章并完成云班课测试>| |作业正文|https://i.cnblogs.com…