第九周编程总结

本次作业所属课程

C语言程序设计||

本次作业要求

https://edu.cnblogs.com/campus/zswxy/MS/homework/2829

我在这个课程的目标是

学会熟练使用结构类型

本次学习在哪些具体方面帮组我实现目标

自己定义结构还是会方便很多

参考文献

C primer plus第六版

 

一、基础题

题目一:按等级统计学生成绩

1)实验代码

#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", &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;
}
int set_grade( struct student *p, int n )
{
    int i,j=0;

    for(i=0;i<n;i++)
    {
        if(p[i].score >= 85 && p[i].score<=100)
        {
            p[i].grade='A';
        }
        else if(p[i].score >= 70 && p[i].score<=84)
        {
            p[i].grade='B';
        }
        else if(p[i].score >= 60 && p[i].score<=69)
        {
            p[i].grade='C';
        }
        else
        {
            p[i].grade='D';
            j++;
        }
    }
    return j;
}

2)设计思路

 

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

这个题目按照何铭康的思路一遍就过了,感想大佬的教学

4)运行结果截图

 

题目二:一帮一

1)实验代码

#include<stdio.h>
struct student
{
    int gender;
    char name[10];
    int flag;
};
int main()
{
    struct student t[60];
    int i,j,n;
    
    scanf("%d",&n);
    
    for(i=0;i<n;i++)
    {
    scanf("%d %s",&t[i].gender,&t[i].name);
    t[i].flag=0;
    }
    
    for(i=0;i<n/2;i++)
    {
        for(j=n-1;;j--)
        {
            if(t[i].gender!=t[j].gender && t[i].flag==0 && t[j].flag==0)
            {
                printf("%s %s\n",t[i].name,t[j].name);
                t[i].flag = t[j].flag=1;
                break;
            }
        }
    }
    return 0;
}

2)设计思路

 

 

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

这题按照何铭康的思路中间出现了一些小问题,第二个for循环次数要是n/2,不然就会段错误,第三个for循环要调成死循环后面加break,不然也是会答案错误

4)运行结果截图

 

题目三:考试座位号

1)实验代码

#include<stdio.h> 
struct student
{
    char number[200];
    int s;
    int k; 
};struct student a[10000];
int main()
{
int n,i,m,b[10000],j=0; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%s %d %d\n",a[i].number,&a[i].s,&a[i].k); } scanf("%d\n",&m); for(i=0;i<m;i++) { scanf("%d",&b[i]); for(j=0;j<n;j++) { if(b[i]==a[j].s) { printf("%s %d\n",a[j].number,a[j].k); } } } return 0; }

2)设计思路

 

 

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

这题我借鉴了刘磊的思路,首先在结构里定义一个数组两个变量来储存数据,然后再定义一个结构数组和数组,在for循环内利用if语句进行比较,相同就输出。这题主要是在输入样例那块没有看懂,然后就一直卡在输入那一块。感觉自身能力还是太弱了,表示对以后的学习很迷茫。

4)运行结果截图

 

二、预习题

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

递归函数就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,每调用一次就进入新的一层。

递归函数的优点:递归函数写起来简单明了,结构层次分明,简化问题

递归函数的缺点:有时候的某些问题很难得出递归式子,对于技巧性的要求较高

归纳出递归式的方法很多,有不完全归纳法,完全归纳法,等等

若想更详细的了解递归函数请参考:https://wenwen.sogou.com/z/q659688635.htm

三、学习进度条

时间

这周所花时间

代码行数

学到的知识简介

目前比较迷惑的问题

第一周

5小时

80

初步了解数组

数组的引用

第二周

6小时

200

指针的了解

完全没听懂老师上课在讲什么,继续努力

第三周

7小时

200

文件与数组的使用

没看到代码运行后文件的内容发生改变

第四周

9小时

120

冒泡法,选择排序法

冒泡法不会

第五周

9小时

120+

字符型数组

把代码改成文件格式

第六周

4小时

130左右

指针

指针的调用

第七周

6小时+

200

指针与数组

指针与数组的连续有点模糊

第八周

10小时

200+

一些新的函数

结构那块有点迷

第九周

4小时

120

自己定义结构变量

如何灵活的使用结构解决问题

 

四、累积博客字数和代码行数

 

五、结对编程感想

这次的题目经过何铭康的讲解以后大大减少了题目难度,我们两个人都很轻易的解决了前面两个题目,最后一个题目思路有点混乱就借鉴了一下别人的思路完成了这次作业

 

总结:这次的题目难度不是特别大,感觉还能接受,作业完成的也比较快

posted @ 2019-04-26 10:11  ღ阿ོ茶꧔ꦿ༊  阅读(160)  评论(1编辑  收藏  举报