计算机基础与程序设计(2022-2023-1) 第八周学习总结

学期(2022-2023-1) 学号(20221407) 《计算机基础与程序设计》第八周学习总结

作业信息

这个作业属于哪个课程 班级的链接
这个作业要求在哪里 2022-2023-1计算机基础与程序设计第八周作业
这个作业的目标 功能设计与面向对象设计 面向对象设计过程 面向对象语言三要素 汇编、编译、解释、执行

教材学习内容总结

  • 《计算机科学概论》:这一章讲述了除自顶向下的另一种程序设计方法——面向对象的方法以及代码运行中的一个重要过程——翻译,以及高级程序设计语言和面向对象语言的功能性。扩展了我的视野。
  • 《C语言程序设计》:这一张讲述了编程中的一些重要思想——分而治之,模块化程序设计。以及完成这些思想的重要工具自定义函数以及递归函数。

教材学习中的问题和解决过程

  • 清空内存的方法都有哪些?原理是什么?
    这个问题是在云班课上看到的,之前我也曾经有过这个问题但可惜没有深入探究,仅仅停留在了知道有,但不知道为什么。这是我学习上的问题。
    我在CSDN上搜了很多资料,因为很多都只是说有这个东西,但没有说为什么有这个东西。
    ——1.fflush(stdin) :
    /stdin就是标准输入 std即standard(标准),in即input(输入),合起来就是标准输入。 一般就是指键盘输入到缓冲区里的东西。/
    fflush是一个函数
    另有fflush(stdout)为清空输出区
    ——2.while(getchar()!='\n')
    原理:相当于:
点击查看代码
char c
do
{
c = getchar();
putchar(c);
}while(c!='\n');
一直输入直到换行符。 * 结构化程序设计中只有一个入口一个出口是什么意思?是说主函数吗? 我后来在听汪老师讲课时,才知道原来这是说一个结构单元。 * c++与c有什么区别? C 是一种依赖最少关键字的过程语言,Bjarne Stroustrup 在 1980 年代开发了 C++,作为其前身 C 的扩展。C++可以面向对象。

代码调试中的问题和解决过程

(这周敲代码出现了很多问题学到了很多)
1.

点击查看代码
#include<stdio.h>
#define N 10
void Transpose(int a[][N], int n);
void InputMatrix(int a[][N], int n);
void PrintMatrix(int a[][N], int n);
int main(void)
{
    int a[N][N];
    int n;
    printf("Input n:\n");
    scanf("%d",&n);
    printf("Input %d*%d matrix:\n",n,n);
    InputMatrix(a,n);
    Transpose(a,n);
    printf("The transposed matrix is:\n");
    PrintMatrix(a,n);
    return 0;
}
void InputMatrix(int a[][N], int n)
{
    int i, j;
    for(i = 0;i <= n-1;i++)
    {
        for(j = 0;j <= n-1;j++)
        {
            scanf(" %d",&a[i][j]);
        }
    }
}
void Transpose(int a[][N], int n)
{
    int i, j;
    int t;
    for(i = 0;i <= n-1;i++)
    {
        for(j = 0;j <= n-1;j++)
        {
            t = a[i][j];
            a[i][j] = a[j][i];
            a[j][i] = t;
        }
    }
    return a;
}
void PrintMatrix(int a[][N], int n)
{
      int i, j;
      for(i = 0;i <= n-1;i++)
    {
        for(j = 0;j <= n-1;j++)
        {
           if(j == n-1)
           {
                printf("%d",a[i][j]);
                printf("\n");
           }
           else
           printf("%d\t",a[i][j]);
        }
    }
}

这个代码的功能是输出一个方阵的转置方阵,我选择使用了for循环语句,但忽略了for会把另一边也转置一遍。导致虽然转置了,但转置多了……

解决:

这个代码是一道练习题上的,我当时看到题后直接上手敲代码用了好几个if语句,结果完全不能输出结果。后来,通过参考答案,才发现我的方法太过于繁琐了。只要倒过来想就变得非常容易了。
果然语法不是最难的,思想,算法才是。

这个问题是因为我做递归函数时,忘记了设置基本条件,导致递归不能停止。

上周考试错题总结

  • Which level provides a view that deals with the underlying data structure used to manage the data?
    A.
    Implementation level实施水平
    B.
    Logical level
    C.
    Array level
    D.
    Linked level
    E.
    Application level
    正确答案: A
    你的作答: B
    译:哪个级别提供了处理用于管理数据的基础数据结构的视图?

其他(感悟、思考等,可选)

  • 我个人认为自己在学习上投入的时间是较多的,但不知道为什么还是做的不够好,可能是因为自己不够高效,不够认真,仅仅投入了时间。希望看到的老师,前辈,学长学姐能给一些建议。我自己下周也要努力,不能对付完成任务。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第......周 500/1000 3/7 22/60
第八周 70/1300 3/9 30/90
posted @ 2022-10-22 22:33  北寒带  阅读(29)  评论(0编辑  收藏  举报