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…

accept和select的区别

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

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

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

Git和GitHub快速入门

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

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

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

java第一 ++--

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

02-print的用法

print的常用&#xff1a; print(hello world!)print(hello,world!) # 逗号自动添加默认的分隔符&#xff1a;空格。print(hello world!) # 加号表示字符拼接。print(hello,world,sep***) # 单词间用***分隔。print(# * 20) # *号表示重复20遍。print(are you sure?, end)…

单田芳白眉大侠全320回下载

1、搜索“十方评书网”。 2、要下载那个评书家的选择那个评书家。 3、然后选择自己要下载的下载可以了。 转载于:https://blog.51cto.com/14204019/2392323

react.js基础

现在最热门的前端框架有AngularJS、React、Bootstrap等。自从接触了ReactJS&#xff0c;ReactJs的虚拟DOM&#xff08;Virtual DOM&#xff09;和组件化的开发深深的吸引了我&#xff0c;下面来跟我一起领略ReactJs的风采吧~~ 文章有点长&#xff0c;耐心读完&#xff0c;你会有…

第 11 章 日志管理 - 089 - 初探 ELK

在开源的日志管理方案中&#xff0c;最出名的莫过于 ELK 了。 ELK 是三个软件的合称&#xff1a;Elasticsearch、Logstash、Kibana。 Elasticsearch 一个近乎实时查询的全文搜索引擎。Elasticsearch 的设计目标就是要能够处理和搜索巨量的日志数据。 Logstash 读取原始日志&…

算法导论2nd 10.1-7

为什么80%的码农都做不了架构师&#xff1f;>>> 思路&#xff1a;两个队列q1和q2&#xff0c;两个队列指针pusher和poper分别指向q1和q2&#xff0c;push时调用pusher->enqueue&#xff0c;然后将poper里的元素全部dequeue并enqueue到pusher&#xff0c;最后交换…

阿里云Windows2012 R2服务器IPV6配置记录

要上苹果APP&#xff0c;则必须要支持IPV6和HTTPS&#xff0c;阿里云本身没有开放IPV6地址。因此需要进行IPV6的相关配置。查了很多IPV6的配置资料&#xff0c;最终选择用HE进行IPV6设置。在这过程中遇到一些问题&#xff0c;以记录下来以备注。 1、IPV6 Tunnel Broker设置 在H…

mycat 1.6.5 for mysql 8分表攻略

2019独角兽企业重金招聘Python工程师标准>>> 简述 mycat 对于 mysql 的支持有版本要求&#xff0c;目前 1.6.5 不支持 mysql 8.0 版本。因为mysql 8.0 的加密方式发生了变化。 mycat 1.6.5 连接 mysql 8.0 的两个方式 mysql 8.0 采用兼容方式&#xff0c;&#xff0…

搭建gitlab及部署gitlab-runner

2019独角兽企业重金招聘Python工程师标准>>> 1、搭建gitlab,之前yum安装gitlab,安装后一直报502错误,网上百度试过还是无法使用; 所以这次部署在docker里面;如下命令&#xff1a; docker run --detach --hostname gitlab.forebix.com --publish 4433:443 --publish …

inux CentOS 7 修改内核启动默认顺序

2019独角兽企业重金招聘Python工程师标准>>> inux CentOS 7 修改内核启动默认顺序 2018年12月07日 09:53:32 XueShengke 阅读数&#xff1a;781 转载于&#xff1a;21运维 Linux CentOS 7.X 如何修改内核启动默认顺序 我们知道&#xff0c;centos 6.x是通过/etc/gr…

锁底层之内存屏障与原语指令

Java内存模型1&#xff0e;工作内存和主内存Java内存模型规定所有的变量都存储在主内存中&#xff08;JVM内存的一部分&#xff09;&#xff0c;每个线程有自己独立的工作内存&#xff0c;它保存了被该线程使用的变量的主内存复制。线程对这些变量的操作都在自己的工作内存中进…

微信点击链接,用默认浏览器中打开指定网址链接!

2019独角兽企业重金招聘Python工程师标准>>> 最近有客户咨询&#xff0c;自己的链接在微信种推广&#xff0c;经常会被无缘无故封杀&#xff0c;有没有一种功能&#xff0c;用户在微信中点击我们推广的链接&#xff0c;可以自动强制跳转到手机默认浏览器中打开指定的…

关于HTTP协议,一篇就够了

原文地址&#xff1a;https://www.cnblogs.com/ranyonsue/p/5984001.html HTTP简介 HTTP协议是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;的缩写,是用于从万维网&#xff08;WWW:World Wide Web &#xff09;服务器传输超文本到本地浏览器的传送协议…

Ajax_Apache访问资源文件的权限配置、资源存放路径配置、配置虚拟主机、动态网站静态网站区别...

1、配置资源的访问权限 修改配置文件&#xff1a;httpd.conf 文件 改完之后要重启 2、切换资源默认存放目录www 修改配置文件httpd.conf 文件中的存放目录 3、Apache是否能够同时支持多个站点 Apache能否支持通过不同的域名访问不同的站点 可以 做法&#xff1a;配置虚拟主机…

web安全之文件上传漏洞攻击与防范方法

2019独角兽企业重金招聘Python工程师标准>>> 一、 文件上传漏洞与WebShell的关系 文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行。这里上传的文件可以是木马&#xff0c;病毒&#xff0c;恶意脚本或者WebShell等。这种攻击方式是最为直接和有效的…