这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/computer-scienceclass3-2018/homework/3127 |
我在这个课程的目标是 | 学会运用结构体 |
这个作业在那个具体方面帮助我实现目标 | 学会熟练运用新学的知识结构体并自己独立做题 |
参考文献 | C语言程序设计II |
本题要求实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。
1)实验代码
int set_grade( struct student *p, int n ) { int count=0,i; for(i=0;i<n;i++){ if(p[i].score<60) { p[i].grade='D'; count++; } if(p[i].score>=60&&p[i].score<=69) p[i].grade='C'; if(p[i].score>=70&&p[i].score<=84) p[i].grade='B'; if(p[i].score>=85&&p[i].score<=100) p[i].grade='A'; } return count; }
2)流程图
3)错误截图
错误问题:第五行if引导的条件写错了
解决方法:
4)运行截图
“一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中,将名次最靠前的学生与名次最靠后的异性学生分为一组。
输入格式:
输入第一行给出正偶数N
(≤50),即全班学生的人数。此后N
行,按照名次从高到低的顺序给出每个学生的性别(0代表女生,1代表男生)和姓名(不超过8个英文字母的非空字符串),其间以1个空格分隔。这里保证本班男女比例是1:1,并且没有并列名次。
输出格式:
每行输出一组两个学生的姓名,其间以1个空格分隔。名次高的学生在前,名次低的学生在后。小组的输出顺序按照前面学生的名次从高到低排列。
1)实验代码
#include<stdio.h> struct student{ int num; char name[10]; }; int main() { int i,n,h; struct student s1[50]; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%d %s",&s1[i].num,&s1[i].name); } for(i=0;i<n/2;i++){ for(h=n-1;h>=0;h--){ if(s1[i].num!=s1[h].num&&s1[h].num!=2) { printf("%s %s ",s1[i].name,s1[h].name); s1[h].num=2; break; } } }
2)流程图
3)错误截图
错因:第16行的条件后面打错了
解决办法:s1[h].num=2改为s1[h].num!=2
4)运行截图
每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。
输入格式:
输入第一行给出一个正整数 N(≤),随后 N 行,每行给出一个考生的信息:准考证号 试机座位号 考试座位号
。其中准考证号
由 16 位数字组成,座位从 1 到 N 编号。输入保证每个人的准考证号都不同,并且任何时候都不会把两个人分配到同一个座位上。
考生信息之后,给出一个正整数 M(≤),随后一行中给出 M 个待查询的试机座位号码,以空格分隔。
1)实验代码
#include<stdio.h> struct student { char num[20]; int q; int a;}; int main() { int n,i,b,h[1001],l; struct student s[1001]; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%s %d %d",s[i].num,&s[i].q,&s[i].a);} scanf("%d",&b); for(l=0;l<b;l++){ scanf("%d",&h[l]);} for(l=0;l<b;l++){ for(i=0;i<n;i++){ if(s[i].q==h[l]){ printf("%s %d ",s[i].num,s[i].a); break; } } } return 0; }
2)流程图
3)错误截图
错因:定义变量时给的范围太小了
解决办法:变量h的范围改为h【1001】
4)运行截图
预习作业:什么是递归函数,它的优点和缺点有哪些,如何归纳出递归式?
1)递归函数是数论函数的一种,其定义域与值域都是自然数集,只是由于构作函数方法的不同而有别于其他的函数。处处有定义的函数叫做全函数,未必处处有定义的函数叫做部分函数。最简单又最基本的函数有三个:零函数O(x)=0(其值恒为0);射影函数;后继函数S(x)=x+1。它们合称初始函数。要想由旧函数作出新函数,必须使用各种算子。
2)递归写起来方便,结构层次清晰,缺点是太占资源,因为它要保护现场
学习感悟:这周的课很遗憾漏掉了,但是通过看书和请教同学了解到这周学习的结构体,因为课没上所以做起题来比较困难,也犯了很多很多错误,但是好在摸着点头绪了,今后一定要多多练习c语言。