2019年春季学期第九周作业

AQ
这个作业属于那个课程C语言程序设计II
这个作业要求在哪里2019春第九周作业
我在这个课程的目标是了解并且应用结构体和数组的知识
这个作业在那个具体方面帮助我实现目标掌握了数组的简单编程及应用,了解了结构体
参考文献C语言chap3和C语言chap9

一、本周完成的作业

题目1.6-1 按等级统计学生成绩 (20 分)

本题要求实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。

函数定义接口

int set_grade( struct student *p, int n );

其中p是指向学生信息的结构体数组的指针,该结构体的定义为:

struct student{int num;char name[20];int score;char grade;
};

n是数组元素个数。学号num、姓名name和成绩score均是已经存储好的。set_grade函数需要根据学生的成绩score设置其等级grade。等级设置:85-100为A,70-84为B,60-69为C,0-59为D。同时,set_grade还需要返回不及格的人数。

裁判测试程序:

#include <stdio.h>
#define MAXN 10struct student{int num;char name[20];int score;char grade;
};int set_grade( struct student *p, int n );int main()
{   struct student stu[MAXN], *ptr;int n, i, count;ptr = stu;scanf("%d\n", &n);for(i = 0; i < n; i++){scanf("%d%s%d", &stu[i].num, stu[i].name, &stu[i].score);} count = set_grade(ptr, n);printf("The count for failed (<60): %d\n", count);printf("The grades:\n"); for(i = 0; i < n; i++)printf("%d %s %c\n", stu[i].num, stu[i].name, stu[i].grade);return 0;
}/* 你的代码将被嵌在这里 */

输入样例:

10
31001 annie 85
31002 bonny 75
31003 carol 70
31004 dan 84
31005 susan 90
31006 paul 69
31007 pam 60
31008 apple 50
31009 nancy 100
31010 bob 78

输出样例:

The count for failed (<60): 1
The grades:
31001 annie A
31002 bonny B
31003 carol B
31004 dan B
31005 susan A
31006 paul C
31007 pam C
31008 apple D
31009 nancy A
31010 bob B

1).实验代码

int set_grade( struct student *p, int n )
{
int count=0,i;
for(i=0;i<n;i++)  
{  if((*p).score<60) {  (*p).grade='D';  count++;  }  else if((*p).score>=60&&(*p).score<=69) {(*p).grade='C';  } else if((*p).score>=70&&(*p).score<=84)  {(*p).grade='B'; }else {(*p).grade='A';} p++;
}  
return count; 
}

2) .设计思路

mermaid
flowchat
st=>start: 函数声明,定义相关变量,声明结构体
op=>operation: 利用if和else-if来进行成绩在不同阶层的分级
op1=>operation: 统计不及格人数
e=>end: return count;st->op->op1->e

1585170-20190426160947148-97878068.png

3).本题调试过程碰到问题及解决办法

1585170-20190426161002344-1202156129.png

问题:老实说这道题对我来说不算很南,难的只有在指针上的部分,还有些许粗心。

解决方法:查阅书籍,调试代码。

4).运行结果截图

1585170-20190426161021862-709312407.png

题目2.7-1 一帮一 (15 )

“一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中,将名次最靠前的学生与名次最靠后的异性学生分为一组。

输入格式:

输入第一行给出正偶数N(≤50),即全班学生的人数。此后N行,按照名次从高到低的顺序给出每个学生的性别(0代表女生,1代表男生)和姓名(不超过8个英文字母的非空字符串),其间以1个空格分隔。这里保证本班男女比例是1:1,并且没有并列名次。

输出格式:

每行输出一组两个学生的姓名,其间以1个空格分隔。名次高的学生在前,名次低的学生在后。小组的输出顺序按照前面学生的名次从高到低排列。

输入样例:

8
0 Amy
1 Tom
1 Bill
0 Cindy
0 Maya
1 John
1 Jack
0 Linda

输出样例:

Amy Jack
Tom Linda
Bill Maya
Cindy John

1).实验代码

#include<stdio.h>
#include<string.h>struct student {  int sex;char name[10];int flag;  }; 
int main(){ struct student s[100]; int n;int count=0;scanf("%d",&n);for(int i=0;i<n;i++) {scanf("%d %s",&s[i].sex,&s[i].name);s[i].flag=0;} for(int i=0;i<n/2;i++) {for(int k=n-1;k>=n/2;k--){if((s[i].sex!=s[k].sex)&&s[i].flag==0&&s[k].flag==0){s[i].flag =1;s[k].flag =1;count=count+2;printf("%s %s\n",s[i].name ,s[k].name );}}if(count==n)break;}
}

