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

    2019春季作业

    这个作业属于哪里 c语言程序设计
    这个走也要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/3124
    我在这个课程的目标是 学习使用结构体进行编程,与数组的使用进行对比
    这个作业在那个具体的方面帮助我实现目标 可以更加熟练的使用结构体进行编程,对结构体的理解比较的透彻
    参考文献 C语言程序设计

    2019春第九周作业

    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 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;
    }
    
    /* 你的代码将被嵌在这里 */
    

    输入样例:

    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[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';
    			count++;
    		 } 
        }  
          
        return count; 
    
    }
    

    2.设计思路图。

    3.问题与方法。

    问题:在自定义函数中的时候,使用的指针与结构变量混淆。
    方法:在自定义函数中使用的判断,应该是结构变量。

    4.运行编辑图。


    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>
    struct student{
    	int a;
    	char name[20];
    }; 
    int main(void)
    {
    	int n,i,j;
    	struct student s[100];
    	int flag;
    	scanf("%d",&n);
    	for(i=0; i<n; i++)
    	{
    		scanf("%d %s",&s[i].a,&s[i].name);
    	}
    	for(i=0; i<n/2; i++)
    	{
    		flag=0; 
    		if(s[i].a==0)
    		{
    			printf("%s ",s[i].name);
    			for(j=n-1; j>=0; j--)
    			{
    				if(s[j].a==1)
    				{
    					printf("%s
    ",s[j].name);
    					s[j].a=2;
    					flag=1;
    				}
    				if(flag==1)
    				break;
    			}
    		}
    			if(s[i].a==1)
    		{
    			printf("%s ",s[i].name);
    			for(j=n-1; j>=0; j--)
    			{
    				if(s[j].a==0)
    				{
    					printf("%s
    ",s[j].name);
    					s[j].a=2;
    					flag=1;
    				}
    				if(flag==1)
    				break;
    			}
    		}
    		
    	}
    	return 0;
    }
    

    2.设计思路图。

    3.问题与方法。

    问题:重复性的输出已经使用过的名字。
    方法:需要用一个标志,来进行标识,表示已经使用过。

    4.运行编辑图。


    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>
    struct student{
    	char name[20];
    	int a;
    	int b;
    };
    int main(void)
    {
    	int n,i,j,q,m;
    	struct student s[1000];
    	scanf("%d
    ",&n);
    	for(i=0; i<n; i++)
    	{
    		scanf("%s %d %d
    ",&s[i].name,&s[i].a ,&s[i].b);
    	}
    	scanf("%d
    ",&m);
    	for(j=0; j<m; j++)
    	{
    		scanf("%d",&q);
    		for(i=0; i<n; i++)
    		{
    		if(q==s[i].a)
    			printf("%s %d
    ",s[i].name ,s[i].b);
         	}
    	}
    	return 0;
    }
    

    2.设计思路图。

    3.问题与方法。

    问题:对再次的输入混淆,再一次的使用了结构变量。
    方法:无需使用结构变量,使用一个整形变量即可,在使用for的循环语句。

    4.运行编辑图。


    预习题。

    什么是递归函数,它的优点和缺点有哪些,如何归纳出递归式?
    递归函数:一个函数在它的函数体内调用它自身,也可以说明是在其函数的内部直接或间接地调用自己。
    优点:不但能正序遍历还能够进行倒序遍历,程序读起来清晰易懂,对于二叉树的后序遍历有着优越性。
    缺点:递归会有大量的函数调用以及压榨过程,所以会浪费大量的调用函数时间以及堆栈空间,并且递归中有很多的计算是重复的。
    归纳递归式:采用数学归纳法,数学归纳法适用于将解决的原问题转化为解决它的子问题,而它的子问题又变成子问题的子问题。 https://blog.csdn.net/sinat_38052999/article/details/73303111

    学习进度条。

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    第一周 2.23-3.2 三天 40 一维数组的定义和使用;一维数组的初始化;以及使用一维数组编程 一维数组的定义,以及字符的定义,不能很好的定义;以及使用for循环语句输入数值,字符,觉得不是很得心应手
    第二周 3.3-3.9 四天 70 使用文件来编程;了解文件的概念;文本文件与二进制文件;缓冲文件系统;文件的结构与文件类型指针;文件的打开方式 文件的输入输出,无法确保其输入输出,总是会忘记再加上fscanf与fprintf;以及文本的使用,不知道如何更好地使用
    第三周 3.10-3.16 三天 80 预习二维数组;了解其定义与引用; 了解其用法与初始化 文件的使用还有很大的问题,总是会出现无法打开其文件的错误;二维数组则是下标的确立有问题
    第四周 3.17-3.22 四天 60 学习二维数组定义,初始化以及选择排序法,自主学习冒泡排序法 自定义函数的使用还存在很大的问题
    第五周 3.23-3.29 三天 70 学习一维字符数组的使用,以及二维字符数组的使用,新的标准库函数函数的使用 字符与字符串的不同使用,循环结构的嵌套还存在许多问题,以及逻辑思维能力还有待提高
    第六周 4.1-4.5 两天 75 学习使用指针来进行编程,以及重新回顾自定义函数的使用 指针的使应以及理解还存在问题,使用自定义函数是调用的时候,分不太清楚是参与形参
    第七周 4.6-4.12 两天 80 学习使用指针来进行自定义函数的使用,以及对数组的初始化的使用与理解 对于自定义函数的使用与指针,数组,地址间共同来进行使用,对该变量是地址,还是元素有较大的问题
    第八周 4.13-4.19 三天 90 学习使用指针的动态分配来进行编程,以及了解常用的字符串函数进行编译 对于动态分配的具体情况不能很好的理解,以及对于是初始化,开辟空间,还是更改的使用不能很好的使用
    第九周 4.20-4.26 两天 90 学习使用结构体来进行编译,可与以前学的数组进行比较 对于指针,结构变量在自定义函数中的使用用电混淆
    #学习感悟。 本周学习的结构体,是非常实用的知识点,使用编程的时候思路打开的比较快,但是在使用的时候依旧会出现一些小的问题,在调用的时候,进行比较的时候是指针还是结构变量要尤其的注意。 #结对编程感悟。 我的搭档与我一起在解决我的问题,我有的时候思路是有的,但是再打代码的时候会忘记一些小的问题,例如本次的第二题,我没有进行标记,则我的答案会出现重复的错误,是我的搭档帮我提供思路解决的这个问题。 #学习折线图。 ![](https://img2018.cnblogs.com/blog/1581070/201904/1581070-20190425230318651-870325562.png)
  • 相关阅读:
    Win7旗舰版中的IIS配置asp.net的运行环境
    选中弹出层中内容
    在windows server 2003中配置ipad測試環境
    TFS 2012 Preview Quickstart
    Windows Azure Quick Start Hello World
    2013总结 和2014期望
    一个简单的.net写日志方法 可能的改进点
    基于Visual Studio的软件生命周期管理和持续交付 (二) 采用成熟度
    关于加班的那些事
    基于Visual Studio的软件生命周期管理和持续交付 (一) 前言
  • 原文地址:https://www.cnblogs.com/chenanping/p/10769890.html
Copyright © 2011-2022 走看看