码迷,mamicode.com
首页 > 其他好文 > 详细

第二次作业

时间:2018-04-08 22:37:40      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:乱序   oat   return   错误   流程图   相关   大小   字符串   学习   

第二次作业(3)

6-1 按等级统计学生成绩

1.设计思路

(1)题目算法

第一步:找到需要调用的函数,及明确函数目的
第二步:用if将grade进行分类
第三步:当等级为D时,将不及格人数+1,以此类推
第四步:返回不及格人数
第五步:进行调试,对个别问题再进行修改

(2)流程图

技术分享图片

2.实验代码

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

3.调试问题及解决方法

错误信息:The count for failed (<60): 为乱序数字
错误原因:没有给count定义初始值
改正方法:在count++前,定义count的值为0


6-2 结构体数组按总分排序

1.设计思路

(1)题目算法

第一步:找到需要调用的两个函数,明确calc函数是用来统计结构变量中sum的值,sort函数主要是解决排序及交换问题
第二步:用循环算出sum的值,大致完成calc函数
第三步:用冒泡排序法根据sum的大小进行排序,注意替换过程中是每一位学生的所有相关数据都会随着sum的排序而发生改变
第四步:进行调试,解决相应的细节问题

(2)流程图

技术分享图片

2.实验代码

void calc(struct student *p,int n)
{
    int i,j;

    for(i=0;i<n;i++){
        (p+i)->sum=0;
        for(j=0;j<3;j++){
        
            (p+i)->sum=(p+i)->sum+(p+i)->score[j];
        }
    
    }

}
void sort(struct student *p,int n)
{
    int i,j;
    struct student t;
    for(i=0;i<n-1;i++){
        for(j=0;j<(n-1-i);j++){
            if(p[j].sum<p[j+1].sum){
                t=p[j];
                p[j]=p[j+1];
                p[j+1]=t;
            }
        }
    }
}

3.调试问题及解决方法

错误信息1:编译错误
错误原因:对t的定义错误,将t单纯地视为一个浮点数sum的过程替换值
改正方法:t也应该视为与sum类型相同的结构变量,将float t改为struct student t

错误信息2:输出结果只是对sum进行了重新排序,而其它信息没有发生变化
错误原因:在sort函数中,交换的时候只是对p[j].sum进行交换没有将整个p[j]结构体直接进行整体交换
改正方法:将p[j].sum后的.sum去掉,使之整体交换

错误信息3:calc函数存在问题,sum的求值出现错误
错误原因:将(p+i)->sum=0的初始赋值放在for循环外,但实际上,每次i的for循环代表算完一位同学的总成绩sum,因此每次i的for循环后都要使sum的值再次清零
改正方法:将(p+i)->sum=0放在第一次的循环后面,使每次i++后,(p+i)->sum的最初值也能重新归零

在修改过程中,学习到同学@马钰娟调用calc函数的方法
技术分享图片
运用一个for循环,思路简洁,让代码也更加简洁

1.学习总结和进度

(1)学习了字符串和结构体,及运用指针来表示字符串和结构体
(2)掌握如何定义一个字符串,字符串的初始化,字符串的引用,字符串的应用
(3)掌握如何定义一个结构体,结构体的初始化,结构体的引用,结构体的应用
(4)对博客园这项作业不能老是抱以消极的态度,尽量别拖欠。比如说今晚,虽然是踩着点只完成近期的几道题目,但是在这种归纳总结的过程中,状态会情不自禁地投入,回忆自己在调试过程时,是如何一步一步地进行修正,逐步靠近最终需要输出的结果。在独自完成每一题的小结后,不是累而是感受到自己在提出问题分析问题解决问题后的满足感。在以后的博客作业中,我想我会以更加积极的态度面对,每完成一次PTA作业,趁着记忆犹新将自己的思路及解题过程记录下来,高效率地完成好作业,而不是像现在这样踩点补作业。

2.git地址 the secend homework

3.评论

马钰娟
李伍壹
焦瑞君

第二次作业

标签:乱序   oat   return   错误   流程图   相关   大小   字符串   学习   

原文地址:https://www.cnblogs.com/dxfish/p/8747579.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!