2) 设计思路

mermaid
flowchat
st=>start: 编译预处理函数,定义结构体
op=>operation: 定义相关变量,申明结构体
io=>inputoutput: 利用一个循环来输入样例
op1=>operation: 在利用for的双重嵌套循环来进行分配任务
cond=>condition: 是异性且还没有分配?
op3=>operation: 排除未配对统计已配对
cond1=>condition: count==n?
io1=>inputoutput: 输出配对表
e=>endst->op->io->op1->cond
cond(yes,right)->op3->io1->cond1
cond(no)->op1
cond1(no)->op1
cond1(yes)->e

1585170-20190426161040402-807866595.png

3).本题调试过程碰到问题及解决办法

1585170-20190426161052523-1202177006.png

问题:提交pta之后老师答案部分正确,我就在想是不是少了什么,从答案的测试点出发进行调试。

解决方法:在最后在多定义一个flag来作为标记是否已分配,提交后答案正确。

4).运行结果截图

1585170-20190426161114500-137071823.png

题目3.*7-2 考试座位号 (15 分**)

每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。

输入格式:

输入第一行给出一个正整数 N(≤1000),随后 N 行,每行给出一个考生的信息:准考证号 试机座位号 考试座位号。其中准考证号由 16 位数字组成,座位从 1 到 N 编号。输入保证每个人的准考证号都不同,并且任何时候都不会把两个人分配到同一个座位上。
考生信息之后,给出一个正整数 M(≤N),随后一行中给出 M 个待查询的试机座位号码,以空格分隔

输出格式:

对应每个需要查询的试机座位号码,在一行中输出对应考生的准考证号和考试座位号码,中间用 1 个空格分隔。

输入样例

4
3310120150912233 2 4
3310120150912119 4 1
3310120150912126 1 3
3310120150912002 3 2
2
3 4

输出样例

3310120150912002 2
3310120150912119 1

1).实验代码

#include<stdio.h>
#include<string.h>
struct student {  char num[20];int x,y;  }; 
int main(){ struct student s[1100]; int n,m;scanf("%d\n",&n);for(int i=0;i<n;i++) {scanf("%s %d %d\n",&s[i].num,&s[i].x,&s[i].y);} scanf("%d\n",&m);int b[m];for(int i=0;i<m;i++) {scanf("%d",&b[i]);} for(int i=0;i<m;i++) {for(int k=0;k<n;k++){if(s[k].x==b[i]) {printf("%s %d\n",s[k].num,s[k].y);}}}
}

2) 设计思路

mermaid
flowchat
st=>start: 声明结构体,定义相关变量和数组
io=>inputoutput: 输入n,并且利用循环输入学号和座位号
io2=>inputoutput: 输入m,并且利用for循环输入座位号
op=>operation: 利用for的二重循环来进行在座位号的比较
cond=>condition:  s[k].x==b[i]?
io3=>inputoutput: 输出学号座位号
e=>end: 结束函数st->io->io2->op->cond
cond(yes)->io3->e
cond(no)->op

1585170-20190426161134597-300054616.png

2) 本题调试过程中碰到问题及解决办法

1585170-20190426161148739-1035357479.png

问题:pta提交答案错误,软件上运行无法输出

解决方法:仔细寻找发现原来是数组b[m]的位置没放对应当放在输入m之后。

4) 运行结果截图

1585170-20190426161211877-132738813.png

题目4.思考题

1.什么是递归函数?

答:调用自己定义的函数也可以觉递归函数,这是我自己比较浅显的理解,具体参考:什么是递归函数?

2..递归函数的优缺点。

答: 我怕觉得吧优点在于实现比较简单,缺点的话就是比较麻烦,调用的耗时长,效率也可能很低,占用空间也会大一些。这是我的理解。

3..如何归纳出递归式?

答: 我觉得递归式都是前人总结的,没有足够的经验是没有成型的总结式。我仔细阅读过这篇文章,这就是我得出的体会。参考:C语言递归操作总结

二、学习进度统计和学习感悟

1).学习进度统计

1585170-20190530110427973-842010296.png

2).学习感悟

