一、PTA实验作业

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

1. 本题PTA提交列表

2. 设计思路


求出每名学生的总分
定义i,j循环变量
for i=0 to n
for j=0 to 3
p[i].sum+=p[i].score[j]将三个成绩累加即为总分
end 总分从高到低排序
定义i,j循环变量
定义结构体中间变量t
for i=0 to 5
for j=0 to 5-i
冒泡排序从高到低
end

3.代码截图

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

  • 答案错误:交换数值时只交换了总分,前面的都没被交换,导致答案输出错误。

  • 调试过程:

解决办法:将中间变量定义成结构体变量,交换时将结构体的内容整体交换

题目2:有理数比较

1. 本题PTA提交列表

2. 设计思路

struct y{
int mol;
int den;
}n,m; //定义表示分子分母的结构体
//并同时定义两个结构体变量m,n
定义a,b,c,d存放原始值
输入两个有理数
两个有理数进行通分
比较两分子大小 并利用a,b,c,d输出结果

3.代码截图

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

  • 答案错误:本题并不难,只用将两个数通分,再比较分子大小就好了。错误在于最后输出时的值已经被改变,输出错误

  • 调试过程:

解决办法:定义四个变量放原本的值,最后利用他们输出。

题目3:时间换算

1. 本题PTA提交列表

2. 设计思路

struct time{
int hh;
int mm;
int ss;
} now,result; //定义表示时间分钟秒钟的结构体
//并同时定义一个现在时间的和一个结果时间结构体变量 定义n为要加的秒数
输入结构体变量now和n
利用时间60进制来换算出结果时间(此处运算不太好表述)
result.ss=(now.ss+n)%60;//根据各自与60的进制关系计算
result.mm=(now.mm+(now.ss+n)/60)%60;
result.hh=now.hh+(now.mm+(now.ss+n)/60)/60;
if result.hh等于24 令它等于0

3.代码截图

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

  • 部分正确 :最后一秒到0点时输出的是24点

  • 调试过程:

解决办法:加入一个条件判断

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

三、阅读代码

整数分解为若干项之和

这道题是周三上机的一道题目,当时看了题目有思路,但是一直做不出来。回来以后上网一查,发现原来可以用递归的思路来解决这道题,确实简单很多。

从上面的代码不难看出他的递归出口是累加的总和等于了输入的 N。但是我觉得递归的特点是形式简单,但是实际上细节繁多。需要注意非常多细节。

#include<stdio.h>

int N;

int s[31]; // 存放划分结果
int top = -1; // 数组指针
int count = 0; // 统计输出的次数
int sum = 0; // 拆分项累加和 void division (int i); int main ()
{
scanf ("%d", &N); division (1); return 0;
} void division (int i) {
if (sum == N) {
count ++;
printf("%d=", N);
int k;
for (k=0; k<top; k++) {
printf("%d+", s[k]);
}
if (count%4 == 0 || s[top] == N) {
printf("%d\n", s[top]);
} else {
printf("%d;", s[top]);
}
return;
} // 输出部分
if (sum > N) {
return;
}
for (int j=i; j<=N; j++) {
s[++top] = j;
sum += j;
division (j);
sum -= j;
top --;
} // 算法主体
}

时间换算

这是戴洁的代码,她的方法简单明了,将所有时间都换成秒数,最后在换算回去。理解上面比我的60进制好很多,而且她最后输出也利用的时%02d来解决0点的问题,不用像我一样再加一个if判断。

四、本周学习总结

1.总结本周学习内容

结构体、共用体、枚举这种构造数据类型特点

  • 结构体:

结构体是把不同类型的数据组合成一个整体的自定义数据类型,它更像是数组的进化版,数组中的元素必须类型相同。

struct student
{
int num;
char name;
int grade;
};

结构体类型声明描述结构的组织形式,不分配内存。

  • 共用体:

共用体是使几个不同类型的变量共占一段内存(相互覆盖)

union 共用体名
{
类型标识符 成员名;
类型标识符 成员名;
.........
};
  • 结构体与共用体

    区别:储存方式不同

    联系:两者可相互嵌套

  • 枚举:

枚举元素按常量处理,在定义时由程序员指定,之后不能对他们赋值。

