C语言博客作业—结构体

时间:2022-10-23 11:44:21

一、PTA实验作业

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

1. 本题PTA提交列表

C语言博客作业—结构体

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.代码截图

C语言博客作业—结构体

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

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

    C语言博客作业—结构体

    C语言博客作业—结构体

题目2:计算职工工资

1. 本题PTA提交列表

C语言博客作业—结构体

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.代码截图

C语言博客作业—结构体

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

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

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

1. 本题PTA提交列表

C语言博客作业—结构体

C语言博客作业—结构体

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.代码截图

C语言博客作业—结构体

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

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

    C语言博客作业—结构体

    C语言博客作业—结构体

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

    C语言博客作业—结构体C语言博客作业—结构体

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

C语言博客作业—结构体

三、阅读代码

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

C语言博客作业—结构体

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

2.结构体嵌套示例:

C语言博客作业—结构体

C语言博客作业—结构体

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

四、本周学习总结

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

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

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

共用体

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

递归

递归出口

递归式子

2.罗列本周一些错题。

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

C语言博客作业—结构体

  • 结构体中有些是数字有些是字符,输入的时候特别容易出现错误;比如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语言博客作业--结构体&amp&semi;文件

    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——结构体&amp&semi;文件

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

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

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

  7. C语言&vert;博客作业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. swift 命令

    http://blog.chinaunix.net/uid-15063109-id-5144658.html http://www.cnblogs.com/fczjuever/p/3224022.ht ...

  2. 收集经常使用的&period;net开源项目

    Json.NET http://json.codeplex.com/ Json.Net是一个读写Json效率比較高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单.通过Lin ...

  3. Python课程目录

    Python基础1 介绍.基本语法.流程控制 Python基础2 列表.字典.集合 Python基础3 基础3-函数

  4. JAVA基础--重新整理&lpar;1&rpar;后版

    比较喜欢用demo来讲解. 变量: public static void main(String[] args) { int age;//变量声明 age = 16;//变量的初始化,第一次赋值 ag ...

  5. 2017-2018-2 1723 『Java程序设计』课程 结对编程练习&lowbar;四则运算第三周总结

    相关测试过程截图 测试了由中缀表达式转后缀表达式的Junit测试,分别进行了整数的和分数的,测试成功截图 由于生成问题和计算问题中,问题都是随机产生的,暂时不会进行Junit测试,故没有进行,但应是正 ...

  6. cocos2d-js 免安装在线版 粒子编辑器 particle editor particle builder 兼容pex和plist

    http://onebyonedesign.com/flash/particleeditor/ 这个原来是为flash starling设计的粒子系统编辑器,但实际上,还是能兼容cocos2d的. 只 ...

  7. 过滤器系列(二)—— Cuckoo filter

    这一篇讲的是布谷过滤器(cuckoo fliter),这个名字来源于更早发表的布谷散列(cuckoo hash),尽管我也不知道为什么当初要给这种散列表起个鸟名=_= 由于布谷过滤器本身的思想就源自于 ...

  8. Error -27796&colon; Failed to connect to server &quot&semi;ip地址&quot&semi;&colon; &lbrack;10060&rsqb; Connection timed out

    如果出现Error -27796: Failed to connect to server "ip地址": [10060] Connection timed out 这样的错误,如 ...

  9. centos7部署PaaS平台环境(mesos&plus;marathon)

    假如有5台主机可以使用,ip地址如下 规划(2master+3slave) master: 192.168.248.205 ---master1 192.168.248.206 ---master2 ...

  10. mapper&period;xml文件

    1. 概述 mybatis的真正强大在于它的映射语句.由于它的异常强大,映射器的XML文件就显得相对简单,如果拿它跟具有相同功能的JDBC代码进行对比,省掉将近95%的代码.mybatis是针对SQL ...