本次作业让我感觉难度非凡,深深的感到自己在结构体知识匮乏到了什么程度,几天的时间才能完成作业,思路也不多太难了呀,耗时长,题目难,所幸在这个过程中还是又学习到一些东西的。

(1)本周你学习哪些内容?有哪些收获?
本周学习了结构体和指针和数组的结合,三者的结合,难度误以又提高了一个难度,难上加难。掌握了结构体的简单应用,至少基础作业做出来了。

(2)本周所学内容中你觉得哪些地方是难点?对此你做了哪些措施去客服这些难点?
我觉得都挺难的,主要看知识量和操作量的积累。我也精良去多做一些编程题目,题目太难的也不会去设计,都是先尝试少量又相对简单的编程题目。

三、结对编程的过程及优缺点

关于结对编程
1585170-20190426165017530-648847303.jpg

本次结对编程地点在寝室,本次结对与室友搭档,过程还是依然比较愉快的,结对编程中我们讨论了第九周基础作业第三题中代码总是在软件上运行无法输出,我们进行了长时间的调试和讨论分别的除了不一样的结果。
结对编程的优缺点:

优点:1.结对编程更适用于解决一些方向性的问题;2.结对编程中,双方的互动目的在于开启思路,避免单独编程时思维容易阻塞的情况。3.多双眼睛,少点 bug,也能增加不一样的编程经验

缺点:拍照编程还是有些让人觉得不太自然。

转载于:https://www.cnblogs.com/LfanWyuXooo/p/10775133.html

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

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

相关文章

有源光缆AOC在40G网络布线中备受欢迎的主要原因

现在很多数据中心已经在部署40G网络&#xff0c;在40G网络传输方案中会需要用到40G QSFP光模块、40G高速线缆和40G有源光缆等产品&#xff0c;现如今用较多的是40G有源光缆&#xff0c;而40G高速线缆具有绝对的成本优势&#xff0c;市场对高速线缆的需求量也是有增无减&#xf…

前端大框架知识归纳与总结

转载于:https://juejin.im/post/5cc447ec6fb9a0324c20c412

accept和select的区别

2019独角兽企业重金招聘Python工程师标准>>> 参考&#xff1a;https://blog.csdn.net/lsgqjh/article/details/65629609 select&#xff1a;查看指定fd_set中socket状态&#xff0c;如果fd_set中有套接字准备就绪&#xff08;触发&#xff08;读、写或执行&#xff…

【肥朝】看源码,我为什么推荐IDEA?

本文并不评论Eclipse与IDEA孰好孰坏,但是由于肥朝平时都是使用IDEA开发的,所以推荐IDEA.这个和肥朝平时都是吃粤菜,所以推荐的都是粤菜为主,但是并不是说其他菜不好吃,肥朝不挑食! 1.条件断点 看源码的时候,经常遇到这个情况,源码中有个for循环,关键是这个list的size有时候长达…

【技术干货+限时活动】openstack原理及在华为云中的应用

五一小假提前放送&#xff0c;实力干货课程&#xff0c;讲清openstack原理及在华为云中的应用&#xff0c;一门路过别错过的课程&#xff01;免费学习参加限时活动&#xff0c;评论课程&#xff0c;智能音响体脂秤领回家&#xff01;快戳&#xff1a;http://u6.gg/sxHV5转载于:…

ansible的参数及常用模块

ansible的参数及常用模块参数&#xff1a;查看帮助手册&#xff1a;ansible-doc -a查指定模块的帮助&#xff1a;ansible-doc -s 模块名ansible-doc -s setup 查看setup模块的帮助信息ansible-doc -lansible-doc -s fileOptions:-a, --all Show …

[HNOI2009]有趣的数列

[HNOI2009]有趣的数列 有一个长度为2n的1~2n的全排列&#xff0c;保证其奇数项递增&#xff0c;偶数项递增&#xff0c;并且相邻的奇数项和偶数项&#xff0c;后面的偶数项大于奇数项的方案数\(mod\ p,n<1000000,P<1000000000\)。 解 注意到2n&#xff0c;实际上也就猜到…

bzoj 3881 [Coci2015]Divljak——LCT维护parent树链并

题目&#xff1a;https://www.lydsy.com/JudgeOnline/problem.php?id3881 对 S 建 SAM &#xff0c;每个 T 会让 S 的 parent 树的链并答案1&#xff1b;在 T 走每一步的时候&#xff0c;走到的节点用 LCT access 一下&#xff0c;就能找到该点到 parent 根的链。 给链打标记。…