递归函数原理

  • 递归函数就是直接或者间接的调用自己本身的函数。

    缺点:递归快速耗内存,不方便阅读和维护,效率低

    优点:简洁,适合解决阶乘、涉及相反顺序的编程问题

  • 尾递归:最简单的调用函数,无需返回调用,相当于循环。

宏定义:用宏来定义一些符号变量,方便程序的编制。

  • 用途:

    符号常量,如PI,数组定义大小,以增加程序的灵活性

    简单的函数功能实现

    为程序书写带来一些方便

2.罗列本周一些错题。

  • 这一题的循环条件错了导致最后一个数没加上

  • 这道题的第二个空确实不会,听老师讲完后才明白为什么要这样定义。

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语言博客作业—结构体

    一.PTA实验作业 题目1:结构体数组按总分排序 1. 本题PTA提交列表 2. 设计思路 void calc //函数calc求出p指针所指的结构体数组中 n 名学生各自的总分 { 定义循环变量i: ...

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

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

  5. Java语言课程设计——博客作业教学数据分析系统(201521123107 张翔)

    #Java语言课程设计--博客作业教学数据分析系统(个人博客) 1.团队课程设计博客链接 [博客作业教学数据分析系统(From:网络五条狗)](http://www.cnblogs.com/fanta ...

  6. C语言第二次博客作业——分支结构

    一.PTA实验作业 题目1:计算分段函数 1.实验代码 #include<stdio.h> #include<math.h> int main(void) { double x ...

  7. C语言第二次博客作业---分支结构

    一,PTA实验作业 题目1.计算分段函数 本题目要求计算下列分段函数f(x)的值: 1.实验代码 double x,result; scanf("%lf",&x); if( ...

  8. C语言第九次博客作业--指针

    一.PTA实验作业 题目1:两个4位正整数的后两位互换 1. 本题PTA提交列表 2. 设计思路 定义循环变量i,两个数组a[4],b[4] for i=0 to 3 a[i]*p取各个位 *p/=1 ...

  9. C语言第二次博客作业—分支结构

    一.PTA实验作业 题目1:计算分段函数 1.实验代码 double x,y; scanf("%lf",&x); if(x>=0){ y=sqrt(x); print ...

随机推荐

  1. 使用IntelliJ IDEA 和 Maven创建Java Web项目

    1. Maven简介 相对于传统的项目,Maven 下管理和构建的项目真的非常好用和简单,所以这里也强调下,尽量使用此类工具进行项目构建, 它可以管理项目的整个生命周期. 可以通过其命令做所有相关的工 ...

  2. APICloud常用模块

    常用模块 基础 fs db 支付 wxPay aliPay unionPay 消息 ajpush rongCloud2

  3. mysql数据库导入导出 查询 修改表记录

    mysql数据导入导出: 导入: 把系统的文件的内容,保存到数据库的表里 导入数据的基本格式:mysql> load data infile "文件名" into table ...

  4. JVM 指令

    1.Demo 2.Class 文件说明 2.1 Class文件结构 2.2 jvm type, method signature 2.3 泛型表示 3.方法说明 3.1 方法结构 3.1.1 Thre ...

  5. dojo报错总结

    dojo报错总结 1.错误一 neteaseTracker is not defined dojo.js(第15行) 2.错误二 _10 is undefined _SearchMixin.js(第5 ...

  6. 使用jsoup抓取新闻信息

    1,jsoup简介 jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和 ...

  7. Netty高可靠性设计:优化建议

    尽管Netty的可靠性已经做得非常出色,但是在生产实践中还是发现了一些待优化点,本小节将进行简单说明.希望后续的版本中可以解决,当然用户也可以根据自己的实际需要决定自行优化. 1  发送队列容量上限控 ...

  8. Java中常见的Exception种类

    Java中常见的Exception种类 1.ClassNotFoundException 2.IOException 3.NoSuchFieldException 4.NoSuchMethodExce ...

  9. 一个简单的freemark输入输出的案例(二)

    freemarker入门实例 1.设计思路 (1)新建Maven Project (2)生成freemarker模板 (3)写freemarker页面ftl文件 (4)写测试文件 2.新建Maven ...

  10. C#图解教程 第二十章 异步编程

    笔记 异步编程 什么是异步 示例 async/await特性的结构什么是异步方法 异步方法的控制流await表达式取消一个异步操作异常处理和await表达式在调用方法中同步地等待任务在异步方法中异步地 ...