大一C语言查缺补漏 12.23

2023-12-23 17:12

本文主要是介绍大一C语言查缺补漏 12.23,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

遗留下来的问题:

3-1 6 

3-2 2

3-2 5

在C语言中,标识符的第一个字符是有什么规范吗?    

在C语言中,标识符的第一个字符必须是以下两种情况之一:

字母(a~z或A~Z)

下划线 (_)


在C语言中,一条语句可分成几行书写


在C语言中,分隔符是什么?

在C语言中,分隔符是一类符号,它们用于分隔或标记代码的不同部分,以帮助编译器理解和解析程序的结构和语义。以下是一些常见的C语言分隔符:

逗号 (,): 用于分隔函数参数、变量声明、枚举成员、初始化列表中的元素等。

空格和制表符: 虽然不是严格意义上的分隔符,但空格和制表符在语法解析中起到分隔作用,如在标识符、关键字和操作符之间。

分号 (;): 用于结束语句,如赋值语句、表达式语句、控制流语句(如 if、for、while)等。

冒号 (:): 用于定义标签语句、结构体成员、枚举成员的值、以及在switch语句中分离条件和case子句。

大括号 ({ and }): 用于包围复合语句(如函数体、循环体、条件语句的真和假分支)。

小括号 (()): 用于函数调用、运算符优先级提升、类型转换、以及在if、for、while等语句中包围条件表达式。

方括号 ([]): 用于定义数组类型、访问数组元素、以及在指针运算中。

双引号 (" "): 用于创建字符串字面量。

反斜杠 (/) 和星号 (*):用于单行和多行注释。

圆点 (.) 和箭头 (->): 用于结构体和联合体成员的访问。


在C语言中,main函数的位置可以任意

注释可以出现在任何位置

C程序经过编译后生成目标文件,其文件名的后缀为obj.

回车和空格都可能在视觉上表现为文本中的空白,但它们在计算机处理和编码中具有不同的含义和用途。


算法是描述特定问题的求解步骤,是指令的有限序列

高效性不是算法所必须具备的特性

算法具备可行性,确定性,有穷性

算法的有穷性是指算法在有穷的时间内终止

算法的时间复杂度与问题规模有关

某算法的时间复杂度是O(n²),表明该算法执行时间与n²成正比


 十进制转换为二进制的做法:

整数是除以2,然后从下往上读

eg: 35为例子:

小数是乘2,用小数*2,取整数,从上往下读

eg:0.65625

因为是小数,因此是0.10101


用8位二进制表示有符号整数时,最高位(左边第一位)被用来表示符号,0表示正数,1表示负数。

对于有符号的8位二进制整数,剩下7位可以用来表示数值。因此,最大正整数是当符号位为0,其余7位全为1时的情况:

01111111

将这个二进制数转换为十进制,我们得到:

0 * 2^7 + 1 * 2^6 + 1 * 2^5 + 1 * 2^4 + 1 * 2^3 + 1 * 2^2 + 1 * 2^1 + 1 * 2^0 = 127

所以,用8位二进制表示有符号整数时,可表示的最大整数是127。

2的七次方是:

2^7 = 128

因为第一位拿去做符号位了,因此只剩下七位


 假如用一个字节表示有符号整数,则-23的补码是 

运算符-12-多学一招原码反码补码_哔哩哔哩_bilibili 

1、因为是八位,所以得到10111后,先补够七位数:0010111

2、取反,1101000

3、加一,取补码,1101001

4、加符号位,11101001


为什么在C语言中,实数不可以参与%运算

在C语言中,%(取余)运算符主要用于整数除法的余数计算。它对于整数类型(如 int、long 等)是定义良好的,但对于实数类型(如 float、double 等)则未定义。

以下是一些原因解释为什么实数不可以参与%运算:

  1. 定义和标准:

    • C语言标准并未规定%运算符如何处理实数类型。标准库函数通常只为整数类型提供了%运算的支持。
  2. 数学意义不明确:

    • 对于整数除法,余数的概念是清晰的,例如10 % 3的结果是1。然而,对于实数除法,余数的定义并不明确。实数除法通常产生一个无限循环小数或一个有限的小数,没有明显的“余数”概念。
  3. 浮点数精度问题:

    • 实数(尤其是浮点数)由于存储和计算精度的限制,可能无法精确表示所有的实数。这可能导致在进行%运算时产生不可预测的结果。
  4. 复杂性增加:

    • 如果要支持实数的%运算,需要引入复杂的算法来处理实数除法和余数的概念,这会增加编译器和标准库的复杂性。

因此,在C语言中,如果尝试对实数使用%运算符,编译器可能会发出警告或错误,并且结果将是不确定的。如果需要对实数进行类似的运算,可以先将它们转换为合适的整数类型,然后再进行%运算,但需要注意舍入误差和数据溢出的问题。


0是假,其余的所有整数都可以作为逻辑中的真


在C语言中,‘’和“”有什么区别,字符串和字符

在C语言中,单引号 `'` 和双引号 `"` 用于定义不同的数据类型:

1. 单引号 `'`:
   - 单引号用于定义字符(char)常量。字符常量表示单个字符,如 `'A'`、`'3'` 或 `','`。字符常量占据一个字节的存储空间,并且其值是对应的ASCII码。

2. 双引号 `"`:
   - 双引号用于定义字符串(string)字面量。字符串是一个字符序列,由零个或多个字符组成,如 `"Hello"`、`"123"` 或 `",."`。字符串字面量在内存中是以字符数组的形式存储的,并且在字符串的末尾会自动添加一个空字符(`\0` 或 `NULL`),用来标记字符串的结束。因此,实际上字符串占用了额外的一个字节来存储这个结束符。

总结起来,主要区别如下:

- 字符(char)使用单引号 `'` 定义,表示单个字符。
- 字符串(string)使用双引号 `"` 定义,表示一个字符序列,并以空字符 `\0` 结束。

在使用 printf() 函数输出时,字符和字符串的格式说明符也不同:

- 对于字符,使用 `%c` 格式说明符,如 `printf("%c", 'A');`
- 对于字符串,使用 `%s` 格式说明符,如 `printf("%s", "Hello");`

注意,虽然C语言中没有内置的字符串数据类型,但通常通过字符数组或指向字符的指针来处理和操作字符串。


在C语言中,各种类型的占用字节数

C语言中各种类型的占用字节数可能会因编译器和平台的不同而有所不同,但以下是一些常见的数据类型及其在多数现代系统(如32位或64位Intel/AMD架构)上的默认字节大小:

- `char`:通常占用1个字节。
- `signed char` 和 `unsigned char`:通常也占用1个字节。
- `short`:通常占用2个字节。
- `unsigned short`:同样通常占用2个字节。
- `int`:通常占用4个字节。
- `unsigned int`:也通常占用4个字节。
- `long`:在某些旧系统上可能占用4个字节,但在许多现代系统上占用8个字节以保持与`int`的区别。
- `unsigned long`:与`long`相同,通常占用4或8个字节。
- `long long`:通常占用8个字节。
- `unsigned long long`:也通常占用8个字节。
- `float`:通常占用4个字节。
- `double`:通常占用8个字节。
- `long double`:可能占用10或16个字节,具体取决于编译器和平台。


在C语言中,以下是一些不合法的整型常量:

1. 不正确的进制表示:
   - 八进制常量必须以0开头,且后续字符只能是0-7之间的数字。例如,`08`、`09` 或 `038` 都是非法的八进制常量。
   - 十六进制常量必须以`0x`或`0X`开头,后续字符可以是0-9和A-F(或a-f)之间的数字。例如,`0xG`、`0x1H` 或 `0x1g` 都是非法的十六进制常量。

2. 超出范围的数值:
   - 整型常量的值不能超出其类型的可表示范围。对于不同类型的整数(如`char`、`short`、`int`、`long`等),其范围有所不同。如果一个常量的值超出了对应类型的最大或最小值,那么这个常量就是非法的。

3. 非法的前缀或后缀:
   - 整型常量不能包含非数字和非指定进制前缀(如八进制的0或十六进制的0x)的其他字符。例如,`123abc` 或 `0x12fg` 都是非法的。

4. 科学记数法:
   - C语言的整型常量不支持科学记数法。例如,`1.2e3` 或 `5E-2` 作为整型常量是非法的。

5. 标识符形式:
   - 如果一个常量看起来像一个标识符(即以字母或下划线开头,后面跟着字母、数字或下划线的组合),但没有正确的引号或转义字符包围,那么它将被视为一个标识符而不是整型常量。例如,`myNumber123` 作为整型常量是非法的。

6. 特殊字符:
   - 包含特殊字符(除了`\`用于转义序列外)的常量是非法的。例如,`12\*3` 或 `45#6` 都是非法的。

请注意,不同的编译器可能会有不同的错误检查严格程度和警告信息。在实际编程中,应尽量避免使用这些不合法的整型常量,以确保程序的正确性和可读性。

-01是合法的整形常量吗

在C语言中,-01是一个合法的整型常量。这里 - 是负号,表示这是一个负数,而 01 可以被解释为八进制数,因为它的第一位是 0。在八进制系统中,01 等于十进制的 1。因此,-01 表示一个负的八进制数,对应到十进制就是 -1。

这篇关于大一C语言查缺补漏 12.23的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/528780

相关文章

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

如何确定 Go 语言中 HTTP 连接池的最佳参数?

确定 Go 语言中 HTTP 连接池的最佳参数可以通过以下几种方式: 一、分析应用场景和需求 并发请求量: 确定应用程序在特定时间段内可能同时发起的 HTTP 请求数量。如果并发请求量很高,需要设置较大的连接池参数以满足需求。例如,对于一个高并发的 Web 服务,可能同时有数百个请求在处理,此时需要较大的连接池大小。可以通过压力测试工具模拟高并发场景,观察系统在不同并发请求下的性能表现,从而

C语言:柔性数组

数组定义 柔性数组 err int arr[0] = {0}; // ERROR 柔性数组 // 常见struct Test{int len;char arr[1024];} // 柔性数组struct Test{int len;char arr[0];}struct Test *t;t = malloc(sizeof(Test) + 11);strcpy(t->arr,

C语言指针入门 《C语言非常道》

C语言指针入门 《C语言非常道》 作为一个程序员,我接触 C 语言有十年了。有的朋友让我推荐 C 语言的参考书,我不敢乱推荐,尤其是国内作者写的书,往往七拼八凑,漏洞百出。 但是,李忠老师的《C语言非常道》值得一读。对了,李老师有个官网,网址是: 李忠老师官网 最棒的是,有配套的教学视频,可以试看。 试看点这里 接下来言归正传,讲解指针。以下内容很多都参考了李忠老师的《C语言非

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou

C 语言的基本数据类型

C 语言的基本数据类型 注:本文面向 C 语言初学者,如果你是熟手,那就不用看了。 有人问我,char、short、int、long、float、double 等这些关键字到底是什么意思,如果说他们是数据类型的话,那么为啥有这么多数据类型呢? 如果写了一句: int a; 那么执行的时候在内存中会有什么变化呢? 橡皮泥大家都玩过吧,一般你买橡皮泥的时候,店家会赠送一些模板。 上

linux中使用rust语言在不同进程之间通信

第一种:使用mmap映射相同文件 fn main() {let pid = std::process::id();println!(