介绍一下再Apache下的Tomcat负载均衡的一些使用问题

在负载均衡技术中&#xff0c;硬件设备是比较昂贵的&#xff0c;对于负载均衡的学习者如果不是在企业中应用或者是学员中学习&#xff0c;很少有机会能碰到实际操作的训练。&#xff08;http://xz.8682222.com&#xff09;所以&#xff0c;很多朋友都会选择软件方面的设置进行研…

Java利器之UML类图详解

本文转载自https://blog.csdn.net/xiehuimx/article/details/53427452。 前言UML&#xff08;Unified Modeling Language&#xff09;中文统一建模语言&#xff0c;是一种开放的方法&#xff0c;用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的…

Material Design之AppBarLayout总结

CoordinatorLayout 官方文档 CoordinatorLayout 是一个加强型的FrameLayout. CoordinatorLayout 主要用于两种场景: 作为activity最外层布局 作为协调一个或多个具有特定交互的子view的父布局 子view之间的特定协调动作&#xff0c;通过app:layout_behavior指定&#xff0c;如…

Git和GitHub快速入门

Git入门 简介 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的分布式版本控制系统。 工具 准备工具 Git下载地址&#xff1a;https://git-scm.com Git配置 配置的内容主要是&#xff1a;用户名和邮箱 git config --global --add user.name <用…

团队冲刺三

昨天我做了什么&#xff1f; 完成了登录的布局文件&#xff0c;建立数据库&#xff0c;建数据表&#xff0c;连接数据库&#xff0c;将信息存储。 遇到了什么问题&#xff1f; 数据库存储功能报错 今天打算做什么&#xff1f; 解决昨天遗留的问题。转载于:https://www.cnblogs.…

C语言进阶——全局变量

全局变量 定义在函数外面的变量是全局变量 全局变量具有全局的生存期和作用域 它们与任何函数都无关 在任何函数内部都可以使用它们 全局变量初始化 没有做初始化的全局变量会得到0值 指针会得到NULL值 只能用编译时刻已知的值来初始化全局变量 它们的初始化发生在main函数之前…

为什么我不用ViewPager或RecyclerView来做上下滑切换

上下滑切换翻页大概是这样的效果&#xff1a; 目前网上有诸多如 “仿抖音上下滑...” “仿花椒映客直播...” 之类的技术分享&#xff0c;都有讲述实现上下滑切换页面的方案&#xff0c;其中以 ViewPager 和 RecyclerView SnapHelper 两种方案为多&#xff0c;但是都有明显的缺…

web项目上之深入理解Java国际化

作者&#xff1a;https://blog.csdn.net/yangbo787827967/article/details/81124439 假设我们正在开发一个支持多国语言的Web应用程序&#xff0c;要求系统能够根据客户端的系统的语言类型返回对应的界面&#xff1a;英文的操作系统返回英文界面&#xff0c;而中文的操作系统则…

Chrome运行时性能瓶颈分析

一&#xff0c;初探&#xff0c;根据现象发现问题 chrome的performance知道很久了&#xff0c;但总是没有特别权威且跟上时代的学习资料&#xff0c;这次痛定思痛&#xff0c;直接看英文文档&#xff0c;一点点把这块啃掉&#xff0c;本笔记基于Chrome 59 step 1: 隐身模式打开…

vue-router之路由钩子(八)

路由钩子&#xff0c;即导航钩子&#xff0c;其实就是路由拦截器&#xff0c;vue-router一共有三类&#xff1a;全局钩子&#xff1a;最常用路由单独钩子组件内钩子1、全局钩子在src/router/index.js中使用&#xff0c;代码如下&#xff1a;// 定义路由配置const router new V…

java第一 ++--

大的转换小的自动转换 byte -> short -> int -> long -> float -> double l 自动类型转换 表示范围小的数据类型转换成范围大的数据类型&#xff0c;这种方式称为自动类型转换 自动类型转换格式&#xff1a; 范围大的数据类型 变量 范围小的数据类型值&#xf…

在加拿大读大学被开除了,以后该怎么办?

在加拿大读大学被开除了&#xff0c;以后该怎么办&#xff1f; 一天晚上正准备睡觉的时候&#xff0c;手机振动&#xff0c;打开一看&#xff0c;是一条微消息&#xff0c;“在加拿大读大学被开除了&#xff0c;以后该怎么办&#xff1f;”又一个留学生遇到的棘手问题。在国内上…