第2章 基本概念

第2章 基本概念

  • 1. 学习笔记
  • 2. 书后练习
    • 问题4
    • 问题7
    • 问题8
    • 问题11
    • 编程练习2

1. 学习笔记

  • 三字母词(trigraphs),就是三个连续的字符合起来表示另一个字符。三字母词使C环境可以在某些缺少一些必须字符的字符集上实现。虽然trigraphs曾经在C语言的标准中存在,但它们在现代编程中已经不太常见了,因为大多数现代编译器都支持直接输入特殊字符。trigraphs的使用已经被视为过时和不推荐,因为它们通常会导致代码的可读性下降,增加代码的混乱度。因此,大多数开发者会选择直接使用标准的ASCII字符来表示它们想要的特殊字符。我用的是CLion自带的gcc编译器给我警告Trigraph ignored,证明现在的编译器确实不再使用trigraphs了。
??( 表示 [		??< 表示 {		??= 表示 #
??) 表示 ]		??> 表示 }		??/ 表示 \
??! 表示 |		??' 表示 ^		??- 表示 ~

就比如说如果输出语句是printf( "Delete file (are you really sure??): " );,得到的结果中就会包含字符’]'。

  • \ddd ddd表示1~3个八进制数字。这个转义符表示的字符就是给定的八进制数值所代表的字符。\xddd 与上述类似,只是八进制数换成了十六进制数。
  • CLion中控制台无法结束输入问题,按照https://ask.csdn.net/questions/275371的要求进行设置,输入结束后Ctrl+D结束输入。

2. 书后练习

问题4

\40的值是多少?\100、\x40、\x100、\0123、\x0123的值又分别是多少?

\40 代表八进制数 换成十进制为32 在ASCII表中表示空格
\100 代表八进制数 换成十进制为64 在ASCII表中表示@
\x40 代表十六进制数 换成十进制为64 在ASCII表中表示@
\x100 代表十六进制数 换成十进制为256 超过字符最大存储范围127
\0123 没有这种表示方式
\x0123 没有这种表示方式

问题7

是非题:因为C(除了预处理指令之外)是一种自由形式的语言,唯一规定程序应如何编写的规则就是语法规则,所以程序实际看上去的样子无关紧要。

虽然这种说法是正确的,但是最好还是注意编码规范,便于维护和修改

问题8

下面程序中的循环是否正确?

