首页 > 其他分享 >PA0:关于练习题

PA0:关于练习题

时间:2024-01-15 17:56:37浏览次数:28  
标签:PA0 练习题 字符 make valgrind 关于 数组 ex1 字符串

网页浏览体验很差,希望下次不要再找广告满天飞的网站搭翻译博客。

网页做的很好,以后别做了。

 

 不使用stdio库。gcc在make时会提示存在implicit declaration(隐式声明)

--------------------------------------------

makefile基本指令解释:

CFLAGS=-Wall -g

 clean:

    rm -f ex1                                       -Wall表示要显示所有报错和warning信息,-g表示加入调试信息   clean后则表示需要清理掉哪些内容

 

在附加题里提到了一个all:ex1。 all表示指定ex1作为依赖。在构建all时,ex1也会被构建。直接make就相当于make ex1 。此外,文件夹里只有ex1.c一个文件时,make会隐含地发现ex1.c就是它的目标。并使用gcc -o ex1 ex1.c来编译。all里面也可以用空格隔开多个文件,clean时对应也可使用make clean all。

------------------------------

 练习4:  curl是一个http相关的工具,发送http请求,获取http相应,也需要进行安装。

在用网页下载方式安装valgrind时,由于下载下来是一个ascii text,tar无法解压

curl -O http://valgrind.org/downloads/valgrind-3.6.1.tar.bz2  指令存在问题。 最后实在没办法,用apt-get安装了。

安装好以后,valgrind 去分析有错文件,提示permission denied。检查发现,直接用valgrind ex4即可。

 

在用make时,发现-Wall -g并没有被自动加入编译参数,检查发现,Makefile里面的FLAGS是错的,要写成CFLAGS才行。

---------------------------------------

C语言里,单引号用来框字符,双引号用来框字符串。

%d  输出整型  %ld 长整型   %f  浮点   %c  字符   %s  字符串   %e科学计数法

 

空字节字符\字符串结尾符号:  \0  ,对应就是数字0.(这一点以前没发现)

C语言的字符串就是字符数组,不管有没有显式声明,末尾一定都有一个\0用来标记结束,所以实际占用空间要+1。 此外,输入字符串以后,字符串就会被作为字符数组处理。假如把一个字符串放到远大于它长度的字符数组里,那么数组的对应位置以及之后就都是\0,打印时这一部分即使用数组下标也是打不出来的。

 

注意:手动逐个录入字符数组时,末尾要手动增加\0,不会像字符串录入时一样自动加上\0。不加会导致程序崩溃。

 

练习8的后续附加:

1)把字符赋值进int数组,还是可以打印的,打印的就是字符的对应ASCII码。如果就是用%d的话,那编译器不应该报警告,如果用%c的话,那报

warning: format '%c' expects argument of type 'int', but argument 2 has type 'int *' [-Wformat=]  。

意思是说格式符和参数不匹配。

2)关于字符数组和int型同为4字节时的情况。这个问题说的有点模糊,什么叫“像整数一样使用整个name”? 如果是说直接试图用%d打印,那确实是可以的。四个字符的ascii码拼在一起,视作完整补码,用%d得到的就是这个补码对应的真值。大小端就不考虑了。

 

------------试图用%c输出数字时,如果数字在0-255,那就直接按ascii码表对应转换。如果不在,那就截断,取低部分,再将真值在ascii表内转换。

 

-----------------------------------------

练习10附加题:

1)假设其他位置没有出现循环所需的条件初始化,for循环条件1是null时,循环变量没有初始化,报错;或者循环变量可能出现意外初始值;条件2是null,没有退出条件,需要手动在循环体内写;条件3是null,每次循环,循环变量不改变,需要在循环体内手动写。其实for(;;) 也不是不行,写出来就是个死循环。

2)

标签:PA0,练习题,字符,make,valgrind,关于,数组,ex1,字符串
From: https://www.cnblogs.com/namezhyp/p/17965010

