第九周学习总结

基础作业
这个作业属于那个课程 c语言程序设计
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class1-2018/homework/3125
在这个课程的目标 熟练结构
这个作业在哪个具体方面帮助我实现目标 结构
参考文献 课本 C语言程序设计

1.函数题:按等级统计学生成绩

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,count = 0;
for(i=0; i<n; i++)
{
if(85<=p[i].score&&p[i].score<=100 )
p[i].grade = 'A';
else if( 70<=p[i].score&&p[i].score<=84)
p[i].grade = 'B';
else if( 60<=p[i].score&&p[i].score<=69)
p[i].grade = 'C';
else
{p[i].grade = 'D';
count++; }
}
return count;
}
2).设计思路
https://img2018.cnblogs.com/blog/1582702/201904/1582702-20190426142551264-349499587.png
3).本题调试过程碰到问题及解决办法
问题:小问题,就是大于号和小于号搞错了
解决方法 :应该用&&的,通过调试发现的。
4).运行结果截图

7-1 一帮一 (15 分
(1)实验代码

include<stdio.h>

struct student {
int num; //0或1
char name[10]; //姓名
};

int main(void)
{
int i,n,j,k;
struct student s1[50],b[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(j=n; j>0; j--)
    {
        
        if( s1[i].num !=s1[j-1].num&&s1[j-1].num !=2 )
        {
            b[i] = s1[j-1];
            s1[j-1].num = 2;
            break;
        }               
    }
    
}

for( i=0; i<n/2; i++)
{
    printf("%s %s\n",s1[i].name,b[i].name);
}
 return 0;

}
(2)设计思路
https://img2018.cnblogs.com/blog/1580500/201904/1580500-20190426161554194-1993542879.jpg
(3)问题及解决办法
这题开始就是不知道怎么去判断,后面看了一下别人的,就知道了,另外没什么问题
(4)运行结果截图

2、考试座位号

1).实验代码

include<stdio.h>

struct student{
char k[17];
int sz;
int kz;
};
int main()
{
int n,i,m;
scanf("%d",&n);
struct student s[n];
for(i=0;i<n;i++){
scanf("%s %d %d",s[i].k,&s[i].sz,&s[i].kz);
}

scanf("%d",&m);
int s2[m];
for(i=0;i<m;i++)
   scanf("%d",&s2[i]);
for(i=0;i<m;i++){
    for(int j=0;j<n;j++){
        if(s2[i]==s[j].sz){
            printf("%s %d\n",s[j].k,s[j].kz);
            break;
        }
    }
}
return 0;

}
2)设计思路
https://img2018.cnblogs.com/blog/1580500/201904/1580500-20190426162146788-1978876064.jpg
4).运行结果截图

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

2。优点和缺点
优点:代码简洁、清晰,易懂
缺点 递归由于是函数调用自身,而函数调用是有时间和空间的消耗的:每一次函数调用,都需要在内存栈中分配空间以保存参数、返回地址以及临时变量,而往栈中压入数据和弹出数据都需要时间。->效率
递归中很多计算都是重复的,由于其本质是把一个问题分解成两个或者多个小问题,多个小问题存在相互重叠的部分,则存在重复计算,如fibonacci斐波那契数列的递归实现。->效率
调用栈可能会溢出,其实每一次函数调用会在内存栈中分配空间,而每个进程的栈的容量是有限的,当调用的层次太多时,就会超出栈的容量,从而导致栈溢出。->性能
3.归纳递归式
以上部分内容取自:https://blog.csdn.net/wf19930209/article/details/79341939https://blog.csdn.net/wangzhenling/article/details/59702845
二、学习进度条

https://img2018.cnblogs.com/blog/1582702/201904/1582702-20190426153619016-1908281078.png
https://img2018.cnblogs.com/blog/1580500/201904/1580500-20190426164018088-1619600711.png
三、学习感悟:
这一周学习了结构,感觉良好,不是特别难,通过所做的题目来看,问题不大。

四、结对编程
结对编程感悟:这周交流比较少,但有些理解性的知识,让我对结构的知识点更加熟悉。

posted on 2019-04-26 17:21  译梦  阅读(109)  评论(1编辑  收藏  举报

导航