#include <stdio.h>int
main( void )
{
int		x, y;x = 0;
while( x < 10 ){y = x * x;printf( "%d\t%d\n", x, y );x += 1;
}

这个程序中的循环是否正确?

#include <stdio.h>int
main( void )
{int		x, y;x = 0;while( x < 10 ){y = x * x;printf( "%d\t%d\n", x, y);x += 1;
}
两个程序中的while循环都缺少}

问题11

假定你有一个C程序,它由几个单独的文件组成,而这几个文件又分别包含了其他文件,如下所示:

文件包含文件
main.cstdio.h,table.h
list.clish.h
symbol.csymbol.h
table.ctable.h
table.hsymbol.h,list.h

如果你对list.c做了修改,哪些文件需要重新编译?如果是lish.h或者table.h做了修改,又有哪些文件需要重新编译?

当一个头文件被修改时,所有包含它的文件都必须重新编译
list.c
list.c main.c table.c
main.c table.c

编程练习2

编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确地成对出现。注意:你不必担心注释内部、字符串常量内部和字符常量形式的花括号。

/** 编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确地成对出现。* 注意:你不必担心注释内部、字符串常量内部和字符常量形式的花括号。* */
#include <stdio.h>
#include <stdlib.h>int main( int argc, char *argv[] ) {char ch;int count = 0;while ( ( ch = getchar() ) != EOF ) {if ( ch == '{' ) {count++;}if ( ch == '}' ) {if ( count == 0 ) { // 没有与}匹配的{printf( "error! redundant \'}\' " );}count--;}}if ( count != 0 ) { // 没有与{匹配的}printf( "error! redundant \'}\' " );}return EXIT_SUCCESS;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/444.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pyqt5 QLabel显示网络图片

分享一个QLabel显示网络图片的方。 看网上基本都是使用requests来请求的&#xff0c;这会有个问题如果将请求放入主线程页面会直接卡死&#xff0c;那么肯定pass&#xff0c;如果将请求放入QThread中&#xff0c;网络图片只有10~20个还可以凑合&#xff0c;如果需要加载上百个网…

Vue 3 项目构建与效率提升:vite-plugin-vue-setup-extend 插件应用指南

一、Vue3项目创建 前提是已安装Node.js&#xff08;点击跳转Node官网&#xff09; npm create vuelatest这一指令将会安装并执行 create-vue&#xff0c;它是 Vue 官方的项目脚手架工具。你将会看到一些诸如 TypeScript 和测试支持之类的可选功能提示&#xff1a; ✔ Projec…

2024-03-23青少年软件编程(Python语言)等考(一级)解析

2024-03-23青少年软件编程(Python语言)等级考试试卷(一级)解析一、单选题(共25题,共50分) 1.下列哪个命令,可以将2024转换成2024 呢?( A ) A. str(2024) B. int(2024) C. float(2024) D. bool(2024)将数字转换成字符串用到的是str() 语句。 2.猴子摘了一包桃子,第一…

WPS的bug问题(解决方法->换成office吧):表格数据和透视图数据不一致问题,多次尝试确定该bug

1.软件版本 2.问题描述 我在原始表中对其中一列进行筛选&#xff0c;选择95%以上这个选项值&#xff0c;343个数据。 在筛选了95%以上这个选项之后&#xff0c;我的另一列的值全部是no&#xff0c;343个数据。 然后进行透视图之后&#xff0c;在绘制的图形中发现&#xff0c…

腾讯面试准备-2024.3.25

腾讯面试准备-2024.3.25 腾讯面试准备-2024.3.25自我介绍C11/14/17新特性C11新特性C14新特性C17新特性 struct和class的区别进程状态现代的流媒体通信协议栈流媒体协议详解extern "C"程序从编译到执行的过程进程、线程、协程进程线程协程 如何实现一个信号与槽系统&a…

Linux错误(3)Linux里IP套接字sendmsg出现EPERM错误

Linux错误(3)之Linux里IP套接字sendmsg出现EPERM错误 Author: Once Day Date: 2024年2月21日 漫漫长路才刚刚开始… 全系列文章可参考专栏: Mermaid使用指南_Once_day的博客-CSDN博客 参考文档: c - How to fix EPERM error when trying to use sendto() with Ethernet so…

2024_GAMES101作业环境配置Mac(intel)_VSCode_Clion

目录 VSCodeClionCMakeList.txt VSCode brew install cmake 更换下载源为阿里云下载 opencv&#xff0c;不然会很慢 cd "$(brew --repo)" git remote -v cd "$(brew --repo)" git remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git…

linux中 关于操作Tomcat、Apache、Nginx、Mysql 的操作命令

a. 控制Apache 的操作命令 # 启动Apache命令 service httpd start # 重新 启动Apache命令 service httpd restart # 停止Apache命令 service httpd stop # 启动Apache命令 service httpd statusb. 控制Tomcat的操作命令 # 启动Tomcat命令 sh startup.sh# 停止Tomcat命令 s…

Ubuntu 24.04 LTS (Noble Numbat) 下载

Ubuntu 24.04 LTS (Noble Numbat) 下载 Ubuntu 24.04 LTS 开启 Beta 测试, 正式版即将发布 请访问原文链接&#xff1a;Ubuntu 24.04 LTS (Noble Numbat)&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Ubuntu 24.04 LTS 首个…

如果出现这7个现象,别犹豫,是时候更换你的海外仓系统了

不知不觉&#xff0c;即使是曾经让你觉得很有用的海外仓系统也出现了问题。 曾经看似可以简化海外仓运营的管理系统&#xff0c;现在却难以满足你的需求。你是否注意到你的仓库管理效率低下的情况已经开始蔓延&#xff0c;甚至影响了公司的盈利&#xff1f; 仓库日常的管理工…

力扣(leetcode) 42. 接雨水 (带你逐步思考)

力扣(leetcode) 42. 接雨水 &#xff08;带你逐步思考&#xff09; 链接&#xff1a;https://leetcode.cn/problems/trapping-rain-water/ 难度&#xff1a;hard 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多…

鸿蒙开发踩坑与理解

基于 studio dev3.1,api 9 总结:现在的鸿蒙,感觉就像是用eclipse开发android的时候的android4.0或者4.0以下 持续更新中… 申请next,可能没通过? 没下文了。可能华为还不希望普通开发者进行开发吧。 兼容性问题 鸿蒙4.0,华为mate40E当前版本有黑屏、卡顿问题,客服说a…

【正点原子Linux连载】 第三十三章 Linux CAN驱动实验 摘自【正点原子】ATK-DLRK3568嵌入式Linux驱动开发指南

1&#xff09;实验平台&#xff1a;正点原子ATK-DLRK3568开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id731866264428 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/docs/boards/xiaoxitongban 第三十…

https通信流程

HTTPS通信流程通常包括以下几个关键步骤&#xff1a; 客户端发起请求&#xff1a;客户端&#xff08;通常是Web浏览器&#xff09;向服务器发起HTTPS连接请求&#xff0c;并连接到服务器的443端口&#xff08;HTTPS的默认端口&#xff09;。SSL/TLS握手&#xff1a;在数据传输…

Word目录格式的编辑记录

1、整体风格 鼠标右键&#xff0c;编辑域 选择目录&#xff0c;风格可以根据自己的喜好选择古典、优雅、正式等 2、字段、段落样式调整 更新整个目录 加载出样式侧框&#xff0c;选中某一级目录&#xff0c;侧框会定位到其样式 然后修改对应的样式&#xff0c;比如字体和段…

vscode自动生成返回值的快捷键

vscode中类似idea的altenter功能&#xff0c;可以添加返回值 idea中是Introduce local variable&#xff0c; vscode中按下command.(句号) 然后选extract to local variable或者 Assign statement to new local variable都行&#xff0c; 光标在分号前如图&#xff1a; 光标在…

如何安装和使用Yarn管理JavaScript依赖

在JavaScript开发中&#xff0c;依赖管理是一个至关重要的环节。Yarn是一个强大的包管理工具&#xff0c;旨在提供快速、可靠和安全的依赖解决方案。本文将介绍如何安装和使用Yarn&#xff0c;让你轻松管理JavaScript项目的依赖。 1. 安装Yarn 首先&#xff0c;我们需要在系统…

探索直播+电商系统中台架构:连接消费者与商品的智能纽带

随着直播电商的崛起&#xff0c;电商行业进入了全新的智能时代。直播形式的互动性和即时性为消费者提供了全新的购物体验&#xff0c;而电商平台则为商品的展示、销售和配送提供了强大的支持。在这一背景下&#xff0c;直播电商系统中台架构成为了连接消费者与商品的智能纽带&a…

Java基于微信小程序的电影院订票系统,附源码

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…

C语言简单的数据结构:双向链表的实现

目录&#xff1a; 1.双向链表的结构和初始化1.1双向链表的结构1.2双向链表的初始化 2.双向链表的相关操作2.1双向链表的尾插、打印和头插2.11双向链表的尾插2.12双向链表的打印2.13双向链表的头插 2.2双向链表的尾删和头删2.21双向链表的尾删2.22双向链表的头删 2.3双向链表查找…