相关文章

  • 关于gunicorn与异步兼容性问题:AttributeError: module 'select' has no attribute 'ep
    关于gunicorn与异步兼容性问题:AttributeError:module'select'hasnoattribute'epoll'背景:介绍:  在使用gunicorn、Flask&flask-sockets部署,实现websocket协议中同类消息阻塞,不同类消息不阻塞场景。异常:[2024-01-1510:22:16+0800][31655][ERROR]Ex......
  • 关于ArcEngine在多线程模式下的注意点
    仅以我的环境来描述的我问题和解决方案,超出该范围的暂时没有考虑。一、环境ArcEngine10.2语言:C#.net版本:4.6.1二、需求创建GDB数据库,并从json文件把数据写入GDB中,包含了图形数据,为了兼顾效率,我使用了多线程来生成GDB,但也做了控制,一个线程只会对一个GDB进行操作。三、问题:......
  • 关于k8s关闭swap分区与swappiness设置的问题
    1、基于其出发点,k8s希望将资源限制在一个严格,精确可控范围内:Kubernetes云原生的实现目的是将运行实例紧密包装到尽可能接近100%:所有的部署、运行环境应该与CPU以及内存限定在一个可控的空间内。所以如果调度程序发送一个Pod到某一台节点机器,它不应该使用Swap。如果使用sw......
  • JavaScript采集各大电商平台关于预制菜酸菜鱼销售量
    因为我喜欢吃酸菜鱼,但是自己弄又弄不来,想从网上找找看看,但是种类多,自己逐个选择又太浪费时间。索性利用自己专业爬虫知识,一边检验我最近代码水平,另一方面还能选择到满意的年货。过去写个各大平台预制菜酸菜鱼销量的爬虫代码,自动化分析各大平台消费情况,选择最畅销的,准备年货。首先,我......
  • 关于echarts+vue频繁刷新的造成的内存增长问题
    前言关于解决echarts+ws多次数据刷新渲染,内存增长溢出的尝试。记录一下,便于下次使用有参考方法关闭echarts动画tooltip的动画设置为false。(echarts动画会缓存,通过快照可以看出)tooltip:{axisPointer:{animation:false,//很重要!},......
  • 关于吴恩达机器学习中反向传播的理解
    title:关于吴恩达机器学习中反向传播的理解date:2022-04-12categories:数学mathjax:truetags:-机器学习-线性代数原文在机器学习视频反向传播章节[1]中:我们用\(\delta\)来表示误差,则:\(\boldsymbol\delta^{\left(4\right)}=\boldsymbola^{\left(4\right)}−\b......
  • 关于二进制的原码、补码和反码,以及表示范围、常见位运算符和进制转换的理解与简述
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/17963363出自【进步*于辰的博客】参考笔记一,P3.13、P5.1;笔记三,P43.1/3、P44.1。注:我暂且没有整理关于二进制、原码、补码和反码等概念的理论,本文中的阐述都基于我对相应......
  • 关于 Github 的 2FA
    由于一些我不了解的原因,Github开启了2FA。然后有部分人就无法正常使用Github,比如我就被拦在了2FA外(挺不理解的)。由于没有移动端设备,所以很烦人。所幸找到了一个扩展:Authenticator:2FAClient,在chrome,edge,firefox上都有可用的版本。使用也很简单,点击扩展图标后,点右上角......
  • 算法练习题-系列一
    目录柯里化实现柯里化函数柯里化函数作用扁平化[双指针]有序数组合并判断一个字符串是否是回文字符串[字符串]两个版本号version1和version2[字符串]版本号大小比较排序['1.45.0','1.5','6','3.3.3.3.3.3.3']=>['1.5','1.45.0','3.3.3.3.3.3','6']给定两个......
  • kepware关于U-CON的使用笔记 (串口_非主动问答式)
            8,新建两个变量t1,t2 (均为6字节的字符串)用来存储接收到的关键数据;   9,内容接收及解析逻辑     11 测试成功图片展示   ......