zoukankan      html  css  js  c++  java
  • 2019春第九周作业

    这个作业属于哪个课程 C语言程序设计II
    这个作业要求在哪里 2019春第九周作业
    我在这个课程的目标是 灵活的使用结构解决问题
    这个作业在那个具体方面帮助我实现目标 锻炼我的思维
    参考文献 C语言程序设计(第3版)

    基础题

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

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

    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 10
    
    struct 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);
        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
    ", count);
       printf("The grades:
    "); 
       for(i = 0; i < n; i++)
           printf("%d %s %c
    ", stu[i].num, stu[i].name, stu[i].grade);
        return 0;
    }
    

    /* 你的代码将被嵌在这里 */

    1)实验代码

       int set_grade( struct student *p, int n )
       {
            int sun=0,c=0;
            int i;
            for(i=0;i<n;i++)
            {
    	    if((*p).score>=0&&(*p).score<=59)
    	    {
    		    (*p).grade='D';
    		    c++;
    	    }
    	    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 c;
        } 
    

    2)设计思路

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

    问题:答案错误。调试发现返回的不及格的人数错误,检查后发现自己把判断条件写错了。

    解决办法:去掉求平均成绩的那部分代码,在第一个if语句中用c储存不及格人数。

    4)运行结构截图

    7-1 一帮一

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

    1)实验代码

    #include<stdio.h> 
    struct student{
    int num;
    char name[10];
    };
    int main(void)
    {
    int N,i,p,j,q=0,r=0;
    struct student x[50],y[50],z[50];
    scanf("%d",&N);
    for(i=0;i<N;i++)
    {
    	scanf("%d %s",&x[i].num,x[i].name);
    }
    p=N/2;
    for(i=p;i<N;i++)
    {
    	if(x[i].num==0)
    	{
    		y[q]=x[i];
    		q++;
    	}
    	if(x[i].num==1)
    	{
    		z[r]=x[i];
    		r++;
    	}
    }
    for(i=0;i<p;i++)
    {
    	if(x[i].num==0)
    	{
    		printf("%s %s
    ",x[i].name,z[r-1].name);
    		r--;
    	}
    	if(x[i].num==1)
    	{
    		printf("%s %s
    ",x[i].name,y[q-1].name);
    		q--;
    	}
    }
    return 0;
    }
    

    2)设计思路

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

    问题:部分正确。本题在调试的时候运行结果是正确的,不知道那个测试点哪里错了。

    解决办法:请同学帮忙,然后根据测试点的提示将结构中字符串name的长度改长,答案正确。

    4)运行结果截图

    7-2 考试座位号

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

    1)实验代码

    #include<stdio.h> 
    struct student{
        char num[20];
        int sj;
        int ks; 
    };
    int main(void)
    {
    int n,i,m,cx[1000],j=0;
    struct student x[1000];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
    	scanf("%s %d %d
    ",x[i].num,&x[i].sj,&x[i].ks);
    }
    scanf("%d
    ",&m);
    for(i=0;i<m;i++)
    {
    	scanf("%d",&cx[i]);
    	for(j=0;j<n;j++)
    	{
    		if(cx[i]==x[j].sj)
    		printf("%s %d
    ",x[j].num,x[j].ks);	
    	}
    }
    return 0;
    }
    

    2)设计思路

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

    问题:部分正确。最初调试时发现在输入完数据后还要输入数据才能得到运行结果,以为是输入的那部分有问题,

    但是反复检查后又觉得没问题,然后我就把输入待查询的试机座位号码后面的代码改一下,保持功能不变,最后输入的

    问题解决了,但是答案老是错误。然后我再检查发现在输出的时候数据写错了。

    解决办法:把“printf("%s %d ",x[i].num,x[i].ks);”改为“printf("%s %d ",x[j].num,x[j].ks);”。

    4)运行结果截图

    预习题

    什么是递归函数,它的优点和缺点有哪些,如何归纳出递归式?

    递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,每调用一次就进入新的一层。递归函数必须有结束条件。
    当函数在一直递推,直到遇到墙后返回,这个墙就是结束条件。 所以递归要有两个要素,结束条件与递推关系。

    优点

    1.容易实现。
    2.代码简洁、清晰、易懂。

    缺点

    1.递归由于是函数调用自身,而函数调用是有时间和空间的消耗的:每一次函数调用,都需要在内存栈中分配空间以保存参数、返回地址以及临时变量,而往栈中压入数据和弹出数据都需要时间。->效率
    2.递归中很多计算都是重复的,由于其本质是把一个问题分解成两个或者多个小问题,多个小问题存在相互重叠的部分,则存在重复计算,如fibonacci斐波那契数列的递归实现。->效率
    3.调用栈可能会溢出,其实每一次函数调用会在内存栈中分配空间,而每个进程的栈的容量是有限的,当调用的层次太多时,就会超出栈的容量,从而导致栈溢出。->性能
    引自递归的优缺点

    学习进度条

    周/日 这周所花的时间 代码行数 学到的知识点简介 目前比较迷茫的问题
    3/11-3/15 6小时 57 指针的定义与调用
    3/18-3/22 8小时 80 二维数组的定义与调用
    3/25-3/29 6小时 54 调用处理字符的函数
    4/01-4/05 6小时 78 将数组名作为指针进行调用
    4/08-4/12 6小时 104 指针与数组的关系
    4/15-4/19 6小时 133 字符串处理函数
    4/22-4/26 6小时 91 结构的定义与调用

    学习感悟

    这周的题目比较简单,只要知道怎样使用结构就不难,但是,在遇到题目时仍然要先想好思路,有思路才能试着去解决问题。另外预习题可以拓宽我们的知识面。
    对我们的学习很有帮助。

    结对编程队友:彭星文2019春第九周作业

    结对过程:这周双方先进行编写,晚自习的时候进行了讨论,一是各自的问题,二是各自的思路,对于每到道题双方都讲出自己的写法,如果双方都不明白问题所在就会上网去查。
    结对编程对现阶段我们的好处:
    1、互相鼓励,不容易沮丧:团队工作能增加成员的工作积极性。因为在面对问题的时候,会有人一起分担,共同尝试新的策略。

    2、互相监督,不容易偷懒:两个人一起工作需要互相配合,如果想偷懒去干别的,就会拖延工作进度。

    3、互相学习编程技巧:在编程中,相互讨论,可以更快更有效地解决问题,互相请教对方,可以得到能力上的互补。

    自己优点:细心,认真,提出建议。缺点:不会遇难而上。
    彭星文优点:认真,有耐心,提出建议。缺点:不会往后学习

  • 相关阅读:
    VS 格式化代码 Ctrl + K, Ctrl + F
    VS NuGet使用
    VS书签的应用
    ASP.Net简单的交互案例
    英文书也没有那么难,跟着例子做,挺有意思的
    .Net强类型视图
    .Net视图机制
    .Net MVC小尝试
    ASP.Net MVC默认目录结构
    .Net中常用的几种ActionResult
  • 原文地址:https://www.cnblogs.com/jk-liulei/p/10763244.html
Copyright © 2011-2022 走看看