2022-2023-1 20221407 《计算机基础与程序设计》第十二周总结

2022-2023-1 20221407 计算机基础与程序设计第十二周学习总结

作业信息

课程 2022-2023-1-计算机基础与程序设计
要求 2022-2023-1计算机基础与程序设计第十二周作业
这个作业的目标 学习动态内存分配函数 一维数组与指针 二维数组与指针
作业正文 见下

教材学习内容总结

  • 《C语言程序设计》:这一章首先更加深入地讲述了数组与指针之间的关系尤其是二维数组与指针的关系,之后有讲述了指针在多个方面的应用让内容更加形象。同时又讲述了如何动态分配内存以及分配内存时常常存在的一些问题以及解决对策。最后又介绍了缓冲区溢出攻击。

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

  • 不理解在不交换整个字符串的前提下为数组进行排序:
    在自细看书之后,我发现原来这是通过调换行输出顺序来改变数组的顺序的;
  • 二维数组的行指针是如何定义与引用的?
    解决:https://blog.csdn.net/qq_50777680/article/details/111993184
点击查看代码
void func(int(*pa)[4], int(*pb)[3], int x, int y)
{
    int i, j;
    /*-------------------------begin------------------*/
    for(i=0;i<x;i++)
       for(j=0;j<y;j++){      	
       	 *(pb[j]+i)=*(pa[i]+j);
       	 // *(*(pb+j)+i)=*(*(pa+i)+j);
       	 // pb[j][i]=pa[i][j];
       	 // (*(pb+j))[i]=(*(pa+i))[j];
	   }
————————————————
版权声明:本文为CSDN博主「neymar116」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_50777680/article/details/111993184
通过上面的代码我知道了如何定义向函数传递行指针并且在函数体中使用行指针。 ## 代码调试中的问题和解决过程 *

这个程序的功能是去除字符串中的大写字母,在第一张图片中,我发现这个程序存在一些问题,不能将所有的大写字母都去除。
后来我才发现在去除大写字母时会发生字符串长度的变化导致循环中出现问题,这也是使用循环时我常常踩的一个坑

#include <stdio.h>

main()
{
    char s[] = "24635", c, i;

    for (i = 0; c = s[i]; i++)
    {
        switch (c - '0')
        {
        case 2:
        case 3:
            putchar(c + 4);
            break;
        case 4:
            putchar(c + 4);
            break;
        case 5:
            putchar(c + 3);
            break;
        default:
            putchar(c + 2);
        }
        putchar('\n');
    }
}
这是在作业网站上的一道题,用于实现一种类似加密的功能,将字符加上某个数值。但这个代码我有两个地方看不懂: 1. for语句的循环结束条件,我最开始以为是一个赋值语句。但后来通过咨询老师后我才知道这个东西是通过将s[i]的值赋给c之后使用布尔变量判断是否非零,从而判断循环是否结束。 2.c-'0'是什么意思? 通过与同学讨论以及查找资料,我知道了原来这个东西是指用某一哥字符型数字的ASCII码减去0的ASCII码从而得到一种字符转换成数字的效果。 [solution](https://blog.csdn.net/Qinhaifu/article/details/88865639?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166886308416800180655312%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=166886308416800180655312&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-88865639-null-null.142^v65^control,201^v3^add_ask,213^v2^t3_esquery_v1&utm_term=c%E8%AF%AD%E8%A8%80%E4%B8%AD%E5%AD%97%E7%AC%A6%E5%87%8F%E5%8E%BB%E2%80%980%E2%80%99&spm=1018.2226.3001.4187)


同时我还学到了一点就是这个。
*

这个程序是用来统计单词个数的,但这个程序的第一个版本只能处理结尾不是空格的,后来我才发现原来是算法有问题不是代码有问题。正确的做法应当是判断第一个字符是空格还是字符,之后再技术有多少个空格加上字符的情况从而计数单词个数。


*

这个程序不知为何就出现了乱码。
后来才发现是赋值的数组中缺少'\0'.

上周考试错题总结

单选题

  • Which of the following would correspond to an organization, such as a university or company?
    A.
    IP address
    B.
    Domain name(域名)
    C.
    Top-level domain(顶级域名)(TLD)
    D.
    MIME type
    E.
    Hostname
    正确答案: B
    你的作答: C
  • Which of the following is a Java program designed to be embedded into a web page and executed in a browser?
    A.
    XML
    B.
    Applet(小程序)
    C.
    Scriptlet
    D.
    XSL
    E.
    Metalanguage
    正确答案: B
    你的作答: C
  • Which of the following allows the user to define the tags used to markup document content?
    A.
    HTML
    B.
    XML
    C.
    Chemistry Markup Language (CML)
    D.
    URL
    E.
    Java applet
    正确答案: B
    你的作答: E
  • Metalanguage is a specification of the organization of an XML document.
    正确答案: 正确
    你的作答: 错误

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第...周
第十二周 140/1300 1/9 30/90
posted @ 2022-11-20 19:58  北寒带  阅读(45)  评论(0编辑  收藏  举报