一、PTA实验作业

题目1:结构体数组按总分排序

1. 本题PTA提交列表

2. 设计思路

void calc   //函数calc求出p指针所指的结构体数组中 n 名学生各自的总分
{
定义循环变量i;
for i=0 to i<n
总分sum=三门课之和;
end for
}
void sort // 函数sort对p指针所指的结构体数组的学生数据按总分降序排序
{
定义循环变量i,j;
定义结构变量max,temp;
for i=0 to i<n-1
先把最大组设为第i组;
for j=i+1 to j<5
如果第j组的总分大于最大组的总分
利用temp交换,保留总分最大的组;
end for
第i组换为最大组;
end for
}

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

  • 一开始不知道作为中间交换的temp也要设成结构变量,提示编译错误后,试着换一个定义,然后就好啦。改正了一些编译错误后,一开始输出一直都是最大的那个五号,是排序法掌握的不够熟练,导致找到最大值后就结束程序了;
  • 改正后,输出结果如下:最后一个比较出现错误,可能是循环条件有问题;但是调试不出什么,后来想起来上一次自己犯的错误,转换的时候没有加上大括号!!!一步一步执行所以调试不容易发现这个地方有错,,,



题目2:计算职工工资

1. 本题PTA提交列表

2. 设计思路

struct
{
char name[20];
float jbgz;
float fdgz;
float zc;
}fact[10000];//该结构体表示职员的信息,包括姓名、基本工资、浮动工资和支出
主函数
{
定义循环变量 i;职员人数N;
输入N;
for i=0 to i<N
输入职员信息:姓名、基本工资、浮动工资和支出 ;
end for
for i=0 to i<N
输出职员的姓名,实发工资( 基本工资加浮动工资减支出 );
end for

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

  • 由于没有给出职员的人数,所以一开始只给了十个但是显示段错误,我以为是名字的长度不够,但是并不是;看了同学的代码以后发现可能是职员人数的问题,可以先输入N再定义结构体,试了一下确实可以,但是我觉得先定义结构体代码看起来会比较整洁,所以试了一百个,还是不够,我就直接改成了一万个就可以了。

题目3:通讯录的录入与显示

1. 本题PTA提交列表



2. 设计思路

struct  person
{
int number;
char name[100];
char birth[100];
char gender;
char line[100];
char phone[100];
}p[100];//该结构体表示联系人的编号、姓名、出生日期、性别、固定电话号码、移动电话号码
主函数
{
定义输入联系人的人数为N,查询的人数为K,num,循环变量i,j,flag;
输入N;
for i=0 to i<N
编号=i,输入 联系人的编号、姓名、出生日期、性别、固定电话号码、移动电话号码;
end for
输入K;
定义数组a[K];
for i=0 to i<K
输入a[i];
for i=0 to i<K
flag=0;
for j=0 to j<N
if(找到编号) 输出联系人的姓名、 固定电话号码、移动电话号码、性别、出生日期,flag=1;
end for
if(flag等于0) 输出"Not Found"
end for
}

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

  • 输入实例一开始总是输出p[0]和p[1],通过调试发现输出里面一开始输出p[i],后来改成嵌套循环后应该输出的是p[j],所以导致答案错误;改正后输出正确,但是不能输出没有找到的情况,猜测是flag出现问题;





  • 判断一次找到后flag的值就变成1了,这个样子没有办法每次都判断是否找到,所以把flag=0放到外层循环就可以进行正确判断了;

二、截图本周题目集的PTA最后排名。

三、阅读代码

1. 输入10个同学的姓名、数学成绩、英语成绩和物理成绩,确定总分最高的同学,并打印其姓名及其三门课程的成绩。



做了本周作业不会觉得这道题很麻烦,但是该示例的解题过程引入了结构体指针(定义的变量名有点长),这是我写作业的时候没有用到的(因为不太熟悉所以不敢用)。

2.结构体嵌套示例:





本来想用一个嵌套结构体写一道作业,但是没有写出来,所以看了看这段代码,稍微理解了一点嵌套。

四、本周学习总结

1.自己总结本周学习内容。

结构体(数据结构丰富 ,型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等都可以包含在结构体内)

结构体
struct 结构体类型名
{
类型1 成员1;
类型2 成员2;
......
类型n 成员n;
}变量列表; //如果要声明变量结构,可以在结构定义时,在结束的分号之前加上这些变量的名字,也可以在定义结构之后使用struct 结构名 变量列表;语句声明结构变量。
//只有相同结构类型的变量之间才可以直接整体赋值!(不能在结构体内部直接给成员赋值)
//嵌套定义的结构变量中,每个成员按从左到右,从外到内的方式引用。

共用体

union 共用体名{
成员列表
}变量列表;
//值为最后一次存放的成员的值
//长度等于最长成员的长度

递归

递归出口

递归式子

2.罗列本周一些错题。

  • 结构体的嵌套不会定义,没有理解它的意义,所以写错了;

  • 结构体中有些是数字有些是字符,输入的时候特别容易出现错误;比如PTA最后一题,把生日定义成整型,再嵌套一个年月日结构体,但是输入输出的过程一直都出现问题,后来改成字符型了。后来通过本周的阅读代码对嵌套结构体有所了解。

  • 还是不太能理解结构体的数组范围要如何取,比如作业中有些题目给出名字长度不超过多少即可,那么数组长度定义成超过不就好了,为什么有的不能全部正确,非要很大才可以通过。

C语言博客作业—结构体的更多相关文章

  1. C语言博客作业-结构体

    一.PTA实验作业 6-2 按等级统计学生成绩 1. 本题PTA提交列表 2. 设计思路 定义i,count存放不及格人数 for i=0 to n-1{ 判断 score的值的范围 if 100&g ...

  2. C语言博客作业--结构体,文件

    1.本章学习总结(2分) 1.1 学习内容总结 (1)结构体如何定义.成员如何赋值 结构体的一般形式为:      struct  结构体名     {      数据类型 成员名1:      数据 ...

  3. c语言博客作业--结构体&文件

    1.本章学习总结 1.1思维导图 1.2.本章学习体会 本章学到了结构体如何构建,用typedef进行重定义结构体,结构指针,访问结构体的方式等. 文件:文件的读取,文件读写的几个函数,基本了解了文本 ...

  4. C语言第十次博客作业--结构体

    一.PTA实验作业 题目1: 结构体数组按总分排序 1. 本题PTA提交列表 2. 设计思路 求出每名学生的总分 定义i,j循环变量 for i=0 to n for j=0 to 3 p[i].su ...

  5. C语言博客作业06——结构体&文件

    C语言博客作业06--结构体&文件 1.本章学习总结 1.1思维导图 1.2.本章学习体会 在本周的学习中,我们学习了关于结构体和文件的内容.结构体的本身并不难,但以结构体为基础的链表还是让我 ...

  6. C语言博客作业6---结构体&文件

    C语言博客作业6---结构体&文件 1.本章学习总结(2分) 1.1思维导图 请以思维导图总结本周的学习内容.如下图所示: 1.2.学习体会 描述本周学习感受,也可以在这里提出你不理解地方.对 ...

  7. C语言|博客作业10

    问题 回答 C语言 博客作业10 这个作业要求在哪里 作业要求 我在这个课程的目标是 熟练循环语句的用法 这个作业在哪个具体方面帮助我实现目标 pta作业 参考文献 <C语言程序设计> 1 ...

  8. C语言博客作业5--指针

    C语言博客作业5--指针 1.本章学习总结(2分) 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里 ...

  9. C语言博客作业4--数组

    C语言博客作业4--数组 1.本章学习总结 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里提出你不 ...

随机推荐

  1. class-朴素贝叶斯NaiveBayes

    1 朴素贝叶斯法的学习与分类1.1 基本原理2 参数估计2.1 极大似然估计2.2 算法2.3 贝叶斯估计 1 朴素贝叶斯法的学习与分类 Naive Bayes是基于贝叶斯定理和特征条件独立的假设的分 ...

  2. Kettle根据时间戳同步数据实现

    1 Kettle总体步骤 由于Kettle自身的特殊性以及在多个步骤中kettle自身处理数据库事务的特殊性,尝试了很多种方案,最终确定暂使用如下方案. 1.使用此方案可以解决kettle本身数据库事 ...

  3. 「拆小鹤」使用 python 实现 QQ机器人服务。

    使用的是python的qqbot机器人库,我其实只是实现了这个库的一个插件. 具体的说明,我觉得qqbot的官方文档,还有我的插件的注释都写得很详细了,可以直接看.所以有空再写吧. 没错我就是懒..

  4. flash数据交互

    新随笔 联系 订阅 管理 随笔 - 14  文章 - 5  评论 - 0 安卓中webview读取html,同时嵌入Flex的SWF,交互 安卓activity与html交互很简单,用javascri ...

  5. 关系型数据库工作原理-事务管理(一)(翻译自Coding-Geek文章)

    本文翻译自Coding-Geek文章:< How does a relational database work>. 原文链接:http://coding-geek.com/how-dat ...

  6. Android Foreground Service (前台服务)

    一.如何保活后台服务 在Android Services (后台服务) 里面,我们了解了Android四大组件之一的Service,知道如何使用后台服务进行来完成一些特定的任务.但是后台服务在系统内存 ...

  7. mysql的下载安装

    不知道为什么,写这篇文章我总是想感慨一下.首先我的感谢和敬佩那些能把知识和技术分享出来的开发者,不管你的技术是否很牛,但是你的精神让我十分敬佩.学java的已经二天了,除了问问朋友,给我最大帮助的就是 ...

  8. CVPR2018: Unsupervised Cross-dataset Person Re-identification by Transfer Learning of Spatio-temporal Patterns

    论文可以在arxiv下载,老板一作,本人二作,也是我们实验室第一篇CCF A类论文,这个方法我们称为TFusion. 代码:https://github.com/ahangchen/TFusion 解 ...

  9. iOS加密算法总结

    常用加密算法: DES:Data Encryption Standard,即数据加密算法,它是IBM公司于1975年研究成功并公开发表的. DES(数据加密标准)原理: DES是一个分组加密算法,它以 ...

  10. 理解 dispatch_get_specific

    这篇文章原来在用 Github Pages 搭建的博客上,现在决定重新用回博客园,所以把文章搬回来. dispatch_queue_set_specific用于给一个队列设置相关的上下文数据,disp ...